Leo*_*ang 5 javascript css animation css3
我正在尝试将CSS3动画与Javascript动画进行比较,我正在尝试测量完成CSS3动画所需的时间.使用Chrome的时间轴工具,实际时间总是比我在CSS3中指定的时间长.是否有方法自动获取时间而不是手动使用时间轴工具?
你必须使用时间戳 AFAIK。
\n\n根据您想要观察的内容,您可以查看 Javascript 触发 CSS 动画所需的实时时间,也可以查看 CSS 动画的实际运行时间。
\n\n正如我们所看到的,elapsedTime
不足以获取实际经过的时间。
使用时间戳(Date.now()
和event.timeStamp
),我确定了动画的实际经过时间以及动画触发和animationEnd
事件之间经过的时间:
animationStart
,animationEnd
,这是我对此小提琴的测试结果:
\n\nconsole.log(\'Time elapsed between animation trigger and AnimationEnd : \' + (animationEndTimestamp - animationTriggeredTimestamp) + \'ms\');\nconsole.log(\'Time Animation took really \' + (animationEndTimestamp - animationStartTimestamp) + \'ms\');\n
Run Code Online (Sandbox Code Playgroud)\n\n我们可以看到,javascript花了\xc2\xb1 4.3秒重新计算样式,然后触发animationStart事件。前者重新计算和布局正好需要 2874ms。因此,与时间线相符,不再需要它了。
\n\n注意:我已使用 10、100、1000、10000 和 20000 个 div 运行此测试。
\n\n有趣的问题!
\n\n您可以使用 CSS3 结束动画事件的侦听器,称为animationend
(vendor-prefixes apply) :
yourElement.addEventListener("animationend", animationListener, false);\n
Run Code Online (Sandbox Code Playgroud)\n\n然后使用AnimationEvent
\ 的属性之一elapsedTime
:
\n\n\nAnimationEvent.elapsedTime(只读)
\n\n是一个浮点数,给出当此事件触发时动画运行的时间(以秒为单位),不包括动画暂停的任何时间。
\n\n对于
\nanimationstart
事件,elapsedTime
除非0.0
存在负值,在这种情况下,将使用包含 的animation-delay
\n 来触发该事件 。elapsedTime
(-1 * delay)
参考 :
\n\nanimationend
webkitAnimationEnd
MSAnimationEnd
oAnimationEnd