GSAP предоставляет мощный инструмент для создания сложных анимаций
через объект Timeline. Одним из ключевых элементов
управления временем внутри Timeline являются метки
(labels). Метки позволяют задавать именованные точки на
временной шкале, облегчая управление последовательностью анимаций,
синхронизацию эффектов и последующую корректировку таймингов без
необходимости пересчитывать абсолютные значения времени.
Метка создаётся методом addLabel(labelName, position),
где labelName — это уникальное строковое имя метки, а
position — её положение на временной шкале. Положение может
быть задано:
Timeline."+=1" или "-=0.5".const tl = gsap.timeline();
tl.addLabel("start", 0)
.to(".box", { x: 200, duration: 2 })
.addLabel("middle", "+=1")
.to(".circle", { y: 150, duration: 1.5 });
В данном примере:
start устанавливается в начало
Timeline.middle располагается на 1 секунду позже текущей
позиции.Метки используются для задания точек привязки анимаций через методы
to, from, fromTo и другие. Вторым
аргументом метода анимации можно передавать имя метки вместо абсолютного
времени:
tl.to(".box", { rotation: 360, duration: 1 }, "start")
.to(".circle", { scale: 2, duration: 1 }, "middle");
Преимущества такого подхода:
GSAP поддерживает относительное позиционирование меток и анимаций. Это особенно полезно при создании сложных таймлайнов, где требуется сдвиг нескольких анимаций одновременно:
tl.addLabel("phase1")
.to(".box", { x: 300, duration: 2 }, "phase1")
.to(".circle", { y: 100, duration: 1 }, "phase1+=0.5");
Здесь:
.box начинает анимацию с момента
phase1..circle начинает движение через 0.5 секунды
после phase1.Синтаксис "+=N" и "-=N" позволяет
динамически регулировать смещение, что упрощает настройку тайминга при
изменении длительности других анимаций.
Метки дают возможность управлять Timeline не только на
этапе построения, но и в рантайме. Методы seek(),
play(), pause() принимают имя метки:
tl.seek("middle"); // Перемещает playhead к метке "middle"
tl.play("start"); // Запускает воспроизведение с метки "start"
tl.pause("middle"); // Ставит на паузу в точке метки "middle"
Такой подход удобен для:
repeat) в TimelineМетки особенно полезны в циклических анимациях. При использовании
свойства repeat можно привязать события и повторения к
меткам:
const tl = gsap.timeline({ repeat: 2 });
tl.addLabel("loopStart")
.to(".box", { x: 400, duration: 2 }, "loopStart")
.to(".circle", { y: 200, duration: 1 }, "loopStart+=1");
Даже при повторении анимации позиционирование относительно меток остаётся корректным, что делает управление таймлайном предсказуемым и стабильным.
Метки можно динамически удалять или перемещать, используя методы
removeLabel(labelName) и
addLabel(labelName, position) с уже существующим
именем:
tl.removeLabel("middle"); // Удаляет метку "middle"
tl.addLabel("middle", 4); // Пересоздает "middle" в другой позиции
Это позволяет адаптировать таймлайн под изменяющиеся требования проекта без необходимости переписывать все позиции анимаций.
play, pause, seek.Использование меток делает GSAP Timeline мощным
инструментом для создания профессиональных интерфейсных анимаций и
управления временем на уровне точек, а не только абсолютных секунд. Это
критически важно при работе с комплексными последовательностями и
интерактивными веб-приложениями.