GSAP (GreenSock Animation Platform) предоставляет мощный механизм
управления последовательностью анимаций через объект
stagger. Этот объект позволяет задавать промежутки между
анимациями нескольких элементов, управлять направлением и временем
задержки, что делает анимации более динамичными и естественными.
staggerС помощью stagger можно анимировать набор элементов с
равномерной или распределённой задержкой. В простейшем виде это выглядит
так:
gsap.to(".box", {
x: 200,
stagger: 0.2
});
Здесь каждая .box начнет движение с задержкой 0.2
секунды относительно предыдущей.
stagger может быть представлен как число или как объект
с более сложными параметрами, такими как amount,
each, from и другими.
amountamount определяет общую длительность
распределения задержек между всеми анимируемыми элементами.
Если элементов несколько, GSAP автоматически рассчитает задержку для
каждого так, чтобы первый элемент анимировался сразу, а последний —
через указанное время.
Пример:
gsap.to(".box", {
x: 300,
duration: 1,
stagger: {
amount: 2
}
});
amount: 2 означает, что задержка между первым и
последним элементом распределяется равномерно на 2 секунды.amount / (кол-во элементов - 1).2 / (5-1) = 0.5 сек.То есть первый элемент начинает анимацию сразу, второй — через 0.5 сек, третий — через 1 сек и так далее, пока последний элемент не начнёт через 2 секунды.
eacheach задаёт фиксированную задержку между началом
анимации соседних элементов, независимо от количества
элементов. В отличие от amount, здесь нет распределения по
всей группе — каждый следующий элемент просто стартует через указанное
время после предыдущего.
Пример:
gsap.to(".box", {
x: 300,
duration: 1,
stagger: {
each: 0.3
}
});
Если нужно контролировать одинаковый интервал между
элементами, удобнее использовать each.
fromfrom задаёт начальную точку отсчёта анимации в
массиве элементов, откуда будет считаться задержка. Возможные
значения:
'start' — по умолчанию, задержка считается от первого
элемента.'end' — начинается с последнего элемента.'center' — элементы анимируются от центра к краям.number) — отсчёт начинается с конкретного
элемента.Пример анимации от центра:
gsap.to(".box", {
y: 100,
duration: 1,
stagger: {
each: 0.2,
from: "center"
}
});
amount,
each и fromЭти свойства можно комбинировать для создания сложных последовательностей:
gsap.to(".box", {
rotation: 360,
duration: 1,
stagger: {
amount: 2,
from: "end"
}
});
amount: 2 распределяет задержку между элементами в 2
секунды.from: "end" меняет направление, и последний элемент
запускается первым.gsap.to(".box", {
scale: 1.5,
duration: 0.5,
stagger: {
each: 0.1,
from: 2
}
});
each: 0.1 задаёт фиксированную задержку между
элементами.from: 2 указывает, что старт идёт с элемента с индексом
2.amount для равномерного
распределения всей анимации по заданной длительности.each для точного контроля
интервалов между элементами, когда нужна постоянная
задержка.from для создания интересных
эффектов, таких как анимация от центра, от конца или от
конкретного элемента.amount и
from для сложных последовательностей, особенно при
работе с сеткой или списками элементов.stagger работает с любыми
селекторами или массивами DOM-элементов, что делает его
универсальным инструментом для динамичных интерфейсов.Эти три свойства — amount, each и
from — образуют ядро управления последовательностью
анимаций в GSAP, позволяя задавать как общую динамику, так и тонкую
настройку временных интервалов между элементами.