ScrollTrigger — это модуль в GSAP, который связывает анимации с прокруткой страницы. Он позволяет запускать эффекты не по таймеру, а когда пользователь достигает определённой точки на странице или меняет положение скролла. Это делает контент интерактивным: элементы появляются, двигаются или меняют вид именно тогда, когда они нужны пользователю.

Что такое ScrollTrigger и зачем он нужен в GSAP

ScrollTrigger — это модуль в GSAP, который связывает анимации с прокруткой страницы. Он позволяет запускать эффекты не по таймеру, а когда пользователь достигает определённой точки на странице или меняет положение скролла.

Это делает контент интерактивным: элементы появляются, двигаются или меняют вид именно тогда, когда они нужны пользователю. Например, текст может выезжать снизу при прокрутке вниз, а фон — менять цвет при приближении к секции.

Без ScrollTrigger вы ограничены таймерами и событиями клика. С ним анимация привязана к позиции элемента в DOM относительно окна просмотра. Это критично для лендингов, где контент должен раскрываться постепенно, а не появляться сразу или исчезать до того, как пользователь его увидел.

Основные принципы работы с прокруткой (pinning, scrubbing, triggers)

Три ключевых понятия: trigger, pin и scrub. Trigger — это точка на странице, где начинается анимация. По умолчанию это верхний край элемента. Вы можете изменить её через параметр start.

Pinning (закрепление) фиксирует элемент в одном месте при прокрутке. Это создаёт эффект параллакса или позволяет показать контент за пределами видимости окна. Например, закрепленная секция с видео на фоне, пока пользователь листает список товаров.

Scrubbing связывает анимацию с ползунком скролла. Анимация идет не от начала до конца автоматически, а реагирует на движение мыши вверх-вниз. Параметр scrub: 1 привязывает прогресс анимации к позиции прокрутки.

Пошаговая настройка первой анимации: от HTML до JS

Шаг 1. Подключение. Включите модуль через gsap.registerPlugin(ScrollTrigger). Это необходимо для использования функций ScrollTrigger.

Шаг 2. Подготовка HTML. Создайте контейнер и элемент, который нужно анимировать. Убедитесь, что у элемента есть уникальные классы или ID.

Шаг 3. Настройка анимации. Используйте gsap.from(), to() или set(). Укажите параметры: duration (длительность), ease (плавность), scrollTrigger.start (когда начать), scrollTrigger.end (где закончить).

Пример кода:

gsap.from('.my-element', {

y: 100,

opacity: 0,

duration: 1,

ease: 'power2.out',

scrollTrigger: {

trigger: '.my-element',

start: 'top center',

toggleActions: 'play none none reverse'

}

});

Критерии выбора типа анимации под задачу пользователя

Выбирайте тип анимации исходя из цели. Если нужно просто показать контент — используйте fade-in (появление). Если нужно удержать внимание на секции — применяйте pinning.

Для длинных страниц с текстом лучше использовать staggered animations (каскадное появление), чтобы не перегружать глаз сразу всем блоком.

Если анимация должна меняться в зависимости от прокрутки, используйте scrubbing. Это подходит для графиков, где данные обновляются при скролле, или для эффекта параллакса с изображением на фоне.

Типичные ошибки при работе с ScrollTrigger и способы их устранения

Ошибка 1: Анимация запускается слишком рано. Решение — настройте start: 'top center' или используйте offset для смещения точки начала.

Ошибка 2: Элемент исчезает после анимации. Проверьте toggleActions. Установите 'play none none reverse', чтобы анимация повторялась при возврате скролла.

Ошибка 3: Анимация не работает на мобильных. Убедитесь, что высота контейнера задана явно (например, через vh или min-height), иначе ScrollTrigger не сможет определить область прокрутки.

Ошибка 4: Конфликт с другими библиотеками. Если используете jQuery или другие плагины скролла, убедитесь, что они не конфликтуют с событиями окна.

Ограничения библиотеки и условия корректной работы

ScrollTrigger работает только внутри контекста прокрутки. Если элемент находится в iframe без возможности скролла, анимация не сработает.

Для корречной работы необходимо задать высоту контейнера или использовать flexbox/grid для определения размеров.

Избегайте слишком сложных цепочек анимаций на одном элементе — это может вызвать задержки при прокрутке на слабых устройствах.

Если вы используете динамически создаваемый контент, убедитесь, что ScrollTrigger инициализируется после добавления элементов в DOM.

Вопросы и ответы

Можно ли использовать ScrollTrigger без GSAP?

Нет. ScrollTrigger — это модуль GSAP. Для работы требуется подключить саму библиотеку GSAP и зарегистрировать этот плагин.

Как сделать анимацию, которая работает только один раз при прокрутке вниз?

Установите toggleActions: 'play none none reverse' и используйте start: 'top center'. Это позволит анимации сработать при первом появлении элемента.

Как отладить ScrollTrigger, если анимация не работает?

Используйте консоль браузера. Включите режим отладки в GSAP (если подключен) или проверьте, правильно ли заданы параметры start и trigger.

gsap.from('.my-element', {
  y: 100,
  opacity: 0,
  duration: 1,
  ease: 'power2.out',
  scrollTrigger: {
    trigger: '.my-element',
    start: 'top center',
    toggleActions: 'play none none reverse'
  }
});