Главная / Блог / Core Web Vitals

Core Web Vitals

Как исправить CLS в 2026 году: остановите прыжки текста, кнопок и форм

CLS отражает неожиданные сдвиги элементов во время жизни страницы. Пользователь собирается нажать «Отправить», но кнопка уезжает из-за баннера; читает цену, а сверху догружается шрифт и текст прыгает. Хорошим ориентиром считается CLS не выше 0,1 на 75-м процентиле. Статья посвящена только визуальной стабильности: скорость показа главного элемента и отзывчивость кликов разбираются отдельно.

Специалисты сравнивают стабильность макета сайта на ноутбуке и печатных прототипах

Краткий вывод

Что важно понять до чтения деталей

  • Размеры медиа известны заранее
  • Fallback шрифта близок по метрикам
  • Баннер не толкает контент
  • Проверяют весь визит, а не первый кадр

01

Что считается неожиданным сдвигом

Браузер фиксирует перемещение видимых элементов между кадрами без ожидаемого действия пользователя. Оценка зависит от доли затронутой области и расстояния перемещения. Сдвиг после клика может не считаться проблемой, если произошел в допустимом окне и логично следует действию. А вот рекламный блок, вставленный сверху через несколько секунд, двигает весь текст без согласия человека.

CLS накапливает наиболее проблемные окна сдвигов на протяжении визита, поэтому ошибка может возникнуть после прокрутки или открытия формы. Короткий лабораторный тест первого экрана не всегда ее видит. Нужны полевые данные и воспроизведение реального сценария: загрузка страницы, баннер cookies, смена шрифта, фильтр, валидация и динамические рекомендации.

02

Зарезервируйте место для изображений и видео

У img и video задают width и height или устойчивое aspect-ratio. Браузер тогда рассчитывает место до загрузки файла и не двигает соседний текст. Значения могут быть адаптивными: CSS меняет фактическую ширину, а соотношение сохраняет высоту. Для карточек каталога полезен единый медиа-контейнер, чтобы вертикальные и горизонтальные фотографии не перестраивали сетку.

Placeholder должен занимать ту же область, что и будущий контент. Если skeleton высотой 120 пикселей заменяется карточкой 300 пикселей, сдвиг останется. У iframe карты, видео и внешнего виджета тоже резервируют минимальную высоту. При ошибке загрузки контейнер не должен внезапно схлопываться и тянуть вверх весь раздел.

03

Настройте загрузку шрифтов

Когда fallback и веб-шрифт имеют разные метрики, строка меняет ширину и переносы после загрузки. Сократите число семейств и начертаний, используйте нужные форматы и preload только для файлов первого экрана. Font-display выбирают вместе с дизайном: быстрый показ системным шрифтом полезен, но замена не должна перестраивать половину страницы.

Подберите fallback, близкий по высоте и ширине, при необходимости используйте CSS-настройки метрик шрифта. Проверьте заголовки с самыми длинными словами и русские символы: локальный тест на латинице не показывает реальную геометрию. Если файл грузится с внешнего домена, соединение и политика кеша тоже влияют на момент подмены.

04

Баннеры, формы и динамические сообщения

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

Сообщения валидации формы резервируют рядом с полем или показывают так, чтобы кнопка не перескакивала под курсором. После отправки состояние меняется предсказуемо: форма не исчезает раньше подтверждения. Динамические отзывы и рекомендации добавляют ниже текущего положения или в подготовленный контейнер. Конверсионный интерфейс выигрывает от стабильности даже сильнее, чем отчет Core Web Vitals.

05

Анимации и клиентский рендер

Анимируйте transform и opacity вместо свойств, которые меняют геометрию потока. Не запускайте hero-блок с нулевой высотой, чтобы затем развернуть его после JavaScript. Серверный и клиентский HTML должны иметь совпадающую структуру и размеры. Ошибка гидратации иногда заменяет целый компонент и вызывает крупный сдвиг.

Поздняя персонализация, A/B-тест и геолокация тоже меняют макет. Если вариант нельзя определить до отрисовки, ограничьте изменение внутри фиксированного контейнера. Не подменяйте короткий заголовок длинным после загрузки. Тест должен сравнивать не только вариант A и B по конверсии, но и их стабильность на мобильных экранах.

06

Как найти источник и подтвердить исправление

В Chrome Performance включите отслеживание layout shifts и откройте проблемные события: инструмент показывает перемещенные элементы. Дополните это RUM-атрибуцией, потому что реальный сдвиг может зависеть от баннера, рекламы или медленного шрифта. Разделяйте шаблоны и устройства. Одна страница без ошибки не закрывает общий компонент сайта.

После исправления тестируйте чистый кеш, медленную сеть, разные размеры, согласие и отказ cookies, ошибки изображений и отправку формы. Убедитесь, что зарезервированное место не превратилось в огромную пустоту. Затем дождитесь обновления полевых данных. Цель — не заморозить интерфейс, а сделать изменения ожидаемыми и не мешающими выбору.

Практика

Что проверить на своем сайте

  1. Найти события layout shift
  2. Задать размеры медиа
  3. Проверить шрифты
  4. Стабилизировать баннеры
  5. Проверить формы
  6. Сравнить полевые данные

Применить к проекту

Что можно сделать после статьи

Если тема похожа на вашу ситуацию, следующий шаг простой: проверить сайт на спрос, структуру, технические ограничения и точки, где пользователь не доходит до заявки.

Источники

Какие источники использовали

Команда

Материалы пишет проектная команда

В статьях мы соединяем стратегию, техническое SEO, контент, аналитику и опыт внедрений. Поэтому материал можно читать не как теорию, а как рабочую основу для улучшения сайта.

Андрей: SEO-стратег в проектной команде Индекс Спроса

Андрей

SEO-стратег

Отвечает за гипотезы роста, приоритеты страниц и связь SEO с заявками.

Мария: SEO-специалист в проектной команде Индекс Спроса

Мария

SEO-специалист

Собирает спрос, проектирует посадочные и ведет внутреннюю оптимизацию.

Павел: Технический SEO в проектной команде Индекс Спроса

Павел

Технический SEO

Проверяет индексацию, скорость, дубли, микроразметку и задачи для разработки.

Екатерина: Контент-лид в проектной команде Индекс Спроса

Екатерина

Контент-лид

Готовит структуру страниц, задания редакторам, FAQ и блоки экспертности.

Дмитрий: Веб-аналитик в проектной команде Индекс Спроса

Дмитрий

Веб-аналитик

Настраивает цели, формы, отчеты и контроль вклада посадочных страниц.

Анна: Project / account в проектной команде Индекс Спроса

Анна

Project / account

Держит сроки, согласования, статусы задач и понятную связь с клиентом.

FAQ

Вопросы по теме

Какой CLS считается хорошим?

Ориентир web.dev — не выше 0,1 на 75-м процентиле визитов.

Достаточно ли задать width и height картинкам?

Это закрывает частую причину, но нужно также проверить шрифты, баннеры, формы и динамические компоненты.

Почему лабораторный CLS равен нулю, а полевой плохой?

Сдвиг может происходить позже: после прокрутки, показа рекламы, баннера или взаимодействия.

Можно ли использовать skeleton?

Да, если его размеры соответствуют будущему контенту и замена не двигает окружающие элементы.

Следующий шаг

Проверьте, как эта логика работает на вашем сайте

Мы посмотрим спрос, структуру, технику, контент и заявки. После короткого разбора будет понятно, где теряется рост.