ScrollMagic — это мощная библиотека для управления анимациями и эффектами при прокрутке страницы. Одной из ключевых возможностей является создание параллакса, когда элементы движутся с разной скоростью относительно прокрутки, создавая глубину и динамику интерфейса.
Параллакс в ScrollMagic строится на трёх базовых принципах:
Scene, который
отслеживает момент входа или выхода элемента в видимую область:var controller = new ScrollMagic.Controller();
var scene = new ScrollMagic.Scene({
triggerElement: "#section1",
duration: 500, // продолжительность сцены в пикселях
triggerHook: 0.5 // точка срабатывания (0 — верх экрана, 1 — низ)
})
.setTween("#element", {y: 200, ease: Linear.easeNone}) // анимация движения
.addTo(controller);
triggerElement — элемент, относительно которого
отслеживается скролл.duration — длина анимации; чем больше, тем плавнее
перемещение элемента.triggerHook — момент срабатывания сцены на экране.var tweenLayer1 = TweenMax.to("#layer1", 1, {y: -100, ease: Linear.easeNone});
var tweenLayer2 = TweenMax.to("#layer2", 1, {y: -50, ease: Linear.easeNone});
new ScrollMagic.Scene({
triggerElement: "#parallaxSection",
duration: "100%"
})
.setTween(tweenLayer1)
.addTo(controller);
new ScrollMagic.Scene({
triggerElement: "#parallaxSection",
duration: "100%"
})
.setTween(tweenLayer2)
.addTo(controller);
#layer1 и #layer2 двигаются с
разной амплитудой.duration: "100%" позволяет сцена длиться
столько, сколько длится видимая часть секции, обеспечивая
плавность параллакса.TimelineMax или TimelineLite, которые затем
привязываются к сцене ScrollMagic:var timeline = new TimelineMax();
timeline
.to("#layer1", 1, {y: -150, ease: Power1.easeInOut})
.to("#layer2", 1, {y: -75, ease: Power1.easeInOut}, 0)
.to("#layer3", 1, {y: -50, ease: Power1.easeInOut}, 0);
new ScrollMagic.Scene({
triggerElement: "#parallaxSection",
duration: "200%"
})
.setTween(timeline)
.addTo(controller);
Timeline позволяет управлять сложными
последовательностями и точнее регулировать амплитуду и скорость
движения.transform: translate3d вместо
top/left Для плавной анимации рекомендуется
трансформировать элементы через translate3d, так как это
задействует аппаратное ускорение и уменьшает лаги:.layer {
transform: translate3d(0, 0, 0);
}
Минимизация числа одновременно анимируемых элементов Если на странице много слоёв, анимация может подтормаживать. Оптимально использовать 2–3 ключевых слоя для параллакса.
Отслеживание позиции с помощью triggerHook и
duration Подбор оптимальных значений позволяет
контролировать начало и конец движения, делая эффект
естественным.
Использование pin для фиксации
элементов Иногда требуется зафиксировать элемент на экране на
время сцены:
new ScrollMagic.Scene({
triggerElement: "#section2",
duration: 400
})
.setPin("#pinnedElement")
.addTo(controller);
Это создаёт эффект, когда слой остаётся на месте, а другие элементы скроллятся мимо, усиливая ощущение глубины.
Linear.easeNone) для базового
параллакса.ScrollMagic позволяет создавать динамический и отзывчивый параллакс, полностью контролируя:
triggerElement,
triggerHook, duration)Timelinepin для усиления глубиныЭти инструменты делают ScrollMagic одной из наиболее удобных библиотек для параллакс-анимации в веб-интерфейсах, позволяя создавать эффектные страницы с минимальными усилиями.