В библиотеке ScrollMagic триггеры служат основой для контроля анимаций и поведения элементов на странице при прокрутке. Триггер — это событие, которое активируется, когда определённая часть документа пересекает заданную точку видимости пользователя. Управление триггерами позволяет синхронизировать анимацию с прокруткой, создавать параллакс-эффекты, фиксировать элементы и запускать сложные последовательности анимаций.
В ScrollMagic триггер определяется с помощью объекта сцены
(Scene), который привязывается к
контроллеру (Controller). Сцена
отслеживает положение целевого элемента относительно окна просмотра и
запускает события при пересечении заданного триггерного элемента
(triggerElement) и триггерной позиции
(triggerHook).
var controller = new ScrollMagic.Controller();
var scene = new ScrollMagic.Scene({
triggerElement: "#myElement", // Элемент, при пересечении которого срабатывает триггер
triggerHook: 0.5, // Позиция на экране: 0 = верх, 1 = низ, 0.5 = центр
duration: 200 // Длительность сцены в пикселях
})
.setClassToggle("#myElement", "active") // Добавление класса при срабатывании
.addTo(controller);
Ключевые параметры триггера:
triggerElement — CSS-селектор или DOM-элемент, с
которого начинается отслеживание. Если не указан, триггер считается
привязанным к документу.triggerHook — числовое значение от 0 до 1, определяющее
вертикальное положение окна, где активируется триггер. Значение 0
соответствует верхней границе окна, 1 — нижней, 0.5 — середине.duration — длина сцены в пикселях. При ненулевом
значении триггер действует на протяжении прокрутки, а не мгновенно.Сцена ScrollMagic может реагировать на несколько типов событий, позволяя создавать гибкие анимации:
start — срабатывает при входе триггера в активную
область.end — срабатывает при выходе триггера из активной
области.enter — активируется при движении вниз к триггеру.leave — активируется при движении вверх от
триггера.progress — обновляется непрерывно в течение всей сцены,
возвращая значение от 0 до 1, соответствующее прогрессу прокрутки.scene.on("enter", function (event) {
console.log("Триггер вошёл в активную область");
});
scene.on("leave", function (event) {
console.log("Триггер покинул активную область");
});
scene.on("progress", function (event) {
console.log("Прогресс сцены: " + event.progress);
});
Одной из самых популярных возможностей ScrollMagic является добавление и удаление классов на элементы в момент срабатывания триггера. Это позволяет интегрировать библиотеку с CSS-анимациями и трансформациями.
var scene = new ScrollMagic.Scene({
triggerElement: "#animateElement",
triggerHook: 0.7
})
.setClassToggle("#animateElement", "visible") // Элемент получает класс .visible при срабатывании
.addTo(controller);
Можно комбинировать несколько сцен для одного элемента, создавая
сложные цепочки анимаций. Использование duration позволяет
плавно изменять состояние, например, через CSS-переходы или анимации,
синхронизированные с прокруткой.
ScrollMagic предлагает инструмент
addIndicators(), который визуализирует
позиции триггеров на экране, облегчая точную настройку сцены:
scene.addIndicators({name: "My Scene"});
Индикаторы показывают:
duration),Это особенно полезно при работе с комплексными макетами и несколькими сценами на одной странице.
Для достижения сложных визуальных эффектов часто требуется несколько триггеров для одного элемента:
var scene1 = new ScrollMagic.Scene({
triggerElement: "#box",
triggerHook: 0.9
})
.setClassToggle("#box", "fadeIn")
.addTo(controller);
var scene2 = new ScrollMagic.Scene({
triggerElement: "#box",
triggerHook: 0.1
})
.setClassToggle("#box", "fadeOut")
.addTo(controller);
В этом примере элемент сначала постепенно появляется, когда триггер достигает нижней части окна, и исчезает, когда достигает верхней.
Использование свойства duration в сочетании с триггером
позволяет создавать прокручиваемые анимации, где
прогресс анимации напрямую связан с положением полосы прокрутки:
var tween = TweenMax.to("#scrollBox", 1, {x: 500}); // GSAP-анимация
var scene = new ScrollMagic.Scene({
triggerElement: "#scrollBox",
duration: 300
})
.setTween(tween)
.addTo(controller);
Здесь анимация перемещает элемент вправо на 500 пикселей в течение
всей длины сцены (300px прокрутки). Значение progress сцены
динамически управляет позицией элемента, создавая плавную реакцию на
движение пользователя.
Триггеры в ScrollMagic — это мощный инструмент для синхронизации
визуальных эффектов с прокруткой. Управление параметрами
triggerElement, triggerHook и
duration позволяет точно настраивать момент активации
анимации. События enter, leave,
start, end и progress дают полное
управление поведением элементов. Комбинация нескольких триггеров и
интеграция с CSS или GSAP анимациями обеспечивает создание динамических,
интерактивных интерфейсов.
Правильная визуализация триггеров через addIndicators()
облегчает настройку сложных сцен и позволяет быстро проверять
корректность работы каждой анимации на странице.