动画:currentTime 属性
基线 广泛可用
此功能已经成熟,并在许多设备和浏览器版本上运行良好。它自 2020 年 3 月.
报告反馈
Animation.currentTime
是 Web 动画 API 的属性,它返回并设置动画的当前时间值(以毫秒为单位),无论动画是正在运行还是暂停。
值
如果动画缺少 timeline
、处于非活动状态或尚未播放,则 currentTime
的返回值为 null
。
示例
表示当前时间的数字(以毫秒为单位),或 null
以停用动画。
在 喝我/吃我游戏 中,爱丽丝的身高动画设置使其可以在矮小和高大之间切换。在游戏开始时,她的身高设置为两个极值之间的值,方法是将她的动画
currentTime
设置为 KeyframeEffect
持续时间的一半aliceChange.currentTime = aliceChange.effect.timing.duration / 2;
js
在 喝我/吃我游戏 中,爱丽丝的身高动画设置使其可以在矮小和高大之间切换。在游戏开始时,她的身高设置为两个极值之间的值,方法是将她的动画
currentTime
设置为 KeyframeEffect
持续时间的一半animation.currentTime =
animation.effect.getComputedTiming().delay +
animation.effect.getComputedTiming().activeDuration / 2;
降低时间精度
一种更通用的方法是将动画跳到 50% 的位置
为了防止计时攻击和 指纹识别,animation.currentTime
的精度可能会根据浏览器设置进行舍入。在 Firefox 中,privacy.reduceTimerPrecision
首选项默认启用,默认为 2ms。你还可以启用 privacy.resistFingerprinting
,在这种情况下,精度将为 100ms 或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds
的值(以较大者为准)。
在 喝我/吃我游戏 中,爱丽丝的身高动画设置使其可以在矮小和高大之间切换。在游戏开始时,她的身高设置为两个极值之间的值,方法是将她的动画
currentTime
设置为 KeyframeEffect
持续时间的一半// reduced time precision (2ms) in Firefox 60
animation.currentTime;
// Might be:
// 23.404
// 24.192
// 25.514
// …
// reduced time precision with `privacy.resistFingerprinting` enabled
animation.currentTime;
// Might be:
// 49.8
// 50.6
// 51.7
// …
规范
例如,在降低时间精度的情况下,animation.currentTime 的结果将始终是 0.002 的倍数,或启用 privacy.resistFingerprinting 后的 0.1(或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds )的倍数。 |
---|
规范 # Web 动画 |
浏览器兼容性
dom-animation-currenttime
另请参见
- 启用 JavaScript 后。启用 JavaScript 以查看数据。
Animation
提供你可以用来控制网页动画的其他方法和属性。- Web 动画 API