安装使用
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
- 笔画可以虚线