Посимвольная анимация предполагает постепенное появление текста, где каждый символ или группа символов анимируется отдельно. В сочетании с библиотекой ScrollMagic это позволяет создавать эффектные интерактивные заголовки, цитаты или параграфы, которые оживают по мере прокрутки страницы.
Для работы с посимвольной анимацией текст необходимо разбить на
отдельные элементы. Наиболее универсальный способ — использовать
<span> для каждого символа:
<h1 class="animated-text">
<span>A</span><span>n</span><span>i</span><span>m</span><span>a</span><span>t</span><span>i</span><span>o</span><span>n</span>
</h1>
Альтернатива — генерация спанов динамически через Jav * aScript:
const textElement = document.querySelector('.animated-text');
const text = textElement.textContent;
textElement.textContent = '';
text.split('').forEach(char => {
const span = document.createElement('span');
span.textContent = char;
textElement.appendChild(span);
});
Такой подход делает текст полностью управляемым с точки зрения анимации каждого символа отдельно.
ScrollMagic работает через создание сцен
(Scene), которые реагируют на прокрутку и запускают
анимацию при попадании элемента в область видимости. Базовый код
инициализации:
const controller = new ScrollMagic.Controller();
const scene = new ScrollMagic.Scene({
triggerElement: '.animated-text',
triggerHook: 0.8, // триггер срабатывает когда элемент достигает 80% высоты окна
reverse: false // анимация не откатывается при прокрутке вверх
});
Для посимвольной анимации часто используется GSAP. Пример анимации прозрачности и смещения каждого символа:
const spans = document.querySelectorAll('.animated-text span');
const tween = gsap.from(spans, {
opacity: 0,
y: 50,
stagger: 0.05, // задержка между символами
ease: "power2.out"
});
scene.setTween(tween);
scene.addTo(controller);
Ключевые моменты:
stagger задает интервал между запуском анимации каждого
символа.y и opacity создают эффект вылета текста
снизу с постепенным появлением.ease позволяет сгладить движение для более
естественного вида.Можно комбинировать несколько эффектов: смещение, масштаб, вращение и цвет. Пример комплексной анимации:
const tween = gsap.from(spans, {
opacity: 0,
y: 30,
scale: 0.5,
rotation: 10,
color: "#ff0000",
stagger: 0.03,
ease: "back.out(1.7)"
});
scale уменьшает размер при появлении.rotation добавляет легкий поворот символов.color позволяет анимировать цвет текста одновременно с
другими свойствами.Для мобильных устройств и разных размеров экрана рекомендуется использовать:
scene.triggerHook(window.innerWidth < 768 ? 0.9 : 0.8);
Это позволяет контролировать момент срабатывания анимации в зависимости от ширины экрана, делая эффект гармоничным на всех устройствах.
По умолчанию сцены ScrollMagic с reverse: true позволяют
анимации повторяться при прокрутке вверх. Для создания циклических
эффектов:
const scene = new ScrollMagic.Scene({
triggerElement: '.animated-text',
triggerHook: 0.8,
reverse: true
}).setTween(tween).addTo(controller);
Такой подход позволяет создавать интерактивные тексты, которые реагируют на движение страницы, а не только на первый просмотр.
box-shadow,
filter) на каждом символе.will-change: transform, opacity; для
CSS-оптимизации.ScrollMagic.Scene с параметром duration для
создания эффекта “текста, идущего по скроллу”.x или y с разной
скоростью, создавая ощущение глубины.Посимвольная анимация в связке ScrollMagic + GSAP позволяет создавать выразительные и динамичные тексты, реагирующие на прокрутку, с большим контролем над каждым символом, эффектами и синхронизацией движения.