ScrollMagic предоставляет мощный механизм для анимации элементов страницы в зависимости от прокрутки. Один из наиболее часто используемых эффектов — изменение opacity элементов, что позволяет создавать плавное появление или исчезновение контента при скролле.
Основная концепция ScrollMagic строится на сценах (Scene), которые привязываются к определённым триггерам на странице. Для анимации прозрачности требуется:
var controller = new ScrollMagic.Controller();
triggerElement — элемент, относительно которого
запускается анимацияduration — продолжительность действия анимации (в
пикселях прокрутки)triggerHook — точка срабатывания на экране (0 — верх, 1
— низ, 0.5 — центр)var scene = new ScrollMagic.Scene({
triggerElement: "#section1",
duration: 300,
triggerHook: 0.5
});
scene.setTween("#fadeElement", {opacity: 1});
#fadeElement — целевой элемент, а
{opacity: 1} задаёт конечное состояние прозрачности.opacity: 0.scene.addTo(controller);
Для эффекта плавного появления часто используют начальную прозрачность 0:
#fadeElement {
opacity: 0;
transition: opacity 0.3s ease-out;
}
Анимация через ScrollMagic:
var fadeScene = new ScrollMagic.Scene({
triggerElement: "#section2",
duration: 500,
triggerHook: 0.8
})
.setTween("#fadeElement", {opacity: 1})
.addTo(controller);
duration регулирует скорость изменения
прозрачности: чем больше, тем плавнее эффект.ScrollMagic позволяет создавать групповые анимации, управляя сразу несколькими элементами:
var fadeTween = gsap.timeline();
fadeTween
.to("#fade1", {opacity: 1, duration: 1})
.to("#fade2", {opacity: 1, duration: 1}, "-=0.5") // наложение анимации
.to("#fade3", {opacity: 1, duration: 1}, "-=0.5");
var multiScene = new ScrollMagic.Scene({
triggerElement: "#multiSection",
duration: 600,
triggerHook: 0.5
})
.setTween(fadeTween)
.addTo(controller);
gsap.timeline() позволяет последовательно или с
перекрытием управлять несколькими tween-анимациями.Для исчезновения элемента достаточно задать обратное tween-состояние:
var fadeOutScene = new ScrollMagic.Scene({
triggerElement: "#section3",
duration: 400,
triggerHook: 0.2
})
.setTween("#fadeElement", {opacity: 0})
.addTo(controller);
triggerHook: 0.2.Помимо tween-анимации, ScrollMagic позволяет просто добавлять CSS-классы при активации сцены:
var classScene = new ScrollMagic.Scene({
triggerElement: "#section4",
duration: 300,
triggerHook: 0.6
})
.setClassToggle("#fadeElement", "visible")
.addTo(controller);
И соответствующий CSS:
#fadeElement {
opacity: 0;
transition: opacity 0.5s ease-in-out;
}
#fadeElement.visible {
opacity: 1;
}
duration) напрямую влияет на
скорость изменения прозрачности: короткая длительность — резкий эффект,
длинная — плавное появление.translateY,
scale) можно создавать сложные параллакс-эффекты с
прозрачностью.will-change: opacity в CSS для
GPU-ускорения анимации.display или
visibility, так как они вызывают перерисовку и смещение
элементов.Эти принципы позволяют создавать плавные и отзывчивые скролл-анимации, сохраняя производительность страницы и улучшая визуальное восприятие контента.