GSAP (GreenSock Animation Platform) предоставляет мощные средства для анимации DOM-элементов и сложных визуальных эффектов. Одной из ключевых возможностей библиотеки является анимация текста с разбиением его на отдельные символы, слова или строки, что позволяет создавать динамичные и визуально привлекательные эффекты, недоступные при стандартной работе с CSS-анимациями.
GSAP работает с элементами HTML, предоставляя методы для управления
свойствами через gsap.to(), gsap.from(),
gsap.fromTo() и gsap.timeline(). Для анимации
текста с разбиением необходимо сначала преобразовать текст в отдельные
элементы, которые будут анимироваться индивидуально.
Для этого используется плагин SplitText. Он позволяет автоматически разбивать текст на:
SplitText является платным плагином от GreenSock, однако он критически важен для сложных текстовых анимаций. Подключение осуществляется через скрипт в HTML:
<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/SplitText.min.js"></script>
После подключения создаётся объект SplitText для выбранного DOM-элемента:
const mySplitText = new SplitText(".text-element", { type: "words,chars,lines" });
Параметр type определяет способ разбиения. Можно
комбинировать words, chars и
lines в одной строке, чтобы получить более гибкий
контроль.
Разбиение на символы (chars) используется, когда
требуется точная анимация каждой буквы. Это особенно полезно для эффекта
“печатающейся строки” или динамичного появления текста. Пример:
gsap.from(".text-element .char", {
duration: 0.8,
opacity: 0,
y: 50,
stagger: 0.05,
ease: "back.out(1.7)"
});
Ключевые моменты:
.char – класс, автоматически присвоенный каждому
символу SplitText;stagger – задержка между анимациями символов;ease – сглаживание движения, создающее более
естественный эффект.Разбиение на слова (words) позволяет анимировать текст
целыми блоками, а не по буквам, что подходит для эффектов “выцветания”
или “масштабирования” отдельных слов. Пример:
gsap.from(".text-element .word", {
duration: 1,
scale: 0,
opacity: 0,
stagger: 0.2,
ease: "power2.out"
});
Особенности анимации слов:
scale,
rotation, x/y с высокой наглядностью;Разбиение на строки (lines) полезно при анимации больших
абзацев или текстовых блоков с несколькими строками. Каждая строка
становится отдельным контейнером <div> или
<span>, что позволяет управлять вертикальными
сдвигами и эффектами появления текста по строкам:
gsap.from(".text-element .line", {
duration: 1,
y: 100,
opacity: 0,
stagger: 0.3,
ease: "power3.out"
});
Применение строк особенно важно для:
GSAP позволяет комбинировать разбиение по разным уровням, например, строки → слова → символы, и анимировать их в единой последовательности через Timeline:
const tl = gsap.timeline();
tl.from(".text-element .line", { y: 50, opacity: 0, stagger: 0.3, duration: 0.8 })
.from(".text-element .word", { scale: 0, opacity: 0, stagger: 0.1, duration: 0.5 }, "-=0.5")
.from(".text-element .char", { rotationX: 90, opacity: 0, stagger: 0.02, duration: 0.3 }, "-=0.4");
stagger для создания органичного
движения: дробление по времени предотвращает ощущение
“резкости” анимации.ease для разных уровней:
строки могут двигаться плавно (power3.out), слова — более
резко (back.out), символы — с пружинистым эффектом.revert() для
восстановления исходного текста:mySplitText.revert();
gsap.from(".text-element .char", {
scrollTrigger: ".text-element",
y: 50,
opacity: 0,
stagger: 0.05
});
Разбиение текста на символы, слова и строки в GSAP предоставляет
точный контроль над визуальными эффектами. С помощью
SplitText и gsap.timeline() можно создавать
сложные, многослойные анимации текста, сочетающие плавность и драматизм,
что делает веб-интерфейсы более живыми и динамичными.
Сочетание различных уровней разбиения и stagger-параметров позволяет добиться профессионального эффекта, ранее достижимого только через сложные CSS и JavaScript трюки.