CSS动画延迟的原因
Why is CSS animation delayed?
我试图在一个长时间运行的JS函数中设置一个"更新"图像旋转。我正在使用JQuery添加一个类("spinning"),我在CSS中定义了JQuery来触发动画——当它自己运行时,效果很好。然而,当我在addClass后面进行长时间运行的JS函数调用时,动画中会有延迟,即使该类是即时应用的。
有人能告诉我哪里出了问题吗;如何在长时间运行函数之前启动动画?
这个JSFiddle说明了这个问题:http://jsfiddle.net/gLas4k23/2/-旋转在"doSomething"完成之前开始,但在明显的延迟之后,如果不存在对doSometing的调用,则该延迟将不存在。
html:
<div id='updateIcon' class='update'></div>
css:
.update {
width: 40px;
height: 40px;
background: url("http://s24.postimg.org/4psxulnkh/update_light.png") no-repeat;
background-size: 40px;
cursor: pointer;
}
.update.spinning {
-webkit-animation: spinner 1s infinite linear;
}
@-webkit-keyframes spinner {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
JS:
$('#updateIcon').on('click', function(e){
console.log('i have been clicked');
$('#updateIcon').addClass('spinning');
doSomething();
})
function doSomething(){
console.log('doing something')
for(var i=0;i<20000;i++){
console.log('waiting');
}
}
这是因为for
循环必须在动画开始之前完成。移除该循环后,动画将立即开始。
看看:http://jsfiddle.net/gLas4k23/4/
我认为你必须使用setTimeout()
函数才能得到你想要的结果。
我看到了Fiddle,问题出在您的console.log
上。它拖延了进程。我已经更新了小提琴。尝试现在
相关文章:
- 更多延迟动画
- 关键帧之间的css3动画延迟
- 如何在一个元素动画之后延迟
- 如何通过justinaguilar.com设置动画延迟?[解决]
- jQuery动画的持续时间就像一个延迟
- 如何将角度动画延迟到模型绑定之后
- 在Raphael JS中,不透明度:0和开始动画到不透明度:1之间的延迟
- 如何停止基于jQuery延迟定时器的动画
- 谷歌地图api v3下降标记动画与延迟
- jQuery延迟/暂停动画
- CSS动画延迟的原因
- 香草JS:延迟点击事件以添加动画
- jQuery 延迟不算作动画
- JavaScript 中的延迟动画
- 如何延迟动画
- Javascript - 鼠标离开时延迟动画
- 如何在 jQuery 中创建链式延迟动画序列
- 创建不同的延迟动画在第一次和第二次点击+链接延迟
- 试图在启动时延迟动画
- 延迟动画,直到其他动画完成(滑动内容(