В ScrollMagic триггер представляет собой событие, которое срабатывает, когда определённый элемент на странице пересекает заданную точку в окне просмотра (viewport). Эти события управляются объектами Scene, которые можно рассматривать как ядро любой анимации или интерактивного эффекта на скролле.
Ключевые параметры Scene, влияющие на триггеры:
triggerElement — DOM-элемент, относительно которого
определяется момент срабатывания.triggerHook — положение точки срабатывания триггера,
выраженное в долях высоты окна (0 — верх, 0.5
— центр, 1 — низ).duration — длина сцены, определяющая, как долго она
считается активной (в пикселях или проценте от высоты).ScrollMagic предоставляет встроенные инструменты для визуализации триггеров, что особенно полезно при сложных анимациях и длинных страницах:
addIndicators() Метод добавляет визуальные индикаторы на страницу, показывая позицию триггера и продолжительность сцены.
var controller = new ScrollMagic.Controller();
var scene = new ScrollMagic.Scene({
triggerElement: "#myElement",
triggerHook: 0.5,
duration: 300
})
.addIndicators({name: "scene 1"})
.addTo(controller);
Ключевые свойства индикаторов:
loglevel ScrollMagic позволяет включить
подробное логирование событий сцены через loglevel для
контроллера.
var controller = new ScrollMagic.Controller({loglevel: 3});
Значения loglevel:
Каждая сцена может реагировать на набор событий:
enter — сцена активирована при пересечении
триггером.leave — сцена деактивирована при выходе триггера за
пределы.start / end — момент начала или окончания
сцены.progress — изменение прогресса сцены в диапазоне
0–1.Пример привязки обработчиков событий:
scene.on("enter leave progress", function(event) {
console.log(event.type, event.scrollDirection, event.progress);
});
Особенности:
scrollDirection показывает направление скролла
(FORWARD или REVERSE).progress полезен для тонкой настройки анимаций в
зависимости от позиции скролла.При работе с динамическим контентом часто возникает необходимость
точно подстроить triggerHook или
triggerElement. Подходы:
triggerHook: 0.25 срабатывает на четверти высоты экрана,
что удобно для эффектов, запускаемых до попадания элемента в центр.Для комплексных макетов с фиксированными шапками или боковыми панелями индикаторы помогают визуально проверить, не смещён ли триггер относительно фактической видимой области.
Если несколько сцен используют один и тот же
triggerElement, важно различать их по
triggerHook и duration. При наложении
сцен:
duration недостаточна.Использование метода .reverse(false) позволяет отключить
обратный запуск анимации, что полезно для элементов, которые должны
активироваться однократно.
addIndicators() на стадии разработки,
удалять для продакшн-кода.enter, leave и
progress для мониторинга работы анимаций.triggerHook для сложных
последовательных анимаций, чтобы каждая сцена запускалась в нужный
момент.triggerElement
должен быть в DOM при создании сцены. Если элемент динамически
добавляется, сцену нужно инициализировать после вставки элемента.triggerHook — небольшие
значения запускают триггер слишком рано, большие — слишком поздно.
Визуальные индикаторы помогают подобрать оптимальное значение.duration
сцена считается мгновенной, прогресс всегда 0 или 1, что может привести
к неожиданным эффектам при работе с анимациями, чувствительными к
прогрессу.Эффективная отладка триггеров ScrollMagic сочетает визуальные индикаторы, логирование событий и точную настройку параметров сцены, что позволяет строить плавные и предсказуемые скролл-анимации даже на сложных страницах.