Контроллер в ScrollMagic является центральным элементом, который
управляет всеми сценами. Он отслеживает прокрутку страницы и сообщает
сценам о текущем положении скролла. Создание контроллера осуществляется
через конструктор ScrollMagic.Controller:
var controller = new ScrollMagic.Controller();
Контроллер может быть настроен с различными параметрами:
true (вертикальная прокрутка).Пример использования параметров:
var controller = new ScrollMagic.Controller({
vertical: true,
globalSceneOptions: { triggerHook: 0.5 },
loglevel: 2
});
triggerHook: 0.5 задаёт момент срабатывания сцены в
середине окна просмотра.
Сцена в ScrollMagic описывает, как элемент реагирует на прокрутку. Сцена привязывается к контроллеру, а её основные параметры включают:
triggerElement.Пример базовой сцены:
var scene = new ScrollMagic.Scene({
triggerElement: "#section1",
duration: 300,
offset: 50,
triggerHook: 0.5
})
.setClassToggle("#section1", "active")
.addTo(controller);
ScrollMagic предоставляет множество методов для управления сценой:
Пример закрепления элемента:
var scene = new ScrollMagic.Scene({
triggerElement: "#header",
duration: 500
})
.setPin("#header")
.addTo(controller);
Закреплённый элемент остаётся на экране, пока сцена активна.
Контроллер может управлять множеством сцен одновременно. Каждая сцена может иметь свои триггеры и анимации:
var scene1 = new ScrollMagic.Scene({
triggerElement: "#section1",
duration: 200
})
.setClassToggle("#section1", "visible")
.addTo(controller);
var scene2 = new ScrollMagic.Scene({
triggerElement: "#section2",
duration: 300
})
.setPin("#section2")
.addTo(controller);
Использование одного контроллера для всех сцен упрощает управление и синхронизацию анимаций.
Параметр globalSceneOptions позволяет задавать общие
настройки для всех сцен, что экономит код:
var controller = new ScrollMagic.Controller({
globalSceneOptions: {
triggerHook: 0.7,
reverse: true
}
});
Все сцены, добавленные к этому контроллеру, будут наследовать эти параметры, если они не переопределены локально.
Для интеграции с анимационными библиотеками (например GSAP) сцена
может использовать метод setTween. Это позволяет привязать
любую анимацию к скроллу:
var tween = gsap.to("#box", {duration: 1, x: 300, rotation: 360});
var scene = new ScrollMagic.Scene({
triggerElement: "#box",
duration: 400
})
.setTween(tween)
.addTo(controller);
Анимация будет проигрываться пропорционально позиции скролла в пределах сцены.
addTo(controller).setTween, setPin,
setClassToggle.Для визуального контроля можно использовать индикаторы:
scene.addIndicators({
name: "Scene 1",
colorTrigger: "blue",
colorStart: "green",
colorEnd: "red"
});
Индикаторы показывают точку триггера, начало и конец сцены, что упрощает настройку сложных скролл-анимаций.
Сцена с пином, анимацией и классами:
var tween = gsap.to("#panel", {duration: 1, y: 200, opacity: 0.5});
var scene = new ScrollMagic.Scene({
triggerElement: "#panel",
duration: 500,
triggerHook: 0.2
})
.setPin("#panel")
.setTween(tween)
.setClassToggle("#panel", "active")
.addIndicators()
.addTo(controller);
Эта сцена одновременно закрепляет элемент, проигрывает анимацию, добавляет класс и отображает индикаторы, демонстрируя мощь ScrollMagic в работе со скроллом.