containerAnimation представляет собой инструмент для управления анимациями, сгруппированными внутри контейнера. Он позволяет организовать сложные последовательности анимаций, обеспечивая синхронизацию и контроль над их воспроизведением.
Контейнер создается с помощью объекта gsap.timeline(). В
отличие от одиночной анимации через gsap.to() или
gsap.from(), таймлайн позволяет объединять несколько
анимаций в логическую последовательность.
const container = gsap.timeline({
paused: true,
defaults: { duration: 1, ease: "power2.out" }
});
Ключевые параметры:
paused: true — контейнер создается в состоянии паузы, а
анимации запускаются вручную.defaults — задает общие настройки для всех анимаций
внутри контейнера, что упрощает код и обеспечивает единообразие.Внутри контейнера можно добавлять анимации с помощью методов
to, from, fromTo:
container
.to(".box", { x: 300, rotation: 45 })
.from(".circle", { scale: 0, opacity: 0 })
.to(".text", { y: -50, opacity: 1 }, "-=0.5");
"-=0.5") позволяет накладывать
анимации друг на друга, создавая плавные переходы.defaults, если не указано иное.Контейнер анимации предоставляет удобные методы для контроля:
container.play() — воспроизведение с текущей
позиции.container.pause() — пауза.container.reverse() — воспроизведение в обратном
направлении.container.seek(time) — переход к конкретной позиции в
таймлайне.container.timeScale(value) — управление скоростью
воспроизведения.container.timeScale(2); // ускорить анимацию в 2 раза
container.play();
Использование timeScale особенно полезно при
динамическом изменении скорости анимации без корректировки каждой
отдельной анимации.
Контейнер поддерживает повторение и циклы через параметры:
container.repeat(3).yoyo(true);
repeat(n) — количество повторов. Значение
-1 означает бесконечный цикл.yoyo(true) — возврат анимации в исходное состояние
после завершения цикла, создавая эффект «обратного движения».Контейнер позволяет создавать вложенные таймлайны для сложных анимационных сцен:
const subTimeline = gsap.timeline();
subTimeline.to(".subBox", { x: 100, opacity: 1 });
container.add(subTimeline, "+=0.5");
play, pause, reverse
родительского контейнера.Контейнер поддерживает события для отслеживания состояния анимации:
container.eventCallback("onStart", () => console.log("Анимация началась"));
container.eventCallback("onComplete", () => console.log("Анимация завершена"));
container.eventCallback("onUpdate", () => console.log("Анимация обновилась"));
onStart — срабатывает при запуске таймлайна.onUpdate — вызывается на каждом кадре анимации.onComplete — вызывается после полного завершения всех
анимаций контейнера.Контейнер позволяет добавлять или удалять анимации во время выполнения:
container.add(gsap.to(".dynamicBox", { x: 200 }), "+=1");
container.remove(".dynamicBox");
add() — добавляет новую анимацию или таймлайн.remove() — удаляет анимацию по ссылке или
селектору.defaults для повторяющихся параметров
анимации, чтобы упростить поддержку.seek и
timeScale, создавая адаптивные анимации под действия
пользователя.will-change в CSS
и минимизацию перерисовок.Эти инструменты делают containerAnimation основным
элементом построения сложных и управляемых анимационных интерфейсов с
GSAP, позволяя создавать последовательности, реагирующие на
пользовательские события и изменения состояния страницы.