状況
- DOM 要素の初期状態は
opacity: 0
. - アニメーション クラスを DOM 要素に追加しています。アニメーションは別として、このクラスの初期状態は
opacity: 1
です。
.animation { opacity: 1; animation(fadeIn 1s 200ms ease-in-out); }
- アニメーションは 200 ミリ秒の遅延で実行され、初期状態は
opacity: 0
です。
@keyframes fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } }
問題
アニメーション クラスが DOM 要素に追加されると、要素は 200 ミリ秒の間即座に表示され、その後、DOM 要素を点滅させて非表示の状態に戻すことで、フェードイン アニメーションが開始されます。これとは逆に、アニメーション (キーフレーム) 属性opacity:0
がアニメーション クラス属性を上書きしopacity:1
、その結果、フェードイン アニメーションが滑らかになるようにしたいと考えています。
このアプローチの理由は、古いブラウザーのサポートです。
編集:実際のプロジェクトコードを追加しました(明確にするため)
@for $i from 1 through 3 { &.showAddonColumn#{$i} { td:nth-child( #{$i + 1} ) { display: table-cell; } @for $j from 1 through 15 { tr:nth-child( #{$j} ) { td { .checkable { @include transform-origin(50%, 0%); @include animation(leafShow 1s #{$j*100ms} cubic-bezier(.37,0,.16,.94) 1); @include animation-fill-mode(forwards); } } } } } }