だから私も似たような状況です。特定のページで多数の div をアニメーション化しようとしています。それらはソースでレンダリングされていますが、それら (およびその子要素) は最新の Chrome では完全に不透明です。私は(私の場合)問題を突き止めたと信じています。私はSassとBourbon mixin libをRailsアプリでThoughtbotの人たちから使用していますが、状況は似ています。解決策はWebkit仕様のいくつかの場所で実際に概説されているため、これが本当にバグと見なされるかどうかはわかりません-実際、現状では、これを正しく取得したのはChromeだけであり、彼らはこれをサポートし始めたばかりです(サファリはサポートしていませんが?)。とにかく、両方のアニメーション塗りつぶしモードで変換をアニメーション化しようとすると明らかです。これが古いバージョンの Chromium と Safari で動作することを確認しました。これは、最新の Chrome アップデート以降にアプリケーションで発生した最近の問題です。とにかく、私のsassコードはこのようなものです
.animation-tilefill {
@include animation(tilefill 0.25s $ease-out-sine);
@include animation-fill-mode(both);
}
@mixin tilefill {
0% {
opacity: 0;
// @include transform(scale(0.0)); // <= There's our issue
// @include transform-origin(left top);
}
80% {
// @include transform(scale(1));
}
100% {
opacity: 1;
}
}
@-webkit-keyframes tilefill { @include tilefill; }
@-moz-keyframes tilefill { @include tilefill; }
@keyframes tilefill { @include tilefill; }
これが何をしているのかを知るには、バーボンとサスを少し知っている必要がありますが、この回答の必要性のために、要素の不透明度と同様にスケール変換をアニメーション化すると言えば十分です。このコードの問題は、実際には変換自体とは何の関係もありませんが、0.0 VALUE - ゼロ値がキーです。ここを見ると、 Safari CSS リファレンスを見ると、animation-fill-modeの両方の説明に次のように表示されます。
「アニメーションの初期キーフレームは、アニメーション スタイルが要素に適用されるとすぐに適用され、アニメーションの最後のキーフレームは、アニメーションの最後の反復が完了した後も引き続き適用されます。初期キーフレームは、-webkit の値がゼロ以外のアニメーションにのみ影響します。 -アニメーション遅延."
重要な部分は、最初のキーフレームが -webkit-animation-delay のゼロ以外の値を持つアニメーションにのみ影響します。
0% {
opacity: 0;
@include transform(scale(0.01)); // <= There's our issue
@include transform-origin(left top);
}
それが変更されたら、問題は解決しました - これが役に立てば幸いです。一部の人々がこれのサポートについてどう思うか知りたいのですが:)