В ScrollMagic триггеры являются ключевыми точками, которые определяют момент срабатывания анимации или события на странице при прокрутке. Основным элементом управления триггерами является объект Scene. Создание сцены включает в себя установку triggerElement, triggerHook и опционально duration, которые управляют точкой начала, расположением триггера относительно окна и длиной действия сцены.
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger", // элемент, при достижении которого срабатывает сцена
triggerHook: 0.5, // позиция триггера (0 — верх, 1 — низ, 0.5 — середина)
duration: 200 // длина действия сцены в пикселях
});
Для контроля триггеров используются события сцены:
scene.on("enter leave", function(event) {
console.log("Событие:", event.type, "позиция:", event.scrollDirection);
});
События позволяют отлаживать триггеры, проверять их позиции и
корректно привязывать анимации к прокрутке. Для визуальной проверки
можно использовать addIndicators, подключаемый через
плагин debug.addIndicators.js:
scene.addIndicators({
name: "Тест триггера",
colorStart: "#FF0000",
colorEnd: "#00FF00",
indent: 10
});
Это позволяет видеть на странице реальные позиции начала и конца сцены, а также направление срабатывания.
Сцены можно объединять и проверять их последовательное срабатывание. Для этого создается несколько объектов Scene с разными triggerElement или triggerHook:
var scene1 = new ScrollMagic.Scene({ triggerElement: "#section1" }).addTo(controller);
var scene2 = new ScrollMagic.Scene({ triggerElement: "#section2" }).addTo(controller);
scene1.on("enter", () => console.log("Секция 1 активна"));
scene2.on("enter", () => console.log("Секция 2 активна"));
Использование такого подхода позволяет создавать сложные анимационные цепочки, где триггеры проверяются независимо и срабатывают только в нужный момент.
Иногда требуется динамически определить положение триггера. ScrollMagic предоставляет методы сцены:
triggerHook и
triggerElement.console.log("Текущий оффсет сцены:", scene.scrollOffset());
console.log("Позиция триггера:", scene.triggerPosition());
Для тестирования триггеров важно уметь включать и отключать сцены:
scene.enabled(false); // отключение сцены
scene.enabled(true); // повторное включение
Это позволяет временно игнорировать триггер или отключить анимацию, не удаляя сцену полностью.
duration.enter и
leave показывают, когда триггер реально сработал.window.innerHeight положение триггера меняется, особенно
для triggerHook.После проверки триггеров их можно привязывать к библиотекам анимаций, например GSAP, чтобы сцена запускала плавные переходы:
var tween = gsap.to("#animate", { x: 400, duration: 1 });
scene.setTween(tween);
Проверка триггеров позволяет убедиться, что анимация начнется именно в момент пересечения элемента с заданной точкой на экране, а не раньше и не позже.
ScrollMagic отслеживает направление прокрутки через свойство
event.scrollDirection:
"FORWARD" — прокрутка вниз или вправо."REVERSE" — прокрутка вверх или влево.Это позволяет создавать интерактивные эффекты, реагирующие на направление движения:
scene.on("enter leave", function(e) {
if(e.scrollDirection === "FORWARD") {
console.log("Движение вниз — триггер сработал");
} else {
console.log("Движение вверх — триггер сработал");
}
});
Использование таких проверок делает сцены адаптивными и управляемыми в сложных анимационных схемах.