Библиотека ScrollMagic позволяет управлять анимацией
элементов на странице, привязывая её к положению скролла. Центральным
элементом является сцена (Scene) — объект, который
определяет, когда и как происходит анимация. Сцена создаётся с помощью
конструктора ScrollMagic.Scene и настраивается через
параметры: triggerElement, duration,
offset, triggerHook.
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger", // элемент, при достижении которого срабатывает сцена
duration: 200, // длина сцены в пикселях скролла
offset: 50, // смещение точки срабатывания сцены
triggerHook: 0.5 // точка на экране (0 - верх, 1 - низ)
});
0, анимация срабатывает
моментально.triggerElement, задаётся в пикселях.0 (верх экрана) до
1 (низ экрана).Для управления анимацией вместе со сценой используется метод
setTween(), который связывает сцену с
объектом анимации, например, созданным с помощью библиотеки GSAP
(GreenSock Animation Platform).
var tween = gsap.to("#box", {duration: 1, x: 300, rotation: 360});
scene.setTween(tween);
В этом примере элемент с ID box будет перемещаться на
300 пикселей вправо и вращаться на 360° в течение всей длины сцены.
Ключевые моменты работы setTween:
duration > 0, анимация будет
прогрессировать пропорционально позиции скролла.duration = 0 анимация срабатывает мгновенно при
достижении триггера.Сцена может реагировать на различные события с помощью методов
on() и
off().
scene.on("enter", function (event) {
console.log("Сцена активирована");
});
scene.on("leave", function (event) {
console.log("Сцена деактивирована");
});
Основные события:
enter).Использование событий позволяет запускать сложные сценарии анимации, переключать классы или изменять стиль элементов при прокрутке.
Параметр triggerHook управляет вертикальным положением триггера на экране:
triggerHook: 0 // верх экрана
triggerHook: 0.5 // центр экрана
triggerHook: 1 // низ экрана
Сцену можно динамически перемещать, изменяя её
offset:
scene.offset(100); // сдвигает триггер на 100px вниз
Комбинация triggerHook и offset позволяет
точно настраивать момент срабатывания анимации в зависимости от дизайна
страницы.
Сцену можно привязать к нескольким анимациям одновременно, используя Timeline GSAP. Это особенно удобно для комплексных последовательностей.
var timeline = gsap.timeline();
timeline.to("#box", {x: 200, duration: 1});
timeline.to("#circle", {y: 100, duration: 1});
scene.setTween(timeline);
Преимущества Timeline:
Метод setPin() позволяет «закреплять»
элемент на время сцены, создавая эффект параллакса или фиксированного
блока при скролле.
scene.setPin("#header");
setTween().position: sticky.ScrollMagic тесно интегрируется с GSAP, что позволяет создавать динамичные анимации, синхронизированные со скроллом. Также поддерживаются события для управления классами CSS, работа с jQuery и обычными DOM-элементами.
scene.on("enter", function () {
document.querySelector("#box").classList.add("active");
});
var controller = new ScrollMagic.Controller();
scene.addTo(controller);
Привязка анимации к сцене в ScrollMagic строится на трёх компонентах: Controller → Scene → Tween/Timeline. Такой подход позволяет:
Эффективное использование этих инструментов обеспечивает гибкую и плавную анимацию, полностью контролируемую пользователем через скролл.