Библиотека anime.js предоставляет мощные средства для создания и управления анимациями. Помимо базового запуска анимации, ключевое значение имеет контроль над её жизненным циклом — возможность остановки, удаления или перезапуска. Это особенно важно при динамическом взаимодействии с пользователем или при необходимости синхронизации нескольких анимаций.
Метод .pause() позволяет приостановить выполнение
анимации на текущем кадре, сохранив её текущее состояние. После вызова
этого метода анимация перестает обновлять свойства объекта, но может
быть возобновлена методом .play().
let animation = anime({
targets: '.box',
translateX: 250,
duration: 2000,
loop: true
});
// Остановка через 1 секунду
setTimeout(() => {
animation.pause();
}, 1000);
// Возобновление через 2 секунды
setTimeout(() => {
animation.play();
}, 3000);
Особенности использования .pause():
translateX,
opacity и т.д.).targets).Метод .restart() не только запускает анимацию заново, но
и позволяет очистить текущее состояние, что важно для повторяемых
эффектов:
let animation = anime({
targets: '.box',
translateX: 250,
duration: 1000
});
animation.restart(); // сброс прогресса и перезапуск анимации
В сочетании с .pause() и .play() этот метод
позволяет гибко управлять жизненным циклом анимации, создавая
циклические и интерактивные эффекты.
Anime.js не имеет прямого метода destroy, но для полной
остановки анимации и удаления всех её влияний можно использовать
комбинацию .pause() и сброса стилей через Jav * aScript:
let animation = anime({
targets: '.box',
translateX: 250,
duration: 2000
});
// Остановка анимации
animation.pause();
// Сброс свойств объекта
animation.animatables.forEach(anim => {
anim.target.style.transform = '';
});
Разбор подхода:
animation.animatables — массив объектов, содержащих
ссылки на все элементы и их свойства.style.transform = '' возвращает
объект в исходное состояние.Anime.js поддерживает события жизненного цикла, которые позволяют выполнять действия при остановке или завершении анимации:
begin — вызывается в начале анимацииupdate — вызывается на каждом кадреcomplete — вызывается по завершении анимацииПример управления анимацией с помощью события
update:
let animation = anime({
targets: '.box',
translateX: 500,
duration: 5000,
update: function(anim) {
if (anim.progress > 50) {
anim.pause();
}
}
});
В этом примере анимация автоматически останавливается, когда прогресс превышает 50%. Такой подход позволяет создавать условные и интерактивные анимации без внешнего таймера.
Для анимаций с loop: true управление остановкой особенно
важно. Методы .pause() и .restart() позволяют
корректно завершить или перезапустить цикл. Если необходимо полностью
убрать анимацию и освободить ресурсы, рекомендуется:
.pause() для остановки всех кадров.let animation = anime({
targets: '.box',
translateX: 250,
duration: 2000,
loop: true
});
animation.pause();
animation.animatables.forEach(anim => anim.target.style.transform = '');
animation = null;
update и complete
позволяет реализовать условные остановки без дополнительных
таймеров.style помогает избежать визуальных
«артефактов» после остановки анимации.Эти методы создают полный контроль над анимациями в anime.js, позволяя управлять их жизненным циклом от запуска до полной очистки, что критически важно для динамических веб-интерфейсов.