1. Главная
  2. Блог
  3. Сайты с анимацией

Замедляет ли анимация сайт? Влияние на Core Web Vitals

Само наличие анимации не делает сайт медленным. Она ухудшает LCP, INP и CLS по трём конкретным причинам, и у каждой есть решение.

ASFARI digital6 мин чтенияОктябрь 2026

Стеклянные песочные часы с салатовым песком рядом с розовой игрушечной гоночной машиной

Замедляет ли анимация сайт? Сама по себе - нет. Грамотно сделанное плавное появление или раскрытие элемента при прокрутке почти не требует ресурсов. Сайт тормозит из-за того, как реализовано движение: заголовок скрыт до загрузки JavaScript, без загрузки 3D-кода страница не может отобразиться, обработчики прокрутки занимают основной поток, а анимация меняет расположение элементов. Каждая из этих ошибок ухудшает свой показатель Core Web Vitals.

Разберём, как анимация ухудшает LCP, INP и CLS и что сделать, чтобы показатели оставались в зелёной зоне.

Три показателя, которые измеряет Google

Google оценивает Core Web Vitals по 75-му процентилю реальных загрузок страниц, отдельно для мобильных устройств и компьютеров.

Диаграмма пороговых значений Core Web Vitals для LCP, INP и CLS
Диапазоны «хорошо», «нужно улучшить» и «плохо» для трёх показателей Core Web Vitals.
Показатель Хорошо Плохо Что измеряет
LCP (Largest Contentful Paint) ≤ 2,5 с > 4 с Когда появляется основной контент
INP (Interaction to Next Paint) ≤ 200 мс > 500 мс Как быстро страница реагирует на касания, клики и нажатия клавиш
CLS (Cumulative Layout Shift) ≤ 0.1 > 0.25 Насколько сильно скачет расположение элементов

Пороги взяты со страниц web.dev о LCP, INP и CLS. В марте 2024 года INP заменил First Input Delay в составе Core Web Vitals.

Как анимация ухудшает каждый показатель

LCP: невидимый заголовок

Типичная ошибка: заголовок на первом экране сначала имеет opacity: 0 и плавно появляется после загрузки GSAP. Chrome не учитывает элементы с opacity 0 как кандидатов на LCP, поэтому показатель фиксируется только после завершения появления. Вступительная анимация длительностью 1,2 секунды может добавить к LCP до 1,2 секунды сверх времени загрузки скрипта.

Первый экран с 3D требует ещё больше ресурсов. Utsubo отмечает, что в сцене на Three.js элементом LCP обычно становится canvas, а одно ядро Three.js занимает около 600 KB после минификации. С вспомогательными библиотеками и моделью .glb объём превышает 3 MB.

INP: занятый основной поток

INP учитывает только клики, касания и нажатия клавиш. Прокрутка и наведение не измеряются. Поэтому анимация при прокрутке не ухудшает INP напрямую, но это делает JavaScript, который ею управляет. Если обработчики прокрутки, библиотека плавного скролла и цикл WebGL одновременно претендуют на основной поток, нажатие «В корзину» ждёт своей очереди. Hon Tran называет INP показателем, по которому сайты с активной анимацией чаще всего не проходят проверку.

CLS: анимация неподходящего свойства

Анимация height, width, top или margin сдвигает соседние элементы и учитывается как изменение макета. По руководству web.dev по CLS, изменения через CSS transform так не учитываются. Есть нюанс: сдвиги в течение 500 мс после касания или клика исключаются из расчёта, а прокрутка таким действием не считается. Сдвиг от раскрывающегося при прокрутке блока-аккордеона, который толкает контент вниз, полностью учитывается в CLS.

Семь правил: как сохранить скорость сайта с анимацией

  1. Анимируйте только transform и opacity. Используйте translate вместо top/left, scale вместо width/height, а для раскрытия - clip-path. Параметры GSAP x и y преобразуются в transform.
  2. Сначала отдавайте первый экран в HTML. Заголовок должен быть полностью видимым уже в серверном HTML. Анимируйте второстепенные элементы либо начинайте анимацию из видимого состояния.
  3. Загружайте тяжёлую анимацию отложенно. Подключайте Three.js и сложные последовательности после события load либо при появлении в области просмотра. До этого показывайте статичную заставку.
  4. Заранее выделяйте место. Задавайте width/height или aspect-ratio для изображений, видео и canvas. Не анимируйте переход от height: 0 к auto; резервируйте место через min-height.
  5. Используйте один цикл анимации. Запускайте обновления Lenis и ScrollTrigger из одного вызова requestAnimationFrame и выполняйте операции чтения DOM одной группой перед операциями записи.
  6. Ставьте на паузу то, чего посетитель не видит. Останавливайте циклы WebGL за пределами экрана через IntersectionObserver. Применяйте will-change лишь непосредственно перед анимацией, затем сбрасывайте его.
  7. Проверяйте на Android среднего класса. Как минимум включите в DevTools замедление CPU в 4 раза и проверьте настоящий телефон. Ноутбук на чипе серии M создаст ложное впечатление о скорости.

Правила 2 и 3 важны и для позиций в поиске: подробнее - в статье «SEO для анимированных сайтов». Для сцен с 3D в реальном времени есть руководство по производительности 3D-сайтов, где разбираем текстуры, сжатие Draco и вызовы отрисовки.

Как выглядит аудит анимации

При аудите сайта мы проверяем влияние каждой анимации на все три показателя. Одной общей оценкой Lighthouse дело не ограничивается.

Пример отчёта об аудите анимации: показатели скорости, выявленные проблемы, их серьёзность и способы исправления
Пример структуры аудита: показатели, выявленные проблемы, их серьёзность и способы исправления. Данные условные, это не результат клиентского проекта.

Два замечания об измерениях:

  • Лабораторные и реальные данные. Как отмечает Hon Tran, Lighthouse показывает Total Blocking Time, а не реальный INP. На панели Performance ищите длительные задачи более 50 мс, затем сверяйте результат с данными реальных посещений.
  • Реальные данные обновляются с задержкой. CrUX от Google использует 75-й процентиль данных реальных пользователей за 28 дней, поэтому исправление будет видно в Search Console через несколько недель. Собирайте собственные измерения библиотекой web-vitals (onLCP, onINP, onCLS).

Скорость и доступность связаны

Исправления, ускоряющие анимацию, обычно делают её комфортнее. Если учитывать prefers-reduced-motion и вместо движения показывать конечное состояние, для этих пользователей уменьшится нагрузка на основной поток. Дизайн таких вариантов разбираем в руководстве по доступной анимации на сайте.

Частые вопросы

Ухудшает ли GSAP показатели Core Web Vitals?

Сам по себе нет. Анимация transform через GSAP требует мало ресурсов. Проблемы возникают, если до загрузки библиотеки скрыт LCP-контент или если в одном потоке работает много анимационных последовательностей, связанных с прокруткой.

Замедляет ли плавная прокрутка сайт?

Она может ухудшать INP, если запускает собственный цикл анимации параллельно с другими. Используйте один общий цикл и тестируйте на телефонах среднего класса.

Как проверить, тормозит ли сайт из-за анимации?

Запишите профиль Performance в Chrome DevTools с замедлением CPU в 4 раза. Найдите длительные задачи более 50 мс и сравните с данными реальных посещений в Search Console.

Источники

НОВЫЙ ПРОЕКТ

Расскажите
о задаче

Что нужно?

Заявку получим на hello@asfari.digital. Ответим в течение 24 часов.

    Подробнее об услуге ПРИМЕР ПРОЕКТА