Работа с анимациями в anime.js начинается с определения целевых элементов (targets). Именно к ним будут применяться анимационные свойства: изменение положения, прозрачности, масштаба и других параметров.
В библиотеке используется универсальное поле targets,
которое принимает различные типы значений:
Простейший пример:
anime({
targets: '.box',
translateX: 250
});
В данном случае селектор .box выбирает все элементы с
соответствующим классом.
anime.js поддерживает все стандартные CSS-селекторы, что делает выбор элементов гибким и мощным.
anime({
targets: '.item',
opacity: [0, 1]
});
Анимируются все элементы с классом item.
anime({
targets: '#logo',
rotate: 360
});
Применяется к элементу с уникальным id="logo".
anime({
targets: '.container .item',
scale: 1.5
});
Выбираются все .item, находящиеся внутри
.container.
anime({
targets: '.box, .circle',
translateY: 100
});
Анимация применяется сразу к нескольким типам элементов.
Вместо строковых селекторов можно передавать реальные DOM-узлы:
const element = document.querySelector('.box');
anime({
targets: element,
scale: 2
});
Это удобно, если элемент уже найден и не требуется повторный поиск.
Методы вроде querySelectorAll возвращают коллекции
элементов:
const elements = document.querySelectorAll('.item');
anime({
targets: elements,
translateX: 200
});
anime.js автоматически обрабатывает такие коллекции.
Можно комбинировать разные элементы в одном массиве:
const el1 = document.querySelector('.box');
const el2 = document.querySelector('.circle');
anime({
targets: [el1, el2],
rotate: 180
});
Также допускается смешивание типов:
anime({
targets: ['.box', document.querySelector('#logo')],
scale: 1.2
});
anime.js способен анимировать не только DOM, но и обычные объекты:
const obj = { value: 0 };
anime({
targets: obj,
value: 100,
round: 1,
update: () => {
console.log(obj.value);
}
});
Это используется для создания кастомных анимаций, синхронизации данных или построения сложной логики.
В targets можно передавать функцию, возвращающую
элементы:
anime({
targets: () => document.querySelectorAll('.dynamic'),
translateX: 150
});
Функция вызывается в момент запуска анимации, что полезно при динамически изменяемом DOM.
anime.js позволяет дополнительно фильтровать выбранные элементы с помощью Jav * aScript:
const elements = Array.from(document.querySelectorAll('.item'))
.filter(el => el.dataset.active === 'true');
anime({
targets: elements,
opacity: 1
});
Каждый элемент в списке получает индекс, который можно использовать для создания сложных эффектов:
anime({
targets: '.item',
translateX: (el, i) => i * 50
});
el — текущий элементi — индекс элементаЭто позволяет задавать разные значения для каждого элемента.
Целевые элементы можно выбирать на основе атрибутов:
anime({
targets: '[data-animate="true"]',
scale: 1.3
});
Или комбинировать:
anime({
targets: '.item[data-type="primary"]',
translateY: 80
});
Важно учитывать различие между:
querySelectorAllgetElementsByClassNameanime.js корректно работает с обоими, но:
Если элементы добавляются после инициализации, стандартный селектор их не захватит:
anime({
targets: '.item',
translateX: 100
});
Решения:
targetsПример с функцией:
anime({
targets: () => document.querySelectorAll('.item'),
translateX: 100
});
anime.js одинаково работает с HTML и SVG:
anime({
targets: 'svg circle',
r: 50
});
Можно анимировать:
cx, cy, r)Анимация может применяться к глобальным объектам:
anime({
targets: document.documentElement,
scrollTop: 500,
duration: 1000,
easing: 'easeInOutQuad'
});
В одном targets допустимо сочетание различных
способов:
anime({
targets: [
'.box',
document.querySelector('#circle'),
...document.querySelectorAll('.item')
],
scale: 1.5
});
Такой подход позволяет централизованно управлять сложными сценами.
При работе с большим количеством элементов важно учитывать:
querySelectorAll внутри
анимацийПример оптимизации:
const items = document.querySelectorAll('.item');
anime({
targets: items,
translateX: 100
});
1. Неверный селектор
targets: 'box' // ошибка, отсутствует точка
Правильно:
targets: '.box'
2. Пустой результат выборки
Если селектор не находит элементов, анимация не выполнится.
3. Передача null
targets: document.querySelector('.unknown') // null
Корректный выбор целевых элементов является фундаментом для построения сложных и производительных анимаций в anime.js.