javascript - 在 Safari 中设置动画延迟会覆盖动画属性,但在 Chrome 中不会

标签 javascript css css-animations

Note, I am using the latest Safari (9.0.2) and the latest Chrome. I know that as of 9.0.x safari handles a lot more of the animation prefixes for you. Yay! Also, I've submitted a bug report.

在最简单的情况下,我正在尝试使用 JavaScript 为 CSS 关键帧动画设置 animation-delay 。代码如下:

el.style.setProperty("-webkit-animation-delay", "5s", "important");

现在在 Chrome 中,这会更新 animation-delay 属性,正如我所期望的那样animation 属性保持不变,这是我想要的:

Chrome Console Screenshot

然而,在 Safari 中,这会覆盖 animation 属性,这对我来说是不合适的:

Safari Console Screenshot

显然这甚至不是一个有效的动画值。我基本上希望它在 Safari 中工作而不覆盖 animation 属性。是否有其他方法可以实现此目的?

CSS/HTML 室的想法是将类添加到 CSS,然后只需使用 classList.toggle 切换它,但是此动画延迟属性将动态并反复更改.这些值事先是未知的

JSFiddle:https://jsfiddle.net/swakq13a/3/

最佳答案

编辑 - 我刚刚看到这个问题已经存在一年了。这个答案应该可以帮助任何谷歌搜索这个确切问题的人,如果这对你来说太晚了一年,我们深表歉意,Jimbo。

我能够通过使用速记重置整个动画属性来解决 Safari 中的问题(同时保持所有功能)。这可能不是 100% 理想,但它确实绕过了 Safari 错误,而没有产生我能看到的任何动画问题。

这是一个 JS Fiddle 示例,它显示了一个变量值:https://jsfiddle.net/andrewborem/5rb5ybe3/1/

注意 - 我删除了 setProperty 上的“重要”参数,因为它不再是必需的。此外,我从 CSS 中删除了 animation-delay 属性。

setTimeout(function() {
    var box = document.querySelector('#box');
    var variableDelay = "5s";
    box.style.setProperty("animation", "cycle-wide 2s " + variableDelay + " ease-in-out infinite both");
    alert(box.style.animation);
}, 1000);

关于javascript - 在 Safari 中设置动画延迟会覆盖动画属性,但在 Chrome 中不会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34722355/

相关文章:

javascript - 为什么程序返回未定义?

javascript:使用赋值语句,其中条件表达式通常是

javascript - 返回表单提交时列表项的随机顺序

html - 网格模板区域不适用于长文本

CSS动画,如何减慢迭代速度?

CSS 3d变换透视网格

javascript - 如何通过扩展程序获取(不设置)Chrome 中选定文本的背景颜色?

HTML Div 不一致地使用 CSS 文件

jquery - jquery Parallax 的跨浏览器滚动问题

html - 将 2 个 span 对齐,以便在 Firefox 上发生动画