指南 · 08

效能與播放

Animated 如何避免每一格的工作、如何確認元素走的是哪條路徑,以及首頁的數據是如何測得的。

三種播放路徑

Animated 依屬性選擇路徑。API 不會因路徑不同而改變。

路徑適用情況每一格的工作
browserAnimated.<tag> 元素上有限的 transform 與 opacity 動態,包括彈簧頁面的 JavaScript 不做任何事
css瀏覽器能以共用 CSS 關鍵影格表達的精確曲線頁面的 JavaScript 不做任何事
js一般 style 變數、輸入、自訂計算與 sequence 的邊界每個值寫入一次,沒有 React 渲染

一個值,多個元素

Hook 值的衍生結果都是 calc() 運算式。使用 scope 時,每一格寫入一次變數就能驅動容器中的所有元素。

正在準備範例…

確認路徑

inspect(element) 會在實際執行時回傳每個動畫屬性的驅動器與退回原因。

debug.js
import { inspect } from '@kkwaenggwari/animated';

console.table(inspect(element));
// property   driver     reason
// transform  browser    null
// opacity    css        null
// --level    js         css-variable-requires-js

從第一格開始

如果啟動動態的工作讓主執行緒一直忙碌(例如 hydration 或一次大型提交),動態會在那項工作結束後重新開始,而不是看起來已經播到一半。在隱藏的頁面中啟動的動態會在背景完成。

首頁的數據是如何測得的

每個情境都在全新的頁面中執行:先暖機一次,再記錄三次樣本,取中位數。JavaScript 時間是動態執行期間在動畫影格回呼中花費的時間。它不包含樣式計算、版面配置與繪製——這些不論哪種方式瀏覽器都要做——所以它不是總 CPU 用量或影格率的指標。

瀏覽器播放並不會讓版面配置、繪製、合成或記憶體變成免費。請在你支援的裝置上測量真實的畫面。

情境設定結果
400 Animated.div elements move translateX and fade in (timing, 1800 ms)seed/pose/tempo on Animated.div; 800 browser animations0.00 ms
One useAnimated value drives 10,000 elements in ordinary style (loop, 1200 ms)transform and opacity as calc() of one CSS variable written on a scope element0.13 ms

2026-09-28 · Chrome 153.0.8010.52 (headless) · Windows_NT x64 · Intel(R) Core(TM) i7-14700K

搜尋

輸入關鍵字搜尋文件。