ScrollMagic — это мощная библиотека для создания интерактивных анимаций на основе прокрутки страницы. В основе работы лежит концепция сцены (Scene) и контроллера (Controller). Контроллер отслеживает прокрутку, сцены определяют, какие действия должны выполняться при достижении определённой позиции на странице.
// Создание контроллера
var controller = new ScrollMagic.Controller();
Контроллер является обязательным элементом для работы ScrollMagic. Без него сцены не будут активироваться. Обычно создают один контроллер для всей страницы, чтобы управлять всеми сценами централизованно.
Сцена задаёт границы активации анимации: triggerElement, duration и offset.
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger", // Элемент, при котором сцена активируется
duration: 200, // Длина сцены в пикселях прокрутки
offset: 50 // Смещение относительно начала элемента
});
Для анимации обычно используют библиотеку GSAP, но ScrollMagic
поддерживает и другие способы управления стилями. С помощью метода
.setTween() можно привязать анимацию к сцене:
scene.setTween("#animate", {opacity: 1, y: -50, duration: 1});
Анимация будет проигрываться в течение всей длины сцены. Если duration сцены равна нулю, анимация проиграется мгновенно при активации.
Чтобы сцена начала работать, её необходимо добавить в контроллер:
scene.addTo(controller);
После добавления сцены в контроллер ScrollMagic автоматически отслеживает прокрутку и запускает действия сцены. Несколько сцен могут использовать один и тот же контроллер, что позволяет строить комплексные скролл-анимации.
ScrollMagic позволяет добавлять или удалять CSS-классы при активации
сцены с помощью метода .setClassToggle():
scene.setClassToggle("#animate", "visible");
Это удобно для простых анимаций на CSS, например, плавное появление элементов или изменение их стилей при скролле.
Сцены поддерживают несколько событий, которые можно использовать для точного контроля анимации:
scene.on("enter", function(event) {
console.log("Сцена активирована");
});
scene.on("leave", function(event) {
console.log("Сцена деактивирована");
});
scene.on("progress", function(event) {
console.log("Прогресс сцены:", event.progress);
});
Эти события дают возможность реализовать динамическое управление анимацией и реакцию на прокрутку без привязки к CSS.
true.
Определяет, должна ли сцена проигрываться в обратном направлении при
прокрутке вверх.true, анимация
плавно изменяется при изменении прогресса.0 — выключено, 3 — максимум).Пример с дополнительными параметрами:
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 300,
offset: 100,
reverse: true
});
scene.setTween("#animate", {opacity: 1, x: 100, duration: 1, ease: "power1.inOut"});
scene.addTo(controller);
ScrollMagic.Controller).ScrollMagic.Scene) с параметрами
triggerElement, duration и
offset..setTween() или
CSS-класс через .setClassToggle().enter,
leave, progress)..addTo(controller)).Эта структура является фундаментом всех скролл-анимаций в ScrollMagic и позволяет создавать как простые, так и сложные интерактивные эффекты.