В библиотеке anime.js easing-функции используются для управления темпом анимации. Они определяют, как значения свойств изменяются во времени, создавая эффект ускорения, замедления или комбинированного движения. Каждая easing-функция задаёт кривую, которая преобразует линейное прогрессирование времени в плавное изменение значения.
anime.js поставляется с широким набором предопределённых функций easing. Основные категории:
Линейные (Linear)
'linear' – постоянная скорость от начала до конца
анимации. Применение:anime({
targets: '.box',
translateX: 250,
duration: 1000,
easing: 'linear'
});Классические ускорения/замедления (Quadratic, Cubic, Quartic, Quintic) Каждая функция задаёт кривую степени N, влияя на скорость движения:
'easeInQuad', 'easeOutQuad',
'easeInOutQuad''easeInCubic', 'easeOutCubic',
'easeInOutCubic''easeInQuart', 'easeOutQuart',
'easeInOutQuart''easeInQuint', 'easeOutQuint',
'easeInOutQuint'Пояснение:
easeIn* – плавное начало, ускорение к концу.easeOut* – быстрое начало, плавное завершение.easeInOut* – комбинированное ускорение и
замедление.Пример использования:
anime({
targets: '.circle',
scale: 2,
duration: 1200,
easing: 'easeInOutCubic'
});Elastic (упругие) функции
'easeInElastic', 'easeOutElastic',
'easeInOutElastic' Добавляют эффект пружины: объект сначала
проходит через целевое значение, возвращается назад и постепенно
стабилизируется.anime({
targets: '.spring',
translateY: 200,
duration: 1500,
easing: 'easeOutElastic'
});Bounce (отскок)
'easeInBounce', 'easeOutBounce',
'easeInOutBounce' Имитируют падение и отскок объекта,
создавая реалистичный физический эффект.anime({
targets: '.ball',
translateY: 300,
duration: 1000,
easing: 'easeOutBounce'
});Back (с «перелётом») функции
'easeInBack', 'easeOutBack',
'easeInOutBack' Движение выходит за конечную точку и
возвращается, создавая эффект «пробега за пределы».anime({
targets: '.arrow',
translateX: 150,
duration: 800,
easing: 'easeOutBack'
});Встроенные easing-функции можно детально настраивать с помощью функций обратного вызова или синтаксиса с массивом. Например, для elastic можно указать амплитуду и частоту:
anime({
targets: '.elastic-box',
translateX: 250,
duration: 2000,
easing: 'easeOutElastic(1, .5)'
});
Такая запись позволяет создавать уникальные динамики движения без написания собственных функций.
В anime.js easing-функции работают не только с отдельными свойствами, но и с массивами или сложными последовательностями анимаций:
anime({
targets: '.stagger-box div',
translateY: 200,
duration: 1000,
delay: anime.stagger(100),
easing: 'easeInOutQuart'
});
anime.stagger() позволяет применять задержку для
последовательного движения элементов.Выбор easing по задаче:
'linear'.'easeInOut*'.'easeOutBounce',
'easeOutElastic'.'easeOutBack'.Комбинирование easing: Можно назначать разные функции для различных свойств объекта, создавая сложные анимации:
anime({
targets: '.multi',
translateX: {
value: 300,
duration: 1200,
easing: 'easeInQuad'
},
rotate: {
value: 360,
duration: 1200,
easing: 'easeOutBack'
}
});
Встроенные easing-функции anime.js позволяют создавать динамичные и естественные анимации без написания сложных математических формул. Их грамотное использование улучшает восприятие интерфейса и добавляет анимациям выразительности и реализма.