GSAP (GreenSock Animation Platform) предоставляет мощный инструмент
для анимации элементов на странице. Один из ключевых приёмов —
stagger, который позволяет распределять анимацию между
несколькими элементами с заданным интервалом. Использование числового
значения в stagger позволяет задать фиксированный
промежуток времени между началом анимации каждого элемента.
Базовая форма stagger выглядит следующим образом:
gsap.to(".box", {
x: 200,
duration: 1,
stagger: 0.2
});
Здесь:
.box — CSS-селектор элементов, которые будут
анимированы;x: 200 — свойство, которое изменяется (сдвиг по оси X
на 200px);duration: 1 — длительность анимации каждого элемента в
секундах;stagger: 0.2 — числовое значение, обозначающее задержку
между запуском анимации соседних элементов (в секундах).Ключевой момент: каждое последующее значение
задерживается на stagger секунд относительно предыдущего. В
примере выше первый элемент начнет анимацию сразу, второй — через 0.2
секунды, третий — через 0.4 секунды и так далее.
Числовой stagger может быть как положительным, так и
отрицательным. Это позволяет управлять направлением последовательной
анимации:
gsap.to(".box", {
y: 100,
duration: 1,
stagger: -0.1
});
Отрицательное значение заставляет анимации элементов начинаться раньше относительно предыдущего, создавая эффект «обгоняющих» элементов.
Числовой stagger можно комбинировать с ease,
yoyo, repeat:
gsap.to(".box", {
scale: 1.5,
duration: 0.5,
stagger: 0.1,
ease: "back.out(1.7)",
yoyo: true,
repeat: 1
});
ease задаёт кривую ускорения для каждой отдельной
анимации;yoyo: true возвращает элемент в исходное состояние
после завершения анимации;repeat: 1 заставляет анимацию повториться один
раз.В этом случае элементы анимируются последовательно с задержкой в 0.1 секунды, каждая анимация имеет плавное ускорение и возвращается в начальное состояние.
GSAP автоматически применяет stagger к коллекциям
элементов, полученных через селектор или массив. Можно использовать
stagger для сложных последовательностей:
const boxes = document.querySelectorAll(".box");
gsap.from(boxes, {
opacity: 0,
y: -50,
duration: 0.8,
stagger: 0.15
});
Каждый элемент появляется постепенно с вертикальной смещением, создавая эффект «каскада». Числовое значение обеспечивает равномерное распределение анимации между элементами.
GSAP позволяет использовать функцию для динамического задания stagger на основе индекса элемента:
gsap.to(".box", {
rotation: 360,
duration: 1,
stagger: i => i * 0.2
});
Здесь каждый элемент получает задержку, равную произведению его индекса на 0.2 секунды. Таким образом, можно создавать сложные временные последовательности, сохраняя числовую основу для расчёта задержки.
gsap.to(".box", {
y: 30,
duration: 0.5,
stagger: 0.1,
repeat: -1,
yoyo: true
});
Все элементы начинают двигаться с одинаковой задержкой, создавая непрерывную волнообразную анимацию.
gsap.to(".box", {
x: 100,
duration: 0.5,
stagger: 0.05
});
Короткая задержка между элементами визуально создаёт эффект ускорения потока.
stagger удобен для равномерных
последовательностей, когда требуется фиксированный
интервал.stagger складываются с delay и
duration, поэтому важно учитывать общую синхронизацию всей
последовательности анимаций.Числовой stagger — это основа управления
последовательностью анимаций в GSAP, позволяющая легко и предсказуемо
создавать динамичные эффекты, от простого каскадного появления до
сложных волнообразных движений.