【发布时间】:2014-01-15 14:23:46
【问题描述】:
我用关键帧为块设置动画,然后在 javascript 中触发反向动画,如下所示:
$('#block').removeClass('animate1').addClass('animate2');
animate1 和 animate2 对应于调用动画的两个 CSS 类(用于演示,仅在 webkit 中),#block 是一个简单的div:
CSS
.animate1 {
-webkit-animation: shift 1s ease-in-out forwards;
}
.animate2 {
-webkit-animation: shift 1s ease-in-out backwards reverse;
}
@-webkit-keyframes shift {
from {
left: 0px;
}
to {
left: 200px;
}
}
HTML
<div id="block" class="animate2"></div>
它根本不起作用。有关演示 (Chrome 30),请参阅 this fiddle。
事实
如果我反过来触发动画,我的意思是先反转的,然后是正常的,它工作正常(demo):
$('#block').removeClass('animate2').addClass('animate1'); //Works.
如果我删除当前类并添加具有通过单击按钮触发的独立功能的下一个类,它也可以工作。
有人可以帮我理解这种奇怪的行为吗?我被困住了!
编辑
对于未来的访问者,我不再寻找解决方法,只是想了解这里发生了什么:
- 浏览器要求的“重置时间”是多少?
- 为什么它以某种方式起作用,而以另一种方式起作用?
- 为什么在内部闭包中触发动画有效?
如果合适,我会更改接受的答案。
【问题讨论】:
标签: javascript jquery html css css-animations