序文
aがtodiv
からアニメーション化され、アニメーションが終了した後もi を保持したいとします。opacity:0;
opacity:1;
opacity:1;
それanimation-fill-mode:forwards;
がそうです。
@keyframes myAnimation {
from { opacity:0; }
to { opacity:1; }
}
div {
opacity:0;
animation-name:myAnimation;
animation-delay:1s;
animation-duration:2s;
animation-fill-mode:forwards;
}
<div>just a test</div>
- 注 1: 簡単にするために、ここではベンダー プレフィックスを含めませんでした
- 注2:これは一例です。「jQueryのfadeIn関数を使うだけ」などと回答しないでください。
知っておくべきこと
この回答animation-fill-mode
では、Chrome 16 以降、Safari 4 以降、Firefox 5 以降でサポートされていることを読みました。
ただし、 Chrome 1+ と Operaでもanimation
単独でサポートされています。そのため、 Modernizrを使用した一般的なテストでfill-mode
は、サポートされていない場合でも肯定的な結果が返されることがあります。
ターゲットにするためanimation-fill-mode
に、Modernizr に新しいテストを追加しました。
Modernizr.addTest('animation-fill-mode',function(){
return Modernizr.testAllProps('animationFillMode');
});
これ.no-animation-fill-mode
で、CSS とModernizr.animationFillMode
JavaScript のクラスが作成されました。
また、 CSS3 アニメーション仕様から次のことを読みました。
ドキュメント スタイル シートで指定されたアニメーションは、ドキュメントの読み込み時に開始されます。
最後に、質問
アニメーションが終了する正確な秒数で単純な jQuery 関数を実行しても問題ありませんか
$(document).ready(function(){
if(!Modernizr.animation){
$('div').delay(1000).fadeIn(2000);
}else if(!Modernizr.animationFillMode){
$('div').delay(3000).show();
}
});
そしてCSSで:
.no-animation-fill-mode div {
animation-iteration-count:1;
}
/* or just animation:myAnimation 2s 1s 1; for everyone */
または、特定の既知のポリフィルはありますanimation-fill-mode
か?
また、短縮構文を使用するとどうなりますか
animation:myAnimation 2s 1s forwards;
animation
をサポートしているがサポートしていないブラウザではanimation-fill-mode
?
どうもありがとう!