anime.js — это компактная и мощная JavaScript-библиотека для создания анимаций на веб-страницах. Она предоставляет декларативный и гибкий API для управления изменениями свойств HTML-, SVG-элементов, а также JavaScript-объектов.
Библиотека ориентирована на упрощение сложных анимационных сценариев, включая последовательности, таймлайны, синхронизацию и управление состоянием анимации. При этом она не требует зависимостей и может использоваться как в небольших проектах, так и в сложных интерфейсах.
anime.js работает с несколькими типами свойств:
1. CSS-свойства
opacitytransform (translate, rotate, scale, skew)background-color и другие2. Атрибуты SVG
stroke-dashoffsetviewBox3. DOM-свойства
scrollTopvalue4. JavaScript-объекты
Анимация описывается через функцию anime(), которая
принимает объект конфигурации:
anime({
targets: '.box',
translateX: 250,
duration: 1000
});
Ключевые параметры:
targets — элементы или объекты, к которым применяется
анимацияduration — длительность в миллисекундахdelay — задержка перед началомeasing — функция сглаживанияloop — количество повторений или бесконечный циклanime.js поддерживает различные способы указания целей:
targets: '.className' // CSS-селектор
targets: document.querySelectorAll('.box')
targets: element // DOM-элемент
targets: [el1, el2] // массив элементов
targets: { x: 0 } // объект
Библиотека автоматически обрабатывает коллекции и применяет анимации ко всем элементам.
Значения могут задаваться несколькими способами:
1. Статические значения
translateX: 200
2. Относительные значения
translateX: '+=100'
3. Массив (от → до)
opacity: [0, 1]
4. Функции
translateX: (el, i) => i * 50
Функции получают:
el — текущий элементi — индексl — общее количество элементовСглаживание определяет характер движения:
easing: 'easeInOutQuad'
Доступные типы:
lineareaseIn*easeOut*easeInOut*Также поддерживаются:
Таймлайн позволяет объединять несколько анимаций в последовательность:
const tl = anime.timeline({
easing: 'easeOutExpo',
duration: 750
});
tl
.add({
targets: '.box',
translateX: 250
})
.add({
targets: '.box',
translateY: 100
});
Особенности:
anime.js поддерживает управление временем через параметр
offset:
.add({
targets: '.box',
translateX: 250,
offset: 500
})
Это позволяет:
loop: true
или
loop: 3
Дополнительно:
direction: 'alternate' — анимация туда-обратноdirection: 'reverse' — обратное направлениеanime.js возвращает объект управления:
const animation = anime({...});
Методы:
play()pause()restart()reverse()Свойства:
progresspausedcompletedПоддерживаются события жизненного цикла:
anime({
targets: '.box',
translateX: 250,
begin: () => {},
update: () => {},
complete: () => {}
});
Основные:
begin — началоupdate — каждый кадрcomplete — завершениеanime.js широко используется для анимации SVG:
anime({
targets: 'path',
strokeDashoffset: [anime.setDashoffset, 0],
easing: 'easeInOutSine',
duration: 1500
});
Возможности:
Поддерживаются различные форматы:
#ff0000)rgb(255,0,0))backgroundColor: '#ff0000'
Библиотека автоматически интерполирует цвета.
anime.js оптимизирована для производительности:
requestAnimationFrameРекомендуется:
transform и opacitywidth,
height)Компактность
Гибкость
Универсальность
Отсутствие зависимостей
| Критерий | CSS-анимации | anime.js |
|---|---|---|
| Простота | высокая | высокая |
| Гибкость | ограничена | высокая |
| Логика | отсутствует | есть |
| Управление | ограничено | полное |
anime.js выигрывает в сценариях, где требуется:
anime.js реализует:
Внутренне библиотека:
anime.js представляет собой универсальный инструмент для создания анимаций с акцентом на простоту, выразительность и контроль. Она закрывает разрыв между декларативными CSS-анимациями и низкоуровневым управлением через JavaScript, предлагая удобный баланс между мощностью и читаемостью кода.