Javascript 测量CSS3完成动画的时间
我试图将CSS3动画与Javascript动画进行比较,并试图测量完成CSS3动画所需的时间。使用Chrome的Timeline工具,实际时间总是比我在CSS3中指定的时间长。是否有一种方法可以自动获取经过的时间,而不是手动使用时间线工具?Edit 简言之 您必须使用AFAIK的时间戳。 根据您试图观察的内容,您可以看到Javascript触发CSS动画所需的实时时间,也可以看到CSS动画所经过的实时时间 详细地 正如我们所看到的,Javascript 测量CSS3完成动画的时间,javascript,css,animation,Javascript,Css,Animation,我试图将CSS3动画与Javascript动画进行比较,并试图测量完成CSS3动画所需的时间。使用Chrome的Timeline工具,实际时间总是比我在CSS3中指定的时间长。是否有一种方法可以自动获取经过的时间,而不是手动使用时间线工具?Edit 简言之 您必须使用AFAIK的时间戳。 根据您试图观察的内容,您可以看到Javascript触发CSS动画所需的实时时间,也可以看到CSS动画所经过的实时时间 详细地 正如我们所看到的,elapsedTime不足以获得经过的实时时间 使用时间戳(Da
elapsedTime
不足以获得经过的实时时间
使用时间戳(Date.now()
和event.timeStamp
),我确定了动画的实际运行时间&动画触发和animationEnd
事件之间的运行时间:
- 在Javascript中添加动画类时保存当前时间戳
- 将时间戳保存在
中animationStart
- 将时间戳保存在
中animationEnd
- 比较这些时间戳
旧答案 有趣的问题 您可以使用CSS3结束动画事件的侦听器,名为
animationend
(供应商前缀适用):
然后使用AnimationEvent
的属性之一,elapsedTime
:
AnimationEvent.elapsedTime(只读)
浮点数是指
触发此事件时动画已运行的时间(秒),不包括动画暂停的任何时间
对于animationstart
事件,elapsedTime
为0.0
,除非出现负值
动画延迟的值,在这种情况下,事件将以
elapsedTime
包含(-1*延迟)
参考资料:
- ,
- ,
- 和
- 当前供应商前缀:
animationend
webkitAnimationEnd
MSAnimationEnd
oAnimationEnd
好问题。不知道任何方法。在javascript中,通过记录到控制台所经过的时间非常容易,但是对于CSS3,我所知道的没有输出。您是否尝试过使用计时器和animationEnd
事件?谢谢您的回答。我尝试过这个,但它总是为动画属性生成时间。我尝试用动画:mykeyframes 2s
设置10000个div的动画。动画大约花了10秒,但AnimationEvent.elapsedTime说正好是2秒:/@Linksku这太容易了……你能给我一把你的测试小提琴吗?我也想做一些实验!干得好!延迟是为了您可以使用Chrome的时间线工具手动测量它。@Linksku做了我的测试,请参阅我编辑的答案:时间戳是唯一确定的方法。
console.log('Time elapsed between animation trigger and AnimationEnd : ' + (animationEndTimestamp - animationTriggeredTimestamp) + 'ms');
console.log('Time Animation took really ' + (animationEndTimestamp - animationStartTimestamp) + 'ms');
yourElement.addEventListener("animationend", animationListener, false);