ScrollMagic — это мощная библиотека JavaScript, которая позволяет управлять поведением элементов на странице в зависимости от прокрутки. Она облегчает создание сложных анимаций и взаимодействий без глубокого погружения в чистый JavaScript и CSS. Основной принцип работы библиотеки заключается в создании сцен (Scenes) и их привязке к контроллеру (Controller).
// Инициализация контроллера
var controller = new ScrollMagic.Controller();
Контроллер служит «мостом» между сценами и событиями скролла, отслеживая положение прокрутки и активируя сцены при достижении определенных точек.
Сцена — это объект, который описывает, что должно происходить с элементом при прокрутке. Основные параметры:
triggerElement — элемент, при достижении которого
активируется сцена.duration — длина действия сцены (в пикселях или
процентах).offset — смещение точки срабатывания относительно
начала элемента.var scene = new ScrollMagic.Scene({
triggerElement: "#myElement",
duration: 300,
offset: 50
})
.setPin("#myElement") // фиксирование элемента на время сцены
.addTo(controller);
Пояснение: setPin закрепляет элемент на
экране на время сцены, создавая эффект «прилипания» во время прокрутки.
Без setPin сцена может использоваться только для запуска
анимаций или событий.
Для плавной анимации объектов чаще всего используется библиотека GSAP (GreenSock Animation Platform). ScrollMagic позволяет связать сцену с анимацией GSAP, управляя прогрессом анимации синхронно с прокруткой.
var tween = gsap.to("#myElement", { duration: 1, x: 300, rotation: 360 });
var scene = new ScrollMagic.Scene({
triggerElement: "#myElement",
duration: 500
})
.setTween(tween)
.addTo(controller);
Особенности:
setTween автоматически синхронизирует анимацию с
прокруткой.Сцена поддерживает несколько событий, позволяя реагировать на изменение состояния:
start — момент, когда сцена становится активной.end — когда сцена завершается.enter — когда скролл входит в сцену.leave — когда скролл покидает сцену.progress — прогресс сцены от 0 до 1.scene.on("progress", function(event) {
console.log("Прогресс сцены: " + event.progress);
});
Практическое применение: Можно использовать событие
progress для изменения параметров, например, громкости
аудио или прозрачности элемента.
Связка ScrollMagic и аудио позволяет управлять
громкостью динамически. Основная идея — отслеживать
прогресс сцены и преобразовывать его в значение volume для
HTMLAudioElement.
var audio = document.getElementById("myAudio");
var scene = new ScrollMagic.Scene({
triggerElement: "#volumeTrigger",
duration: 500
})
.on("progress", function(event) {
audio.volume = event.progress; // Прогресс от 0 до 1
})
.addTo(controller);
Важные моменты:
Часто применяют визуальный индикатор изменения громкости параллельно с аудиопотоком:
var volumeTween = gsap.to("#volumeBar", { scaleY: 1, transformOrigin: "bottom", ease: "none" });
var scene = new ScrollMagic.Scene({
triggerElement: "#volumeTrigger",
duration: 400
})
.setTween(volumeTween)
.on("progress", function(event) {
audio.volume = event.progress;
})
.setPin("#volumeBar")
.addTo(controller);
scaleY увеличивает визуальный индикатор по
вертикали.transformOrigin: "bottom" заставляет элемент «расти»
снизу вверх.ease: "none" обеспечивает линейную привязку анимации к
прокрутке.ScrollMagic позволяет управлять одновременно несколькими аудиоэлементами, создавая эффект динамической микшировки. Например, плавно включать один трек, одновременно уменьшая громкость другого:
var audio1 = document.getElementById("audio1");
var audio2 = document.getElementById("audio2");
var scene = new ScrollMagic.Scene({
triggerElement: "#mixTrigger",
duration: 600
})
.on("progress", function(event) {
audio1.volume = 1 - event.progress;
audio2.volume = event.progress;
})
.addTo(controller);
Результат: Скролл переключает громкость между двумя треками, создавая эффект кроссфейда без сложной логики.
tweenChanges: true для
динамического обновления анимаций:.setTween(tween, { tweenChanges: true });
event.progress через математические
функции:audio.volume = Math.pow(event.progress, 2); // нелинейное усиление
triggerElement, чтобы плавно изменять
громкость на разных участках страницы.Таким образом, ScrollMagic предоставляет универсальный инструмент для управления элементами и аудио на странице через прокрутку. Контролируя прогресс сцены, можно реализовать сложные интерактивные сценарии: от простого увеличения громкости до многослойных анимаций и микширования звуковых дорожек.