Animation: currentTime 屬性

Baseline 已廣泛支援

此功能已經成熟,並可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 3 月⁩起,它已在各瀏覽器中推出。

Web Animations APIAnimation.currentTime 屬性用於獲取和設定動畫的當前時間值(以毫秒為單位),無論動畫正在執行還是已暫停。

如果動畫缺少 timeline,處於非活動狀態,或者尚未播放過,則 currentTime 的返回值將是 null

一個表示當前時間的數字(以毫秒為單位),或者 null 以停用動畫。

示例

Drink Me/Eat Me 遊戲 中,愛麗絲的身高被動畫化,可以從大變小或從小變大。遊戲開始時,透過將動畫的 currentTime 設定為其 KeyframeEffect 持續時間的一半,來將她的身高設定在兩個極端之間。

js
aliceChange.currentTime = aliceChange.effect.timing.duration / 2;

更通用的跳轉到動畫 50% 標記的方法是:

js
animation.currentTime =
  animation.effect.getComputedTiming().delay +
  animation.effect.getComputedTiming().activeDuration / 2;

時間精度降低

為了防止計時攻擊和 指紋識別animation.currentTime 的精度可能會根據瀏覽器設定進行舍入。在 Firefox 中,privacy.reduceTimerPrecision 首選項預設啟用,並將精度限制為 2ms。你也可以啟用 privacy.resistFingerprinting,在這種情況下,精度將是 100ms 或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds 的值(以較大者為準)。

例如,在降低時間精度的情況下,animation.currentTime 的結果將始終是 0.002 的倍數,或者在使用 privacy.resistFingerprinting 啟用時是 0.1(或 privacy.resistFingerprinting.reduceTimerPrecision.microseconds)的倍數。

js
// 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
// …

規範

規範
Web 動畫
# dom-animation-currenttime

瀏覽器相容性

另見