В библиотеке anime.js объект анимации поддерживает
большое количество опций, среди которых особое место занимает
update callback. Этот колбэк вызывается
каждый раз при обновлении значений анимации, что делает
его крайне полезным для динамического взаимодействия с DOM или
вычислений в реальном времени.
anime({
targets: '.box',
translateX: 250,
duration: 2000,
update: function(anim) {
console.log(anim.progress);
}
});
anim — объект анимации, передаваемый в
callback.anim.progress — процент выполнения
анимации (от 0 до 100).anim.currentTime — текущее время
анимации в миллисекундах.anim.completed — логическое значение,
показывающее, завершена ли анимация.update вызывается с частотой обновления
анимации, обычно несколько десятков раз в секунду, что
позволяет отслеживать каждый шаг анимации.
anime({
targets: '.circle',
scale: [0, 1],
duration: 3000,
update: function(anim) {
const progress = anim.progress.toFixed(1);
document.querySelector('.progress-text').textContent = `${progress}%`;
}
});
В этом примере текст на странице обновляется в реальном времени, показывая текущий прогресс анимации.
update позволяет комбинировать несколько CSS-свойств или
динамически изменять параметры на лету.
anime({
targets: '.square',
translateX: 400,
rotate: 360,
duration: 4000,
update: function(anim) {
const rotation = anim.animations[1].currentValue;
document.querySelector('.square').style.backgroundColor = `rgb(${rotation % 255}, 100, 150)`;
}
});
Здесь цвет элемента изменяется пропорционально текущему вращению, создавая динамический эффект, который невозможно задать статически через ключевые кадры.
update удобно использовать для синхронизации с другими
процессами, например, перемещением других объектов или вызовом
функций.
anime({
targets: '.bar',
width: '80%',
duration: 2000,
update: function(anim) {
if (anim.progress > 50 && !window.triggered) {
console.log('Анимация достигла середины!');
window.triggered = true;
}
}
});
anim.animations — массив всех
анимационных свойств, где каждый элемент содержит:
currentValue — текущее значение свойстваfrom — начальное значениеto — конечное значениеtype — тип анимации (CSS, transform, attribute и
т.д.)anim.paused — состояние
паузы
anim.reversed — направление
анимации
anim.remaining — оставшееся время
до завершения
Эти свойства позволяют создавать условные эффекты и контролировать поведение анимации прямо в процессе её выполнения.
complete и
beginbegin вызывается один раз при старте
анимации.update вызывается многократно на
каждом кадре.complete вызывается один раз при
завершении анимации.update — это единственный колбэк, который обеспечивает
пошаговый контроль анимации, позволяя реагировать на её
изменения в реальном времени.
Частое выполнение сложных операций внутри update может
негативно влиять на плавность анимации. Рекомендуется:
update.requestAnimationFrame для сторонних
вычислений, если необходимо.if (anim.progress % 10 === 0)).update позволяет объединять контроль анимации и
динамическое изменение стиля в одном месте, делая интерфейс
живым и отзывчивым.
Эффективное использование update callback превращает
простую анимацию из статического движения в
интерактивный, динамически изменяющийся элемент,
полностью управляемый в реальном времени.