GSAP (GreenSock Animation Platform) предоставляет мощный механизм управления анимацией с помощью колбэков, которые позволяют отслеживать жизненный цикл анимации и выполнять дополнительные действия в нужные моменты. Основными событиями являются onStart, onUpdate и onComplete. Эти обработчики позволяют интегрировать анимацию с логикой приложения, синхронизировать эффекты и управлять поведением элементов на странице.
onStart — это колбэк, который вызывается один раз в момент начала анимации. Он полезен для инициализации состояний или запуска внешних процессов параллельно с анимацией.
Пример использования:
gsap.to(".box", {
x: 300,
duration: 2,
onStart: () => {
console.log("Анимация началась");
document.querySelector(".box").style.border = "2px solid red";
}
});
Особенности:
to, from,
fromTo, timeline.onUpdate вызывается каждый раз, когда обновляется прогресс анимации. Это делает его идеальным инструментом для синхронизации сложных эффектов или отслеживания динамики анимации в реальном времени.
Пример использования:
gsap.to(".circle", {
x: 500,
duration: 4,
onUpdate: function() {
const progress = this.progress();
document.querySelector(".progress").textContent = `Прогресс: ${(progress * 100).toFixed(0)}%`;
}
});
Особенности:
this.progress().onUpdate.onComplete срабатывает один раз в момент завершения анимации. Это основной инструмент для запуска действий после завершения перехода.
Пример использования:
gsap.to(".text", {
y: 200,
duration: 3,
onComplete: () => {
console.log("Анимация завершена");
alert("Движение текста завершено!");
}
});
Особенности:
Колбэки GSAP вызываются с контекстом анимации, что позволяет
использовать this для получения информации о текущей
анимации:
gsap.to(".square", {
x: 400,
duration: 2,
onUpdate: function() {
console.log(`Текущая позиция X: ${this.targets()[0].offsetLeft}`);
},
onComplete: function() {
console.log(`Анимация для элемента завершена`);
}
});
Методы и свойства контекста:
this.targets() — массив элементов, к которым
применяется анимация.this.progress() — текущий прогресс анимации (0–1).this.time() — текущее время анимации.this.duration() — длительность анимации.Колбэки могут применяться и внутри Timeline:
const tl = gsap.timeline({
onStart: () => console.log("Таймлайн стартовал"),
onUpdate: () => console.log("Таймлайн обновляется"),
onComplete: () => console.log("Таймлайн завершен")
});
tl.to(".box", {x: 100, duration: 1})
.to(".circle", {y: 200, duration: 1});
Особенности:
onStart для подготовки элементов перед
движением.onUpdate — для динамической синхронизации эффектов и
визуальных индикаторов прогресса.onComplete — для запуска последующих действий, чистки
или запуска новых анимаций.onUpdate для поддержания
плавности анимации.this) для получения
актуальной информации о текущей анимации.Эти три колбэка образуют базовую систему управления жизненным циклом анимации в GSAP, обеспечивая гибкость и полный контроль над поведением элементов на странице. Их грамотное сочетание позволяет создавать сложные, интерактивные и динамичные визуальные эффекты.