GSAP (GreenSock Animation Platform) предоставляет мощный инструмент для управления анимациями в браузере, включая поддержку интерактивного перетаскивания элементов. Одной из ключевых возможностей является возможность управлять свойствами x, y и rotation, создавая плавные и отзывчивые анимации.
Для реализации перетаскивания элемента по горизонтали и вертикали
используется плагин Draggable. Он позволяет ограничить
движение элемента конкретными осями и контролировать поведение при
взаимодействии пользователя.
gsap.registerPlugin(Draggable);
Draggable.create(".box", {
type: "x,y", // разрешение перемещения по обеим осям
bounds: ".container", // ограничение движения контейнером
inertia: true, // добавление эффекта инерции
edgeResistance: 0.65, // сопротивление при достижении края
onDrag: function() {
console.log("Текущие координаты:", this.x, this.y);
}
});
Ключевые моменты:
"x", "y", "x,y"). Можно
ограничить движение одной осью.Управление вращением элемента (rotation) становится
особенно полезным для создания интерактивных интерфейсов с эффектом
«крутящегося диска» или элементов, реагирующих на движение мыши.
Draggable.create(".wheel", {
type: "rotation", // перетаскивание с вращением
bounds: { minRotation: 0, maxRotation: 360 }, // ограничение вращения
inertia: true,
onDrag: function() {
console.log("Текущий угол:", this.rotation);
}
});
Особенности:
GSAP поддерживает комбинацию различных типов перетаскивания. Например, можно одновременно двигать элемент по оси X и вращать его при перемещении.
Draggable.create(".interactive", {
type: "x,rotation",
bounds: { minX: 0, maxX: 500, minRotation: -45, maxRotation: 45 },
inertia: true,
onDrag: function() {
gsap.to(".interactive", { rotation: this.rotation });
}
});
Преимущества:
Инерция при перетаскивании делает движение более реалистичным. GSAP использует встроенный физический движок, который учитывает скорость и направление последнего движения пользователя.
Draggable.create(".draggable", {
type: "x,y",
inertia: {
resistance: 20, // сопротивление замедления
minVelocity: 50 // минимальная скорость для инерции
}
});
Ключевые параметры:
Draggable прекрасно интегрируется с gsap.timeline(). Это
позволяет создавать цепочки анимаций, которые реагируют на движение
пользователя.
const tl = gsap.timeline({ paused: true });
tl.to(".box", { x: 300, duration: 1 })
.to(".box", { rotation: 180, duration: 0.5 });
Draggable.create(".box", {
type: "x",
onDrag: function() {
tl.progress(this.x / 300);
}
});
Эффект: положение элемента по оси X напрямую управляет прогрессом анимации в Timeline, что открывает возможности для интерактивных презентаций и интерфейсов.
"x",
"y", "x,y", "rotation" или их
комбинации.bounds
обеспечивает контроль за перемещением и вращением.onDrag,
onRelease, onThrowUpdate позволяют
взаимодействовать с приложением в реальном времени.Эти инструменты обеспечивают гибкость и контроль при создании интерактивных анимаций с точным управлением перемещением и вращением элементов.