При переходе с библиотек анимации, таких как GSAP, Velocity.js или jQuery.animate, важно понять философию anime.js, которая строится вокруг лёгкой декларативной настройки анимаций через объект конфигурации. Основная идея — описывать что анимировать, какие параметры и какой временной контекст, а не вручную управлять каждым кадром.
В anime.js ключевой элемент — вызов функции anime() с
объектом настроек:
anime({
targets: '.box',
translateX: 250,
rotate: '1turn',
duration: 2000,
easing: 'easeInOutQuad'
});
ease в GSAP.Для сравнения, в jQuery аналог выглядел бы так:
$('.box').animate({ left: '250px', rotate: '360deg' }, 2000);
anime.js позволяет управлять анимацией более гибко, без необходимости смешивать CSS и JS.
Anime.js поддерживает анимацию через keyframes, что упрощает сложные последовательности:
anime({
targets: '.circle',
keyframes: [
{ translateY: 0 },
{ translateY: 100 },
{ translateY: 50 }
],
duration: 3000,
easing: 'easeOutElastic'
});
.to() или
последовательность коллбеков в других библиотеках.GSAP использует цепочку TweenMax.to() или
TimelineMax, например:
gsap.to(".box", { x: 250, rotation: 360, duration: 2, ease: "power1.inOut" });
В anime.js тот же результат достигается компактным объектом:
anime({
targets: '.box',
translateX: 250,
rotate: '1turn',
duration: 2000,
easing: 'easeInOutQuad'
});
Преимущества anime.js:
Anime.js предоставляет anime.timeline() для организации
последовательностей:
const tl = anime.timeline({
easing: 'easeOutExpo',
duration: 750
});
tl.add({ targets: '.box1', translateX: 250 })
.add({ targets: '.box2', translateY: 200 }, '-=500'); // перекрытие
Anime.js умеет анимировать SVG-пути, strokeDashoffset, scale, opacity, color и CSS-переменные. Например:
anime({
targets: '#path',
strokeDashoffset: [anime.setDashoffset, 0],
easing: 'easeInOutSine',
duration: 2000,
loop: true
});
anime.setDashoffset автоматически вычисляет длину
пути.loop: true.Anime.js позволяет управлять анимацией динамически:
const animation = anime({
targets: '.box',
translateX: 500,
duration: 3000,
autoplay: false
});
animation.play(); // запуск
animation.pause(); // пауза
animation.restart(); // перезапуск
animation.seek(1500); // переход к определённому времени
jQuery.animate → anime.js
easing вместо
swing или linear.GSAP Tween → anime.js
.to() на targets + объект
параметров.timeline() с
add().Velocity.js → anime.js
{ properties, options }; anime.js
объединяет их в один объект.Anime.js содержит методы для упрощения работы:
anime.random(min, max) — случайные значения.anime.setDashoffset(el) — вычисление длины
SVG-пути.anime.stagger(value, options) — последовательная
анимация массивов элементов:anime({
targets: '.dots div',
translateY: 50,
delay: anime.stagger(100)
});
Понимание этих особенностей позволяет мигрировать с других библиотек с минимальными изменениями кода и получить более читаемую и расширяемую структуру анимаций.