anime.js — это легковесная JavaScript-библиотека для создания анимаций HTML, CSS и SVG. Она позволяет управлять анимацией свойств элементов с высокой точностью, обеспечивая плавные переходы и широкие возможности синхронизации. Основная концепция заключается в использовании анимируемых объектов, свойств и таймингов.
Анимация создается с помощью функции anime():
anime({
targets: '.box',
translateX: 250,
rotate: '1turn',
duration: 2000,
easing: 'easeInOutQuad'
});
Anime.js предоставляет возможность управлять отдельными компонентами анимации, которые можно комбинировать и повторно использовать.
Позволяют задавать последовательность состояний элемента:
anime({
targets: '.circle',
keyframes: [
{translateY: 0},
{translateY: 100},
{translateY: 50},
{translateY: 100}
],
duration: 3000,
easing: 'easeInOutSine'
});
keyframes описывает отдельное состояние
анимируемого свойства.Позволяет объединять несколько анимаций в единую цепочку с точным контролем времени:
let tl = anime.timeline({
easing: 'easeOutExpo',
duration: 750
});
tl.add({
targets: '.box1',
translateX: 250
})
.add({
targets: '.box2',
translateX: 250,
offset: '-=500'
});
offset позволяет задавать смещение относительно
предыдущей анимации.Повтор и направление анимации:
anime({
targets: '.box',
translateY: 200,
direction: 'alternate',
loop: true
});
loop: true — бесконечный цикл. Можно указать число
повторов.direction: 'alternate' — анимация воспроизводится туда
и обратно.Callbacks и управление жизненным циклом:
anime({
targets: '.box',
translateX: 300,
duration: 1000,
begin: function(anim) {
console.log('Анимация началась');
},
update: function(anim) {
console.log('Текущее значение: ', anim.progress);
},
complete: function(anim) {
console.log('Анимация завершена');
}
});
begin — вызывается в начале анимации.update — вызывается на каждом кадре, можно получать
прогресс и изменять параметры динамически.complete — вызывается после окончания анимации.Anime.js может анимировать не только DOM-элементы, но и обычные JavaScript-объекты:
let obj = {x: 0, y: 0};
anime({
targets: obj,
x: 100,
y: 200,
round: 1,
easing: 'easeOutQuad',
update: function() {
console.log(obj.x, obj.y);
}
});
round для округления
значений.Анимации SVG выполняются через атрибуты и трансформации:
anime({
targets: 'circle',
strokeDashoffset: [anime.setDashoffset, 0],
easing: 'easeInOutSine',
duration: 1500,
loop: true
});
strokeDashoffset позволяет создавать эффект «рисования»
линии.anime.setDashoffset автоматически рассчитывает длину
пути для корректного эффекта.Anime.js предоставляет объекты для полного контроля:
let animation = anime({
targets: '.box',
translateX: 300,
autoplay: false
});
animation.play();
animation.pause();
animation.restart();
animation.reverse();
autoplay: false позволяет управлять стартом
вручную.reverse() меняет направление текущей анимации.Ключевые компоненты anime.js:
Anime.js позволяет создавать как простые, так и сложные, синхронизированные анимации, управляя каждой деталью их поведения через настраиваемые компоненты и директивы.