前言
让我们假设 adiv
是动画 from opacity:0;
toopacity: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 */
或者是否有任何已知的 polyfill特定于animation-fill-mode
?
另外,如果我使用速记语法会发生什么
animation:myAnimation 2s 1s forwards;
animation
在支持但不支持的浏览器上animation-fill-mode
?
非常感谢!