指南 · 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

从第一帧开始

如果启动动效的任务让主线程一直忙碌(例如水合或一次大型提交),动效会在那项工作结束后重新开始,而不是看起来已经播到一半。在隐藏的页面中启动的动效会在后台完成。

首页的数据是如何测得的

每个场景都在全新的页面中运行:先预热一次,再记录三次样本,取中位数。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

搜索

输入关键词搜索文档。