ScrollMagic позволяет создавать сложные анимации, синхронизированные с прокруткой страницы. Одним из мощных инструментов является анимация элементов по кривой или path, что особенно полезно для эффектов движения объектов, иконок или персонажей вдоль заранее заданного маршрута.
Для реализации анимации по пути чаще всего используют комбинацию ScrollMagic и библиотеки GSAP (GreenSock Animation Platform), так как ScrollMagic сам по себе отвечает за триггеры прокрутки, а GSAP — за анимацию объектов.
Путь движения объекта определяется с помощью SVG path. Пример простого пути в HTML:
<svg width="800" height="600" viewBox="0 0 800 600">
<path id="motionPath" d="M50,300 C200,100 600,500 750,300" stroke="transparent" fill="none"/>
<circle id="object" r="20" fill="red"/>
</svg>
M50,300 — стартовая точка пути.C200,100 600,500 750,300 — кубическая кривизна Безье,
задающая плавное движение.circle#object — объект, который будет двигаться по
пути.Важно, чтобы путь был недоступен визуально, если он
служит только для расчёта координат. Для этого используют
stroke="transparent" или fill="none".
GSAP предоставляет плагин MotionPathPlugin, который позволяет двигать элемент вдоль path:
gsap.registerPlugin(MotionPathPlugin);
gsap.to("#object", {
duration: 1,
motionPath: {
path: "#motionPath",
align: "#motionPath",
autoRotate: true,
alignOrigin: [0.5, 0.5]
}
});
Ключевые параметры:
path — селектор или массив координат для движения.align — выравнивание объекта по пути.autoRotate — автоматическая ориентация объекта по
направлению пути.alignOrigin — точка привязки объекта для правильной
поворачиваемости.Чтобы синхронизировать движение объекта с прокруткой, создается ScrollMagic.Scene и связывается с GSAP-анимацией:
const controller = new ScrollMagic.Controller();
const tween = gsap.to("#object", {
duration: 1,
motionPath: {
path: "#motionPath",
align: "#motionPath",
autoRotate: true,
alignOrigin: [0.5, 0.5]
},
ease: "none"
});
const scene = new ScrollMagic.Scene({
triggerElement: "#trigger",
duration: 1000,
triggerHook: 0
})
.setTween(tween)
.addTo(controller);
Объяснение параметров:
triggerElement — элемент, с которого начинается
анимация.duration — протяженность анимации в пикселях прокрутки.
Чем больше значение, тем медленнее движение.triggerHook — положение триггера на экране
(0 — верх, 1 — низ).setTween — связывает GSAP-анимацию с сценой
ScrollMagic.ScrollMagic позволяет легко добавлять обратную анимацию и визуальные индикаторы:
scene.addIndicators({name: "Path Animation"});
Индикаторы помогают видеть, когда анимация начинается и заканчивается при скролле. Это полезно при отладке сложных path.
ease, можно задавать ускорение и
замедление вдоль пути:gsap.to("#object", {
duration: 1,
motionPath: {
path: "#motionPath",
align: "#motionPath",
autoRotate: true
},
ease: "power1.inOut"
});
delay) или
offset:gsap.to(".objects", {
motionPath: {
path: "#motionPath",
align: "#motionPath",
autoRotate: true
},
stagger: 0.2,
ease: "none"
});
d у path и анимация будет автоматически
подстраиваться:document.querySelector("#motionPath").setAttribute("d", "M50,300 C400,50 400,550 750,300");
gsap.to("#object", {
motionPath: { path: "#motionPath", align: "#motionPath", autoRotate: true },
scale: 1.5,
rotation: 360,
ease: "none"
});
ease: "none" при привязке анимации
к прокрутке, чтобы движение строго соответствовало скроллу.alignOrigin для точной центровки элемента
на пути.Эта методика позволяет создавать плавные, визуально привлекательные эффекты движения объектов вдоль сложных траекторий, синхронизированные с прокруткой страницы, что делает ScrollMagic и GSAP идеальной связкой для интерактивных веб-интерфейсов.