ScrollMagic — это мощная библиотека для управления анимациями при прокрутке страницы. Однако в большинстве случаев она используется совместно с дополнительными библиотеками, которые расширяют её возможности и упрощают создание сложных визуальных эффектов. Рассмотрим основные библиотеки и подходы, которые часто применяются поверх ScrollMagic.
GSAP является наиболее популярной связкой с ScrollMagic благодаря своей гибкости и производительности. Она позволяет создавать плавные и контролируемые анимации любых CSS-свойств, SVG и JavaScript-объектов.
Основные возможности интеграции:
Создание анимации с Timeline
const tl = gsap.timeline();
tl.to("#box", { x: 300, duration: 1 })
.to("#box", { rotation: 360, duration: 1 });
Timeline удобно использовать для последовательных анимаций, которые можно синхронизировать с прокруткой через ScrollMagic.
Связывание с ScrollMagic Scene
const controller = new ScrollMagic.Controller();
const scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 500
})
.setTween(tl)
.addTo(controller);
Здесь triggerElement определяет начало анимации, а
duration задает длину зоны прокрутки, в течение которой
анимация выполняется.
Scrubbing Свойство scrub позволяет
привязать прогресс анимации к позиции прокрутки:
new ScrollMagic.Scene({ triggerElement: "#trigger", duration: 500, scrub: true })
.setTween(tl)
.addTo(controller);
Анимация идет синхронно с прокруткой, что создаёт эффект «прокрутки по сцене».
Velocity.js используется как альтернатива GSAP для анимации, особенно когда нужно работать с элементами, поддерживающими сложные transform и opacity-анимации без больших нагрузок на DOM.
Пример интеграции с ScrollMagic:
const scene = new ScrollMagic.Scene({ triggerElement: "#trigger", duration: 400 })
.setVelocity("#box", { opacity: 1, left: 200 }, { duration: 1000 })
.addTo(controller);
Velocity.js оптимизирована для высокой производительности на мобильных устройствах.
ScrollMagic не ограничивается только DOM-элементами. Для анимаций на
<canvas> или SVG поверх ScrollMagic используются
специализированные библиотеки:
PixiJS — для рендеринга сложных графических
сцен. ScrollMagic управляет прогрессом анимации PixiJS через методы
.tween() или ручное управление frame:
const scene = new ScrollMagic.Scene({ triggerElement: "#canvasTrigger", duration: 1000, scrub: true })
.on("progress", e => { sprite.rotation = e.progress * Math.PI * 2; })
.addTo(controller);Snap.svg — удобен для анимаций SVG. ScrollMagic позволяет синхронизировать stroke-dashoffset, трансформации и атрибуты SVG с прокруткой.
Некоторые разработчики создают облегчённые плагины поверх ScrollMagic, чтобы ускорить реализацию:
ScrollMagicIndicators Вспомогательная библиотека для визуального отображения trigger и duration. Используется для отладки сложных сцен.
ScrollMagic Plugins for React/Vue Интеграция с современными фреймворками через обёртки, которые позволяют создавать сцены как компоненты, сохраняя декларативный стиль.
Выбор анимационной библиотеки определяется типом анимации:
Оптимизация производительности
will-change и transform
вместо top/left для GPU-ускорения.Синхронизация нескольких анимаций ScrollMagic позволяет объединять несколько анимаций в одну сцену через Timeline, что упрощает управление сложными эффектами.
Отладка и визуализация Инструменты вроде ScrollMagicIndicators позволяют проверять положение триггеров и длительность сцен в реальном времени, что критично при работе с большим количеством сцен.
Эти библиотеки создают полноценную экосистему поверх ScrollMagic, превращая её из простой системы триггеров в мощный инструмент для сложной анимации при прокрутке страницы. Использование Timeline, scrubbing и синхронизации с Canvas или SVG позволяет создавать динамичные, отзывчивые и визуально насыщенные интерфейсы.