安装使用
npm install animejs
import anime from "animejs";
参数说明
| 参数 | 默认值 | 取值 | 说明 |
|---|---|---|---|
| delay | 0 | number,function(el, index, total) | 动画延迟 ms |
| duration | 1000 | number,function(el, index, total) | 持续时间 ms anime.stagger(200) |
| autoplay | true | boolean | 自动播放 |
| loop | false | number, boolean | 定义动画往复循环 |
| direction | normal | ‘normal’, ‘reverse’, ‘alternate’ | 动画方向 |
| easing | easeOutElastic | – | 时间曲线 |
| elasticity | 400 | number | |
| round | false | number, boolean | 向上舍入为x小数 |
| begin | undefined | function(anime) | |
| update | undefined | function(anime) | |
| complete | undefined | function(anime) |
动画目标对象
- CSS 选择器,不可使用伪元素
- DOM 节点或节点集合
- JAVASCRIPT 对象,必须包含一个数字属性
- 数组
1 | anime({ |
可动画的属性
- CSS 属性,大多数属性会导致布局更改或重绘,优先考虑 opacity、transforms
- 包含数值的 JAVASCRIPT 对象属性
- 包含数值的 DOM 属性
- SVG 属性
动画赋值方式
- 无单位数值:原始值具有单位会自动补全
- 相对数值:
’+=、-=、*=‘ number - 颜色:#ffffff、RGBA、HSLA
- 强制动画以指定值开始
[50%, 100%] - 函数返回值
1 | anime({ |
关键帧
动画关键帧使用 keyframes 属性中的数组定义
1 | keyframes: [ |
交错动画
anime.stagger(value, options)
基础交错
delay: anime.stagger(100)每个元素的延迟增加100ms从特定值开始交错
delay: anime.stagger(100, {start: 500})延迟从500ms开始,每个元素只能加 100ms数值范围内均匀分配值
rotate: anime.stagger([-360, 360])旋转将在-360deg到360deg之间均匀分布在所有元素之间交错开始位置
delay: anime.stagger(100, {from: 'center'})
from:参数值(first、last、center、index)交错顺序
delay: anime.stagger(100, {direction: 'reverse'})交错时间线
delay: anime.stagger(100, {easing: 'easeOutQuad'})网格交错
1
2
3
4
5scale: [
{value: .1, easing: 'easeOutSine', duration: 500},
{value: 1, easing: 'easeInOutQuad', duration: 1200}
],
delay: anime.stagger(200, {grid: [14, 5], from: 'center'})网格交错方向
anime.stagger(value, {grid: [rows, columns], axis: 'x'})
时间轴
让多个动画同步,默认时间轴中的每个动画都会在上一个动画结束时开始
1 | var myTimeline = anime.timeline(parameters); |
offset:时间偏移量
参数继承
父时间轴实例中的参数由所有子项继承
支持的参数:targets、duration、delay、endDelay、round
动画控制
play、pause、restart、reverse
- 跳转
animation.seek(animation.duration * (seekProgressEl.value / 100));
回调函数
update:动画开始后,每一帧都会触发
begin、complete
loopBegin、loopComplete
change、changeBegin、changeComplete
finished.then() 动画完成后返回 promise IE11 以下不支持
SVG 路径动画
- 画线动画
anime.setDashoffset() 方法获取到SVG路径的长度并将此长度设置为SVG的stroke-dasharray值,并返回该长度再使用strokeDashoffset将SVG的stroke-dashoffset属性值在from to格式中产生动画从而创建路径绘制效果
strokeDashoffset: [anime.setDashoffset, 0]
SVG 画线原理
- SVG形状
- 形状必须有笔触 stroke、stroke-width
- 笔画可以虚线

