GSAP (GreenSock Animation Platform) предоставляет расширенные возможности для анимации элементов SVG, позволяя комбинировать разные эффекты и создавать сложные динамические сцены. SVG, благодаря своей векторной природе, идеально подходит для масштабируемой графики и интерактивной анимации, а GSAP позволяет управлять отдельными атрибутами SVG, преобразованиями и стилями в реальном времени.
GSAP предоставляет удобные методы для работы с атрибутами SVG, такими
как x, y, width,
height, rx, ry,
stroke-dasharray, stroke-dashoffset и другими.
Атрибуты можно анимировать так же легко, как CSS-свойства:
gsap.to("#circle", { duration: 2, attr: { cx: 200, cy: 150, r: 50 } });
В этом примере круг с идентификатором circle плавно
перемещается в новую позицию и изменяет радиус. Атрибут
attr позволяет изменять любую SVG-свойство без
необходимости использовать сложные расчёты через CSS или
трансформации.
GSAP поддерживает комбинированные трансформации: перемещение,
вращение, масштабирование и наклон. Для SVG это особенно важно, так как
трансформации часто требуют работы с transform
атрибутом:
gsap.to("#rect", {
duration: 2,
x: 100,
y: 50,
rotation: 45,
scale: 1.5,
transformOrigin: "50% 50%"
});
Ключевое свойство transformOrigin определяет точку
вращения и масштабирования. Без правильной установки центра вращения
анимации могут выглядеть некорректно.
Создание эффектов “рисования” линий и контуров SVG осуществляется с
помощью комбинации stroke-dasharray и
stroke-dashoffset. GSAP позволяет плавно изменять эти
параметры:
const path = document.querySelector("#line");
const length = path.getTotalLength();
gsap.set(path, { strokeDasharray: length, strokeDashoffset: length });
gsap.to(path, { duration: 3, strokeDashoffset: 0, ease: "power1.inOut" });
Здесь линия постепенно проявляется, создавая эффект рисования от начала до конца. Комбинируя с другими трансформациями, можно создавать сложные эффекты с вращением и масштабированием при одновременном “рисовании” контура.
GSAP позволяет анимировать не только атрибуты, но и фильтры SVG,
такие как feGaussianBlur, feColorMatrix,
feOffset. Пример плавного размытия:
gsap.to("#blurFilter", { duration: 2, attr: { stdDeviation: 5 } });
Использование фильтров совместно с трансформациями и анимацией обводки позволяет создавать эффекты свечения, пульсации и деформации графики без сложного кода.
GSAP Timeline (gsap.timeline) обеспечивает мощный способ
комбинирования нескольких анимаций. Это особенно полезно для SVG, где
разные элементы могут анимироваться одновременно или
последовательно:
const tl = gsap.timeline({ defaults: { duration: 1 } });
tl.to("#circle", { x: 100 })
.to("#rect", { rotation: 90, scale: 1.2 }, "<")
.to("#line", { strokeDashoffset: 0 }, ">0.5");
Символ < указывает на одновременный старт с
предыдущей анимацией, а >0.5 — задержку перед следующей.
Timeline позволяет гибко комбинировать эффекты движения, вращения,
обводки и фильтров.
GSAP легко интегрируется с другими SVG-инструментами:
filter: blur() и атрибуты SVG через GSAP.stroke-dashoffset.MotionPathPlugin для движения элемента вдоль контура,
комбинируя с вращением и масштабированием.fill и stroke.Использование GSAP с SVG открывает возможности создания интерактивной и живой графики без значительных затрат на производительность. Комбинирование трансформаций, атрибутов, обводки и фильтров позволяет реализовать эффекты, которые ранее требовали сложной ручной работы с SVG и JavaScript.