【发布时间】:2016-04-15 19:26:58
【问题描述】:
注意,我使用的是最新的 Safari (9.0.2) 和最新的 Chrome。我知道从 9.0.x 开始,safari 会为您处理更多的动画前缀。耶!另外,我已经提交了一份错误报告。
在最简单的情况下,我尝试使用 JavaScript 设置 animation-delay only 用于 CSS 关键帧动画。代码如下:
el.style.setProperty("-webkit-animation-delay", "5s", "important");
现在在 Chrome 中,这会更新 animation-delay 属性,正如我所期望的那样仅。 animation 属性保持不变,这就是我想要的:
然而,在 Safari 中,这会覆盖 animation 属性,这对我来说是不行的:
显然这甚至不是一个有效的动画值。我基本上希望它在 Safari 中工作而不覆盖 animation 属性。有没有其他方法可以实现这一点?
CSS / HTML 房间的想法是将类添加到 CSS 中,然后只需使用 classList.toggle 切换它,但是此动画延迟属性将是动态的并反复更改。这些值事先是未知的。
JSFiddle:https://jsfiddle.net/swakq13a/3/
【问题讨论】:
-
你有没有试过不使用
setProperty,而是直接通过el.style.webkitAnimationDelay = "5s"赋值? (必要时用适当的供应商前缀替换。) -
是的,使用实际名称而不是
setProperty时似乎没有更新。 -
您需要在属性名称中包含适当的供应商前缀。
box.style.webkitAnimationDelay = "200s";jsfiddle.net/swakq13a/6 -
看起来像一个特定于 Safari 的错误。 // 是否需要预先设置未知的动画延迟值,还是设置很多不同的值?否则,简单的解决方法可能是不通过 JS 设置此值,而仅通过 JS 更改/添加到元素的类,然后让您的样式表根据类以不同的延迟格式化元素。
-
Bug-wise,我找不到任何描述类似问题的东西。我在考虑类似你的建议...
animation.duration + "s " + animation.timingFunction + " " + animation.delay + "s " + animation.iterationCount + " " + animation.direction + " " + animation.fillMode + " " + animation.playState + " " + animation.name;.
标签: javascript css css-animations