CSS 变换

通过在参数对象中直接指定各个属性,可以使用 JSWAAPI 版本的 animate() 方法对 CSS transform 属性进行动画处理。

这使得您可以更精细地控制单个变换属性的动画方式,从而比 CSS 动画或原生 WAAPI 提供更大的灵活性。

变换遵循固定的渲染顺序:perspectivetranslaterotatescaleskew,无论它们在动画参数中定义的顺序如何。相邻的轴属性会自动合并为 CSS 简写形式(例如:translateX + translateYtranslate(x, y))。

JSanimate() 方法不会解析从 CSS 样式声明中定义的变换,必须直接在元素的内联样式中设置变换属性。您可以使用内置的 utils.set() 函数在对元素进行动画处理之前独立设置变换值。

为了直接对 transform 属性进行动画处理,建议使用由 WAAPI 驱动的 waapi.animate() 方法。

自 4.4.0 版本起,变换遵循固定的渲染顺序,且 matrix / matrix3d 不再支持直接进行动画处理(当从内联样式中读取时,它们仍会被保留)。

仅在支持 CSS.registerProperty(propertyDefinition) 的浏览器中,WAAPI 的独立变换动画才有效,否则将回退为无动画状态。

有效的独立 CSS 变换属性

名称 简写 默认值 默认单位
translateX x '0px' 'px'
translateY y '0px' 'px'
translateZ z '0px' 'px'
rotate '0deg' 'deg'
rotateX '0deg' 'deg'
rotateY '0deg' 'deg'
rotateZ '0deg' 'deg'
scale '1'
scaleX '1'
scaleY '1'
scaleZ '1'
skew '0deg' 'deg'
skewX '0deg' 'deg'
skewY '0deg' 'deg'
perspective '0px' 'px'

CSS 变换代码示例

import { animate, waapi } from 'animejs';

animate('.square', {
  x: '15rem', // TranslateX shorthand
  scale: 1.25,
  skew: -45,
  rotate: '1turn',
});

// the WAAPI version is recommanded if you want to animate the transform property directly
waapi.animate('.square', {
  transform: 'translateX(15rem) scale(1.25) skew(-45deg) rotate(1turn)',
});
<div class="medium row">
  <div class="square"></div>
  <span class="padded label">JS / WAAPI</span>
</div>
<div class="medium row">
  <div class="square"></div>
  <span class="padded label">WAAPI</span>
</div>