当前位置: 首页 > 文档资料 > Anime.js 中文文档 >

动画赋值方式

优质
小牛编辑
131浏览
2023-12-01

无单位数值

如果原始值具有单位,则它将自动添加到动画值中。

TypeExample
NumbertranslateX: 250
anime({
  targets: '.unitless-values-demo .el',
  translateX: 250, // -> '250px'
  rotate: 540 // -> '540deg'
});

有单位数值

强制动画使用某个单位并自动转换初始目标值。

转换精度可能因使用的单位而异。
你还可以使用数组直接定义动画的初始值,请参阅设定动画初始值 部分。

TypeExample
Stringwidth: '100%'
anime({
  targets: '.specific-unit-values-demo .el',
  width: '100%', // -> from '28px' to '100%',
  easing: 'easeInOutQuad',
  direction: 'alternate',
  loop: true
});

相对数值

添加,减去或乘以原始值。

AcceptsEffectExample
'+='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.

AcceptsExample
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);

设定动画初始值

强制动画以指定值开始。

TypeExample
Array['50%', '100%']
anime({
  targets: '.el.from-to-values',
  translateX: [100, 250], // from 100 to 250
  delay: 500,
  direction: 'alternate',
  loop: true
});

函数返回数值

为动画的每个目标和属性设置不同的值。

function 接受三个参数:

ArgumentsInfos
targetThe curently animated targeted element
indexThe index of the animated targeted element
targetsLengthThe 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
});