Библиотека GSAP предоставляет мощные средства для анимации объектов в
JavaScript, включая точное управление движением вдоль траекторий и
поворотами элементов. Три ключевых параметра, которые позволяют тонко
настраивать движение вдоль пути и ориентацию объекта — это
align, alignOrigin и autoRotate.
Они чаще всего используются в сочетании с плагином
MotionPathPlugin, который отвечает за анимацию объектов по
кривым и сложным траекториям.
alignНазначение: Определяет элемент, который будет использоваться в качестве ориентира для выравнивания объекта при движении по траектории.
Тип: CSS-селектор, DOM-элемент или
null.
Принцип работы:
null объект движется строго по траектории
без выравнивания относительно других элементов.autoRotate для
динамического поворота вдоль кривой.Пример использования:
gsap.to(".box", {
duration: 3,
motionPath: {
path: "#curve",
align: "#curve",
alignOrigin: [0.5, 0.5],
autoRotate: true
}
});
В этом примере .box будет двигаться по кривой
#curve, при этом выравнивание будет относительно самой
кривой.
alignOriginНазначение: Определяет точку на элементе, которая
будет совмещена с траекторией при использовании align.
Тип: Массив из двух чисел [x, y], где
x и y задаются в диапазоне от 0 до 1.
Принцип работы:
[0, 0] — верхний левый угол элемента будет привязан к
траектории.[0.5, 0.5] — центр элемента совмещается с траекторией
(значение по умолчанию).[1, 1] — нижний правый угол элемента привязывается к
траектории.Пример использования:
gsap.to(".circle", {
duration: 2,
motionPath: {
path: "#path",
align: "#path",
alignOrigin: [0, 0], // верхний левый угол
autoRotate: true
}
});
Это позволяет точно управлять тем, какая точка объекта следует по кривой, что особенно важно для сложных фигур или анимации объектов с большим визуальным центром тяжести.
autoRotateНазначение: Автоматически поворачивает объект в направлении движения по траектории.
Тип: Булевое значение
true/false или массив с дополнительными
настройками.
Принцип работы:
При значении true GSAP вычисляет угол между текущей
и следующей точкой на пути и поворачивает объект в направлении
движения.
Можно передавать массив вида
[rotationOffset, rotationProp] для более тонкой
настройки:
rotationOffset — угол смещения поворота в
градусах.rotationProp — CSS-свойство для поворота, например
"rotation" или "rotateZ".Пример использования:
gsap.to(".arrow", {
duration: 4,
motionPath: {
path: "#track",
align: "#track",
alignOrigin: [0.5, 0.5],
autoRotate: [90, "rotation"]
}
});
В этом примере стрелка будет следовать по траектории
#track, центр элемента совпадает с траекторией, а угол
поворота дополнительно смещен на 90°.
Эти параметры чаще всего применяются вместе, чтобы объект не только двигался по сложной кривой, но и выглядел естественно с точки зрения ориентации.
Ключевые моменты:
align привязывает объект к траектории или другому
элементу.alignOrigin задает точку на объекте для точного
позиционирования.autoRotate обеспечивает естественный поворот объекта в
направлении движения, повышая реалистичность анимации.Сложный пример:
gsap.to(".plane", {
duration: 6,
motionPath: {
path: "#flightPath",
align: "#flightPath",
alignOrigin: [0.5, 0.5],
autoRotate: [45, "rotation"]
},
ease: "power1.inOut"
});
Здесь самолет плавно движется по траектории #flightPath,
центр самолета точно совпадает с кривой, а угол поворота дополнительно
смещен на 45°, создавая эффект естественного наклона при поворотах.
Эти три параметра являются основой для анимации объектов по траекториям с точным управлением ориентацией. Их грамотное сочетание позволяет создавать сложные динамические сцены, где объекты движутся и вращаются естественно, без ручного расчета углов и позиции на каждом кадре.