GSAP (GreenSock Animation Platform) предоставляет мощные инструменты
для анимации элементов в JavaScript. Среди множества событий и коллбеков
особое место занимают onRepeat и
onReverseComplete. Эти функции позволяют выполнять действия
при повторении анимации или при её полном обратном завершении, что
открывает широкий спектр возможностей для управления сложными
анимационными сценариями.
Коллбек onRepeat вызывается каждый раз, когда анимация
повторяется, включая все циклы, заданные с помощью параметра
repeat.
Синтаксис использования:
gsap.to(".box", {
x: 300,
duration: 2,
repeat: 3,
onRepeat: function() {
console.log("Анимация повторилась");
}
});
Ключевые особенности onRepeat:
to,
from, fromTo, а также для таймлайнов
(Timeline).Пример динамического изменения свойств при повторении:
gsap.to(".circle", {
x: 400,
duration: 1.5,
repeat: 4,
onRepeat: function() {
this.targets()[0].style.backgroundColor = getRandomColor();
}
});
function getRandomColor() {
const letters = "0123456789ABCDEF";
let color = "#";
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
В этом примере каждый новый цикл анимации изменяет цвет элемента, создавая динамичный визуальный эффект.
Коллбек onReverseComplete срабатывает, когда анимация
или таймлайн полностью завершает обратное воспроизведение
(reverse).
Пример использования:
gsap.to(".box", {
x: 500,
duration: 2,
onReverseComplete: function() {
console.log("Анимация полностью воспроизведена в обратном направлении");
}
});
// Запуск обратного воспроизведения через 3 секунды
gsap.delayedCall(3, () => gsap.to(".box", {duration: 2, x: 0, onComplete: () => gsap.globalTimeline.reverse()}));
Особенности onReverseComplete:
onComplete, который срабатывает при
завершении прямого воспроизведения.GSAP позволяет использовать оба коллбека одновременно для создания сложных и управляемых анимаций. Например, можно отслеживать повторения анимации и выполнять дополнительные действия после обратного завершения.
gsap.to(".box", {
x: 400,
duration: 1,
repeat: 3,
yoyo: true,
onRepeat: function() {
console.log("Повтор цикла:", this.repeat());
},
onReverseComplete: function() {
console.log("Обратное воспроизведение завершено");
}
});
Пояснение:
repeat с yoyo: true создаёт эффект
«туда-сюда».onRepeat срабатывает каждый раз при смене
направления.onReverseComplete срабатывает один раз, когда анимация
возвращается в исходное состояние после последнего цикла.onRepeat для добавления интерактивности и
разнообразия в цикличные анимации.onReverseComplete особенно полезен для анимаций
модальных окон, меню и эффектов возврата элементов на стартовую
позицию.Timeline) коллбеки могут быть
назначены как на весь таймлайн, так и на отдельные анимации внутри
него.yoyo, repeat и динамическими свойствами, чтобы
создавать визуально насыщенные эффекты.Хотите, я сразу покажу полный пример таймлайна с несколькими элементами, где onRepeat и onReverseComplete используются вместе для интерактивной анимации?