GSAP (GreenSock Animation Platform) — мощная библиотека для
управления анимацией в JavaScript, обеспечивающая высокую
производительность и гибкость. Центральным элементом библиотеки является
объект gsap, предоставляющий методы для создания анимаций,
управления временем и кривыми перехода.
Для анимации элемента используется метод gsap.to():
gsap.to(".box", {
duration: 2,
x: 300,
rotation: 360,
opacity: 0.5
});
Ключевые моменты:
duration — длительность анимации в секундах.x, rotation,
opacity) автоматически анимируются от текущего значения до
указанного.gsap.from() позволяет анимировать от заданного
состояния к текущему.gsap.fromTo() объединяет обе концепции: от начального
состояния к конечному.Для комплексных анимаций используется объект
gsap.timeline():
const tl = gsap.timeline({ defaults: { duration: 1 } });
tl.to(".box", { x: 200 })
.to(".box", { y: 100, rotation: 90 })
.to(".box", { scale: 1.5 });
Особенности таймлайнов:
defaults задаёт стандартные параметры для всех анимаций
в таймлайне..from(), .to(),
.fromTo() могут использоваться внутри таймлайна..pause(),
.play(), .reverse(),
.seek().Easing определяет динамику изменения значения во времени. GSAP поддерживает множество кривых, позволяя сделать анимацию естественной.
power1, power2,
power3, power4) — плавные кривые
ускорения/замедления.Пример применения easing:
gsap.to(".box", {
duration: 2,
x: 400,
ease: "bounce.out"
});
Основные моменты:
"easeName.direction", например:
"power2.inOut".in — ускорение в начале, out — замедление
в конце, inOut — комбинация.GSAP поддерживает кривые через CustomEase или функцию
Ease:
gsap.registerPlugin(CustomEase);
CustomEase.create("myEase", "M0,0 C0.126,0.382 0.428,0.608 1,1");
gsap.to(".box", { duration: 2, x: 300, ease: "myEase" });
Для анализа и отладки анимаций GSAP предоставляет плагины и методы:
Использование графиков позволяет увидеть динамику кривой. В сочетании
с CustomEase.visualize() можно получить наглядное
представление движения:
CustomEase.create("easeGraph", "M0,0 C0.42,0 0.58,1 1,1").visualize();
power1.inOut или power2.out для плавного и
предсказуемого движения.back.out
или elastic.out создают ощущение энергии.slowMo
или кастомные кривые обеспечивают естественность.const tl = gsap.timeline({ defaults: { duration: 1.5, ease: "power2.inOut" } });
tl.from(".circle", { scale: 0 })
.to(".circle", { x: 300, rotation: 360, ease: "elastic.out(1, 0.3)" })
.to(".circle", { y: 150, scale: 1.2, ease: "bounce.out" });
Этот подход обеспечивает точный контроль над визуальной выразительностью анимации и позволяет создавать интерфейсы с профессиональным уровнем детализации и плавности.