动画赋值方式
优质
小牛编辑
132浏览
2023-12-01
无单位数值
如果原始值具有单位,则它将自动添加到动画值中。
Type | Example |
Number | translateX: 250 |
anime({
targets: '.unitless-values-demo .el',
translateX: 250, // -> '250px'
rotate: 540 // -> '540deg'
});
有单位数值
强制动画使用某个单位并自动转换初始目标值。
转换精度可能因使用的单位而异。
你还可以使用数组直接定义动画的初始值,请参阅设定动画初始值 部分。
Type | Example |
String | width: '100%' |
anime({
targets: '.specific-unit-values-demo .el',
width: '100%', // -> from '28px' to '100%',
easing: 'easeInOutQuad',
direction: 'alternate',
loop: true
});
相对数值
添加,减去或乘以原始值。
Accepts | Effect | Example |
'+=' | Add | '+=100' |
'-=' | Substract | '-=2turn' |
'*=' | Multiply | '*=10' |
var relativeEl = document.querySelector('.el.relative-values');
relativeEl.style.transform = 'translateX(100px)';
anime({
targets: '.el.relative-values',
translateX: {
value: '*=2.5', // 100px * 2.5 = '250px'
duration: 1000
},
width: {
value: '-=20px', // 28 - 20 = '8px'
duration: 1800,
easing: 'easeInOutSine'
},
rotate: {
value: '+=2turn', // 0 * 2 = '2turn'
duration: 1800,
easing: 'easeInOutSine'
},
direction: 'alternate'
});
颜色
anime.js 接受并转换Haxadecimal(十六进制),RGB,RGBA,HSL和HSLA颜色值。
CSS color codes ( e.g. : 'red', 'yellow', 'aqua'
) are not supported.
Accepts | Example |
Haxadecimal | '#FFF' or '#FFFFFF' |
RGB | 'rgb(255, 255, 255)' |
RGBA | 'rgba(255, 255, 255, .2)' |
HSL | 'hsl(0, 100%, 100%)' |
HSLA | 'hsla(0, 100%, 100%, .2)' |
var colorsExamples = anime.timeline({
endDelay: 1000,
easing: 'easeInOutQuad',
direction: 'alternate',
loop: true
})
.add({ targets: '.color-hex', background: '#FFF' }, 0)
.add({ targets: '.color-rgb', background: 'rgb(255,255,255)' }, 0)
.add({ targets: '.color-hsl', background: 'hsl(0, 100%, 100%)' }, 0)
.add({ targets: '.color-rgba', background: 'rgba(255,255,255, .2)' }, 0)
.add({ targets: '.color-hsla', background: 'hsla(0, 100%, 100%, .2)' }, 0)
.add({ targets: '.colors-demo .el', translateX: 270 }, 0);
设定动画初始值
强制动画以指定值开始。
Type | Example |
Array | ['50%', '100%'] |
anime({
targets: '.el.from-to-values',
translateX: [100, 250], // from 100 to 250
delay: 500,
direction: 'alternate',
loop: true
});
函数返回数值
为动画的每个目标和属性设置不同的值。
function 接受三个参数:
Arguments | Infos |
target | The curently animated targeted element |
index | The index of the animated targeted element |
targetsLength | The total number of animated targets |
anime({
targets: '.function-based-values-demo .el',
translateX: function(el) {
return el.getAttribute('data-x');
},
translateY: function(el, i) {
return 50 + (-50 * i);
},
scale: function(el, i, l) {
return (l - i) + .25;
},
rotate: function() { return anime.random(-360, 360); },
borderRadius: function() { return ['50%', anime.random(10, 35) + '%']; },
duration: function() { return anime.random(1200, 1800); },
delay: function() { return anime.random(0, 400); },
direction: 'alternate',
loop: true
});