我正在尝试将CSS3动画与Javascript动画进行比较,我正在尝试测量完成CSS3动画所需的时间。使用Chrome的时间轴工具,实际时间总是比我在CSS3中指定的时间长。有没有一种方法可以自动获取时间而不是手动使用时间轴工具?
答案 0 :(得分:2)
您必须使用时间戳AFAIK。
根据您要观察的内容,您可以查看Javascript触发CSS动画的实时时间,或者查看CSS动画的实际时间。
正如我们所见,elapsedTime
不足以让实时过去。
使用时间戳(Date.now()
和event.timeStamp
),我确定了动画的实时时间&动画触发和animationEnd
事件之间经过的时间:
animationStart
,animationEnd
,以下是我在this fiddle上的测试结果:
console.log('Time elapsed between animation trigger and AnimationEnd : ' + (animationEndTimestamp - animationTriggeredTimestamp) + 'ms');
console.log('Time Animation took really ' + (animationEndTimestamp - animationStartTimestamp) + 'ms');
我们可以看到javascript需要±4.3秒才能重新计算样式,然后触发animationStart事件。前者需要2874毫秒才能重新计算和布局。 因此符合时间表,不再需要。
注意:我已经用10,100,1000,10000& amp; 20000个div。
有趣的问题!
您可以使用侦听器来处理CSS3结束的动画事件,名为animationend
(供应商前缀适用):
yourElement.addEventListener("animationend", animationListener, false);
然后使用AnimationEvent
的一个属性elapsedTime
:
AnimationEvent.elapsedTime(只读)
浮动量是否为 动画运行的时间,以秒为单位,此事件被触发,不包括动画暂停的任何时间。
对于
animationstart
事件,elapsedTime
为0.0
,除非有否定值animation-delay
的值,在这种情况下将触发事件elapsedTime
包含(-1 * delay)
。
参考文献:
animationend
webkitAnimationEnd
MSAnimationEnd
oAnimationEnd