GSAP (GreenSock Animation Platform) предоставляет мощный и гибкий
инструмент для анимации SVG-элементов в браузере. Анимация SVG
отличается от анимации обычных HTML-элементов тем, что она работает не
только с CSS-свойствами, но и с SVG-атрибутами, такими
как d у <path>, cx и
cy у <circle>, points у
<polygon> и другими.
В GSAP для работы с SVG чаще всего используется метод
gsap.to(), который позволяет изменять как CSS-свойства, так
и SVG-атрибуты напрямую через объект attr.
gsap.to("#circle", {
duration: 2,
attr: { cx: 300, cy: 150 },
ease: "power2.inOut"
});
В этом примере изменяются координаты центра круга
<circle>. Ключевой момент: атрибуты SVG
передаются через объект attr, что отличает их от
стандартных CSS-свойств.
<path>Атрибут d у <path> позволяет
создавать сложные кривые и линии. GSAP предоставляет поддержку морфинга
(morphing), который позволяет плавно преобразовывать одну форму в
другую.
gsap.to("#shape", {
duration: 2,
attr: { d: "M10 80 Q 95 10 180 80 T 330 80" },
ease: "power1.inOut"
});
Особенности анимации d:
fill
или stroke.SVG-атрибуты для координат (x, y,
cx, cy) и размеров (width,
height, r) можно анимировать напрямую:
gsap.to("#rect", {
duration: 1.5,
attr: { x: 200, y: 50, width: 150, height: 100 },
ease: "elastic.out(1, 0.3)"
});
Эти анимации плавно изменяют геометрию элементов, при этом не требуется манипулировать transform, что важно для точной работы с SVG.
GSAP позволяет изменять не только геометрию, но и визуальные свойства линии и заливки:
gsap.to("#line", {
duration: 2,
attr: { stroke: "#FF0000", "stroke-width": 5 },
ease: "power2.inOut"
});
Особенности:
stroke-dasharray и stroke-dashoffset
можно создавать эффект “рисования линии”;attr.gsap.from("#path", {
duration: 2,
attr: { "stroke-dashoffset": 1000 },
ease: "linear"
});
Эта техника широко используется для создания эффектов рисования в SVG.
GSAP позволяет комбинировать изменения атрибутов с трансформациями и CSS-свойствами, создавая сложные интерактивные эффекты:
gsap.to("#circle", {
duration: 2,
attr: { cx: 300 },
x: 100,
rotation: 360,
transformOrigin: "50% 50%",
ease: "power1.inOut"
});
В этом примере одновременно анимируются координаты SVG и CSS-трансформации, что обеспечивает плавное и визуально богатое движение.
Для сложных SVG-анимаций GSAP предлагает Timeline, позволяющий строить последовательности с точным контролем времени:
const tl = gsap.timeline({ defaults: { duration: 1, ease: "power1.inOut" } });
tl.to("#circle", { attr: { cx: 300 } })
.to("#circle", { attr: { cy: 150 }, delay: 0.5 })
.to("#circle", { attr: { r: 50 } });
Преимущества использования Timeline:
tl.reverse());attr для атрибутов SVG,
чтобы избежать конфликтов с CSS;stroke-dasharray
и stroke-dashoffset;onComplete, onUpdate).Эта библиотека обеспечивает неограниченные возможности для динамического управления SVG, превращая статичные графические элементы в живые, интерактивные объекты с высокой производительностью.