GSAP (GreenSock Animation Platform) предоставляет широкие возможности для создания плавной анимации, а InertiaPlugin позволяет реализовать физически правдоподобное инерционное движение объектов. Этот плагин особенно полезен для интерактивных интерфейсов, перетаскиваемых элементов и сложных анимаций, где необходимо имитировать замедление, трение и естественное скольжение.
InertiaPlugin не включён в стандартный пакет GSAP и требует отдельного подключения. Обычно это делается через:
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/InertiaPlugin.min.js"></script>
После подключения плагин автоматически регистрируется и становится доступен для использования в анимациях.
gsap.to("#box", {
x: 500,
duration: 2,
inertia: { velocity: 200, resistance: 50 }
});
velocity — начальная скорость (px/сек).resistance — коэффициент сопротивления, замедляющий
движение (чем выше значение, тем быстрее объект останавливается).Draggable.create("#ball", {
type: "x,y",
inertia: true
});
inertia: true активирует встроенную инерционную анимацию
с учетом текущей скорости перетаскивания и сопротивления.
resistance — сила трения, уменьшающая скорость.min / max — ограничения по движению,
например границы контейнера.autoKill — автоматическая остановка анимации, если
объект пересекает заданные пределы.gsap.to("#circle", {
x: 800,
inertia: {
velocity: 400,
resistance: 100,
min: 0,
max: 800,
autoKill: true
}
});
let tl = gsap.timeline();
tl.to("#square", { x: 300, duration: 1 })
.to("#square", {
inertia: { velocity: 500, resistance: 80 },
duration: 3
});
resistance под интерфейс:
для UI-элементов обычно используют значения 50–200, для игровых объектов
— более динамичные.min и max, иначе объект может уйти за пределы
видимой области.velocity.let container = document.querySelector(".scroll-container");
Draggable.create(container, {
type: "y",
inertia: true
});
let carousel = document.querySelector(".carousel");
Draggable.create(carousel, {
type: "x",
bounds: { minX: -1000, maxX: 0 },
inertia: true
});
gsap.to("#ball", {
x: 600,
inertia: { velocity: 300, resistance: 50 },
rotation: 360
});
Здесь движение сопровождается вращением объекта, создавая эффект катящегося шарика.
Использование InertiaPlugin в GSAP открывает возможность создавать анимации, которые ощущаются естественно и динамично, имитируя физическое поведение объектов с учетом скорости, трения и сопротивления.