何时使用 WAAPI
Web Animations API (WAAPI) 与基于 JavaScript requestAnimationFrame (RAF) 的动画相比具有许多优势,但两者各有利弊。根据动画类型或创建动画的上下文环境,并非总是能够使用或推荐使用 WAAPI 来替代 RAF。
在以下情况优先使用 waapi.animate():
- 在 CPU/网络负载较高时进行动画处理(请参阅硬件加速动画章节)
- 初始页面加载时间至关重要且每一 KB 都很关键时(3KB gzip 与 JavaScript 版本的 10KB 相比)
- 动画处理 JavaScript 版本无法正确处理的复杂 CSS 值时,例如 CSS 变换矩阵或 CSS 颜色函数。
在以下情况使用 animate():
何时使用 WAAPI 代码示例
import { animate, waapi, utils } from 'animejs';
// WAAPI Animation
waapi.animate('.waapi.square', {
x: '17rem',
rotate: 180,
loop: 3,
alternate: true,
});
// JS Animation
const data = { x: '0rem', rotate: '0deg' }
const [ $log ] = utils.$('code');
animate(data, {
x: 17,
rotate: 180,
modifier: utils.round(0),
loop: 3,
alternate: true,
onRender: () => $log.innerHTML = JSON.stringify(data)
});
<div class="medium row">
<div class="square waapi"></div>
</div>
<div class="small row"></div>
<pre class="medium centered row">
<code>{"x": '0rem',"rotate":"0deg"}</code>
</pre>