动画:currentTime 属性

基线 广泛可用

此功能已经成熟,并在许多设备和浏览器版本上运行良好。它自 2020 年 3 月.

报告反馈

Animation.currentTimeWeb 动画 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