ScrollMagic — это библиотека для управления анимациями и событиями
при прокрутке страницы. Основной объект, с которого начинается работа —
ScrollMagic.Controller, который управляет
всеми сценами (ScrollMagic.Scene) на странице. При
инициализации контроллера можно задать ряд важных параметров, влияющих
на поведение всех сцен.
var controller = new ScrollMagic.Controller({
globalSceneOptions: {},
container: window,
vertical: true,
loglevel: 2,
refreshInterval: 100
});
globalSceneOptions — объект с
параметрами, которые автоматически применяются ко всем сценам,
создаваемым через этот контроллер. Позволяет избежать повторного задания
одних и тех же опций для каждой сцены. Примеры свойств:
triggerHook, duration,
offset.
container — определяет элемент,
внутри которого отслеживается прокрутка. По умолчанию —
window. Можно использовать любой блок с прокруткой
(div, section), если требуется анимация внутри
конкретного контейнера.
vertical — булево значение,
задающее направление прокрутки. true — вертикальная
прокрутка, false — горизонтальная. Влияет на расчёт позиции
триггера и продолжительности сцен.
loglevel — уровень логирования:
0 — без логов,1 — только ошибки,2 — предупреждения и ошибки,3 — полное логирование всех событий и состояния
сцен.refreshInterval — интервал в
миллисекундах, с которым ScrollMagic автоматически обновляет позиции
триггеров. Важно при динамическом изменении DOM, например, при подгрузке
контента или изменении размеров элементов.
ScrollMagic.Scene)Сцена (Scene) — это основная единица, которая связывает
позицию прокрутки с анимацией или классами CSS. При создании сцены можно
задать множество параметров, влияющих на её поведение:
var scene = new ScrollMagic.Scene({
triggerElement: "#section1",
triggerHook: 0.5,
duration: 300,
offset: 50,
reverse: true
});
triggerElement — элемент,
относительно которого будет срабатывать сцена. Может быть CSS-селектором
или DOM-элементом. ScrollMagic отслеживает позицию этого элемента внутри
контейнера контроллера.
triggerHook — точка на экране, где
активируется сцена. Значение от 0 (верх экрана) до
1 (низ экрана). По умолчанию 0.5 (середина
экрана).
duration — длина сцены в пикселях
(для вертикальной прокрутки) или в процентах. Определяет, на каком
участке прокрутки будет происходить эффект или анимация. Если указано
0, сцена считается моментальной и срабатывает один раз при
пересечении триггера.
offset — смещение начала сцены
относительно позиции триггера. Например, offset: 100
запустит сцену на 100 пикселей позже, чем положение триггерного
элемента.
reverse — булево значение, которое
определяет, можно ли проигрывать анимацию обратно при прокрутке вверх.
true — сцена активируется в обе стороны, false
— только при прокрутке вниз.
tweenChanges — если используется
анимация с помощью TweenMax или GSAP, этот параметр позволяет обновлять
значения анимации плавно при изменении прокрутки, а не
мгновенно.
loglevel — можно задавать для
каждой сцены отдельно. Позволяет детально отслеживать срабатывания
только конкретной сцены.
enabled — активная сцена
(true) или временно отключена (false).
Позволяет программно управлять сценой без удаления её из
контроллера.
scope — внутренний параметр, редко
используется, указывает, как сцена связана с контроллером, обычно
автоматически определяется при добавлении сцены в контроллер.
После инициализации контроллера и сцены сцена привязывается к
контроллеру с помощью метода .addTo():
scene.addTo(controller);
globalSceneOptions).setTween, анимация
автоматически синхронизируется с прокруткой.Пример с анимацией TweenMax:
var tween = gsap.to("#box", {x: 500, duration: 1});
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 400,
triggerHook: 0.3
})
.setTween(tween)
.addTo(controller);
Здесь движение блока #box на 500 пикселей
синхронизировано с прокруткой от точки triggerHook: 0.3 и
на протяжении 400 пикселей прокрутки.
globalSceneOptions для общих
параметров, чтобы не дублировать настройки для каждой
сцены.window. Это критично для мобильных
интерфейсов и фиксированных блоков.refreshInterval при
динамическом контенте, чтобы позиции триггеров всегда были
актуальны.reverse: false для однократных
анимаций, например, появления текста или изображений при
скролле.loglevel: 3, а в продакшене снижать уровень до
0 для оптимизации.ScrollMagic предоставляет гибкий набор параметров для точного контроля сцены и синхронизации анимаций с прокруткой. Корректная инициализация контроллера и сцены обеспечивает стабильную работу всех анимаций и предотвращает ошибки при динамическом изменении DOM.