Функции плавности (easing functions) в anime.js управляют темпом анимации, определяя, как значения свойств изменяются во времени. Они позволяют создать более естественные и динамичные движения, уходя от линейного и статичного изменения.
В anime.js функции плавности задаются через свойство
easing при конфигурации анимации:
anime({
targets: '.box',
translateX: 250,
duration: 1000,
easing: 'easeOutElastic(1, .8)'
});
Здесь easeOutElastic(1, .8) — это функция плавности,
которая придаёт анимации эффект «отскока» в конце.
Anime.js включает несколько групп easing-функций, каждая из которых имеет специфическое поведение:
linear — равномерное движение без
ускорений и замедлений.easeIn — анимация начинается медленно
и ускоряется к концу.easeOut — быстро стартует и
замедляется к завершению.easeInOut — сочетает два эффекта:
медленный старт и замедление в конце.anime({
targets: '.circle',
translateY: 200,
duration: 1200,
easing: 'easeInOutQuad'
});
easeInElastic,
easeOutElastic,
easeInOutElastic — создают эффект
колебания, имитирующий пружину.
В скобках указываются параметры:
amplitude — амплитуда колебаний.period — частота колебаний.anime({
targets: '.ball',
translateX: 300,
duration: 1500,
easing: 'easeOutElastic(1.5, 0.3)'
});
easeInBack,
easeOutBack,
easeInOutBack — создают эффект небольшого
«отката» в начале или конце движения.s регулирует интенсивность «отката».anime({
targets: '.panel',
translateY: 150,
duration: 1000,
easing: 'easeOutBack(1.7)'
});
easeInBounce,
easeOutBounce,
easeInOutBounce — имитируют падение с
отскоком.Anime.js позволяет задавать собственные функции плавности в виде
функции от времени t, где t
принимает значение от 0 до 1:
const myEasing = t => t < 0.5
? 4 * t * t * t
: 1 - Math.pow(-2 * t + 2, 3) / 2;
anime({
targets: '.custom',
translateX: 400,
duration: 1500,
easing: myEasing
});
t=0 — начальное состояние.t=1 — конечное состояние.При анимации нескольких свойств одновременно можно применять разные функции плавности для каждого свойства:
anime({
targets: '.multi',
translateX: [
{ value: 250, duration: 800, easing: 'easeInQuad' },
{ value: 0, duration: 800, easing: 'easeOutQuad' }
],
rotate: { value: 360, duration: 1600, easing: 'easeInOutSine' }
});
translateX и rotate анимируются
независимо, каждая с собственной кривой.Функции плавности — фундаментальный инструмент в anime.js для придания анимации естественности и выразительности, позволяя управлять скоростью и характером движения каждого объекта.