ScrollMagic предоставляет удобный механизм управления CSS-классами на элементах страницы в зависимости от положения прокрутки. Ключевым компонентом здесь является Scene, который позволяет задать триггер и управлять поведением элементов при достижении определённой позиции на странице.
Для добавления класса используется метод
.setClassToggle(). Он принимает два аргумента:
Пример базового использования:
// Создание контроллера ScrollMagic
var controller = new ScrollMagic.Controller();
// Создание сцены
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger", // элемент, при прокрутке до которого срабатывает сцена
duration: 200 // длина сцены в пикселях, на протяжении которой класс остаётся активным
})
.setClassToggle("#animateMe", "active") // добавление класса
.addTo(controller); // добавление сцены в контроллер
В этом примере при достижении элемента #trigger класс
active добавляется к элементу #animateMe и
остаётся активным в течение 200 пикселей прокрутки.
Параметр duration определяет, как долго
класс будет оставаться активным. Если duration равен
0, класс будет добавлен только в момент триггера, а затем
сразу удалён, когда элемент выйдет из видимой области.
Пример:
var scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 0 // мгновенное добавление класса
})
.setClassToggle("#animateMe", "highlight")
.addTo(controller);
Такой подход полезен для кратких эффектов или анимаций, которые не должны зависеть от длины прокрутки.
Можно добавлять разные классы к разным элементам через несколько
вызовов .setClassToggle() или создавать несколько сцен для
одного элемента. Пример с разными элементами:
new ScrollMagic.Scene({ triggerElement: "#section1" })
.setClassToggle("#box1", "visible")
.addTo(controller);
new ScrollMagic.Scene({ triggerElement: "#section2" })
.setClassToggle("#box2", "visible")
.addTo(controller);
При этом каждый элемент получает свой собственный контроль над классами без взаимного влияния.
Добавление класса часто используется совместно с CSS-анимациями. Например, в CSS можно определить анимацию:
#animateMe {
opacity: 0;
transform: translateY(50px);
transition: all 0.5s ease-out;
}
#animateMe.active {
opacity: 1;
transform: translateY(0);
}
При активации сцены ScrollMagic автоматически добавит класс
active, и элемент плавно проявится с анимацией.
ScrollMagic предоставляет события сцены, которые позволяют отслеживать изменения состояния и динамически управлять классами:
enter — сцена активируется.leave — сцена деактивируется.start и end — начало и конец сцены.Пример динамического добавления классов через событие:
scene.on("enter", function () {
document.querySelector("#animateMe").classList.add("in-view");
});
scene.on("leave", function () {
document.querySelector("#animateMe").classList.remove("in-view");
});
Такой подход позволяет гибко управлять классами, независимо от
.setClassToggle().
Если несколько сцен управляют одним и тем же элементом, необходимо учитывать порядок их срабатывания. ScrollMagic применяет последний добавленный класс в приоритет. Для сложных эффектов рекомендуется разделять сцены по триггерным элементам или использовать разные CSS-классы для каждого эффекта.
.setClassToggle() с CSS-переходами для
плавной анимации.duration, чтобы класс не исчезал
преждевременно или не оставался слишком долго.Добавление классов с помощью ScrollMagic является мощным инструментом для создания интерактивных прокруток и анимаций, обеспечивая гибкость и простоту управления визуальными эффектами без необходимости вручную отслеживать положение элементов на странице.