【发布时间】:2018-03-21 23:35:08
【问题描述】:
我有一个延迟的 CSS 动画,我在延迟期间暂停了它。 它在 Firefox 和 Chrome 上按预期工作,“你好”不动。 但是在 Safari 上,动画会跳到最后一帧。 请问为什么以及如何解决?
function test() {
var timeout = 1000;
setTimeout(function() {
document.getElementById('animation').style.animationPlayState = 'paused';
}, timeout);
}
document.addEventListener("DOMContentLoaded", test);
#animation {
animation: test 2s linear 2s;
}
@keyframes test {
to {
transform: translateY(100px);
}
}
<div id="animation">
Hello (this text should not move)
</div>
如果我删除 2 秒延迟,将持续时间设置为 4 秒,并使用 transform:none 添加关键帧,我可以使这个简单的示例工作。然而,我的真实案例有多个与延迟同步的动画。
【问题讨论】:
-
无法重现。在 Safari 11.0 (macOS) 中,它按预期工作。
-
@Styx 我刚刚在 Safari 11.0 中进行了测试,但错误仍然存在。 “你好”会跳到底部而不是被暂停。
-
试试这个jsfiddle,请:jsfiddle.net/iStyx/2uqf1p9y
-
超时时间必须设置为 1000 才能重现错误。
-
我玩过这个东西很多,但似乎没有解决方法:(
标签: javascript css animation safari webkit