【发布时间】:2015-08-31 12:28:12
【问题描述】:
我正在尝试捕捉元素动画中的特定时刻。含义 - 我希望动画在 X 点开始和停止(假设在 100 秒动画的第 5 秒开始和停止)。
这是我的尝试 JSFiddle
@-webkit-keyframes background {
from { background: yellow; }
100% {
background: blue;
}
}
div {
-webkit-animation-name: background;
-webkit-animation-duration: 100s;
-webkit-animation-fill-mode: forwards;
-webkit-animation-delay: -40s;
-webkit-animation-play-state: paused;
}
这似乎在 Chrome 和 Firefox 中运行良好,但在 Safari 和 IE 中似乎不起作用(不可能,对吧?!) 注意:我保留前缀是为了专门在 Safari 上测试它。
与 Chrome 不同,在 Safari 中动画似乎永远不会开始,而是停留在初始步骤。
这是一个已知问题吗?是否有解决方法或其他方法来实现这一点?
更新/澄清
我需要的是能够捕捉动画的特定帧。在 Chrome 中打开我的小提琴并在我的小提琴中播放动画延迟属性(确保它保持负数)。您将看到的是您能够捕捉到动画的 1 个特定帧。这正是我需要的。我的问题是这在 Safari 中不起作用。
【问题讨论】:
-
动画延迟应该是大于0的数字
-
不正确。 developer.mozilla.org/en-US/docs/Web/CSS/animation-delay 为动画延迟指定负值会导致动画立即开始执行。但是,它似乎已经在其周期的中途开始执行。例如,如果您将 -1s 指定为动画延迟时间,则动画将立即开始,但会在动画序列的 1 秒后开始。
-
在规范中看起来模棱两可。如果动画被暂停,Safari 不会启动动画,即使是负延迟也是如此。如果您允许它启动,然后在延迟之后,以编程方式设置
style.webkitAnimationPlayState('paused')它“有效”,但我得到了奇怪的结果,超时时间很短 - 似乎跳到动画的结尾,这对我来说毫无意义......无论如何,这里有 100 毫秒的延迟 jsfiddle.net/Lb06rh1L -
感谢您的回答。我仍然更喜欢仅使用 CSS 的解决方案,因为需要为页面上的多个对象完成此过程。
-
如果有什么我错过了,我想知道更多关于我的答案。
标签: css animation css-animations