Anime.js распространяется в виде компактного JavaScript-файла и может быть подключён несколькими способами:
Через CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
Через npm:
npm install animejs
import anime from 'animejs/lib/anime.es.js';
После подключения становится доступна глобальная функция
anime, которая является основным инструментом для создания
анимаций.
Любая анимация в anime.js описывается с помощью объекта конфигурации:
anime({
targets: '.box',
translateX: 250
});
Ключевые параметры:
targets — элементы, к которым применяется анимацияtranslateX, opacity,
scale и др.)targets)Anime.js поддерживает различные способы указания элементов:
targets: '.box' // CSS-селектор
targets: document.querySelector('.box') // DOM-элемент
targets: ['.box', '.circle'] // массив селекторов
targets: NodeList // результат querySelectorAll
Также можно передавать массив объектов:
targets: [
{ x: 0 },
{ x: 100 }
]
HTML:
<div class="box"></div>
CSS:
.box {
width: 50px;
height: 50px;
background: red;
}
Jav * aScript:
anime({
targets: '.box',
translateX: 200,
duration: 1000
});
В результате элемент плавно переместится по оси X на 200 пикселей за 1 секунду.
Anime.js поддерживает анимацию различных типов свойств:
translateX
translateY
scale
rotate
skew
Пример:
anime({
targets: '.box',
translateX: 250,
rotate: '1turn',
scale: 1.5
});
opacity
backgroundColor
width
height
anime({
targets: '.box',
opacity: 0.5,
backgroundColor: '#00ff00'
});
anime({
targets: 'input',
value: 100
});
duration — время выполнения анимации (в
миллисекундах):
duration: 2000
delay — задержка перед началом:
delay: 500
Можно задавать функцию:
delay: (el, i) => i * 200
Здесь каждый следующий элемент начнёт анимацию с задержкой 200 мс.
Параметр easing определяет характер движения:
easing: 'linear'
easing: 'easeInOutQuad'
easing: 'easeOutElastic(1, .8)'
Пример:
anime({
targets: '.box',
translateX: 250,
easing: 'easeOutElastic(1, .8)'
});
Elastic создаёт эффект пружины.
Anime.js поддерживает разные способы задания значений:
translateX: 250
translateX: [0, 250]
translateX: '+=100'
translateX: '-=50'
translateX: (el, i) => i * 50
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
anime({
targets: '.box',
translateX: 200,
delay: (el, i) => i * 300
});
Элементы будут двигаться последовательно.
loop — количество повторений:
loop: 3
Бесконечный цикл:
loop: true
direction — направление:
direction: 'normal'
direction: 'reverse'
direction: 'alternate'
Пример:
anime({
targets: '.box',
translateX: 200,
direction: 'alternate',
loop: true
});
Элемент будет двигаться вперёд и назад.
duration задаёт общую скорость, но
можно дополнительно управлять через:
anime.speed = 2; // ускорение в 2 раза
Anime.js возвращает объект анимации:
const animation = anime({
targets: '.box',
translateX: 250,
autoplay: false
});
Методы управления:
animation.play()
animation.pause()
animation.restart()
По умолчанию анимация запускается сразу. Отключение:
autoplay: false
Anime.js позволяет отслеживать этапы анимации:
anime({
targets: '.box',
translateX: 250,
begin: () => console.log('Старт'),
update: () => console.log('Обновление'),
complete: () => console.log('Завершено')
});
anime({
targets: '.box',
translateX: 250,
scale: 2,
opacity: 0.5,
duration: 1500
});
Все свойства анимируются одновременно.
anime({
targets: '.box',
translateX: {
value: 250,
duration: 1000
},
rotate: {
value: '1turn',
duration: 2000
}
});
Каждое свойство имеет собственные параметры.
Anime.js автоматически определяет единицы:
translateX: '50%'
translateY: '10rem'
Поддерживаются разные форматы:
backgroundColor: '#ff0000'
backgroundColor: 'rgb(255, 0, 0)'
backgroundColor: 'hsl(0, 100%, 50%)'
anime({
targets: '.box',
translateX: 200,
rotate: '1turn',
scale: 1.5,
opacity: 0.7,
easing: 'easeInOutQuad',
duration: 1500
});
<div class="box"></div>
<style>
.box {
width: 50px;
height: 50px;
background: blue;
}
</style>
<script>
anime({
targets: '.box',
translateX: 250,
duration: 1000,
easing: 'easeInOutQuad'
});
</script>
Этот пример демонстрирует базовый принцип работы библиотеки: выбор элемента, указание свойства и настройка времени и плавности.