CLS

Cumulative Layout Shift

CLS (Cumulative Layout Shift) — безразмерная метрика Core Web Vitals, которая оценивает визуальную стабильность страницы по неожиданным перемещениям уже видимых элементов. Итогом служит наибольшая сумма оценок сдвигов в одном сессионном окне, а не время загрузки.

CLS входит в текущий набор Core Web Vitals вместе с LCP и INP. Эти метрики описывают разные свойства: CLS — визуальную стабильность, LCP — загрузку, INP — отзывчивость при взаимодействии. Определение CLS, правило максимального окна и расчёт сдвига описаны в официальной документации и проекте Layout Instability API. [1, 2, 6]

Кратко

  • CLS показывает, насколько сильно и далеко неожиданно смещается видимое содержимое. [1, 2]
  • Оценка отдельного сдвига равна произведению доли затронутой области и относительного расстояния перемещения. [1, 2]
  • В итог посещения входит самое весомое окно сдвигов, а не сумма всех событий за неограниченное время. [1]
  • Хорошим считается CLS не выше 0,1; для сайта смотрят 75-й процентиль отдельно по мобильным и настольным посещениям. [1, 6]
  • Лабораторный тест помогает найти причину, но может не воспроизвести сдвиги, которые возникают у реальных пользователей позже. [1, 3, 7]

Происхождение и история термина

CLS расшифровывается как Cumulative Layout Shift. Обзор инициативы Web Vitals был опубликован Google 4 мая 2020 года. В нём прямо сказано, что состав Core Web Vitals со временем меняется; на дату проверки CLS имеет статус стабильной метрики в текущем наборе. Поэтому год публикации обзора — ориентир истории документации, а не доказательство даты «изобретения» показателя. [6]

Техническую основу событий сдвига описывает Layout Instability API. Открытая редакция документа WICG датирована 17 декабря 2025 года и имеет статус проекта отчёта группы сообщества. Это не рекомендация и не стандарт W3C. [2]

Суть и механизм

Браузер сравнивает положение видимых элементов между двумя отрисованными кадрами. Если элемент, который уже был виден, меняет начальную позицию, возникает событие layout shift. Само появление нового элемента не даёт оценку ему как нестабильному элементу, но его вставка может сдвинуть уже видимое содержимое. [1, 2]

Оценка одного неожиданного сдвига рассчитывается так:

S = I × D, где:

  • I, impact fraction — доля области окна просмотра, которую занимает объединение прежней и новой видимой области нестабильных элементов;
  • D, distance fraction — наибольшее перемещение нестабильного элемента по горизонтали или вертикали, делённое на больший размер окна просмотра.

Обе величины относительные, поэтому результат не измеряется ни в секундах, ни в пикселях. В проекте API distance fraction ограничена сверху единицей. [1, 2, 7]

Не каждое смещение считается неожиданным. У записи API признак hadRecentInput равен true, если перед ней менее чем за 500 миллисекунд был дискретный ввод пользователя. Такие события исключают из CLS. Прокрутка, перетаскивание и жест масштабирования относятся к непрерывному вводу и сами по себе не запускают это исключение. [1, 2]

Текущий Core Web Vital объединяет неожиданные сдвиги в сессионные окна. Следующий сдвиг остаётся в том же окне, если пауза после предыдущего меньше одной секунды; общая длительность окна не может превышать пяти секунд. CLS посещения — наибольшая сумма оценок среди таких окон. [1]

Здесь важно различать два уровня. Проект Layout Instability API задаёт события и оценку отдельного кадра; в его справочной части встречаются накопительные значения за срок документа. Текущая методика Core Web Vitals поверх этих событий применяет правило максимального сессионного окна. Поэтому простое пожизненное суммирование событий API не воспроизводит современный CLS. [1, 2]

Виды и классификации

Для проверки удобно авторское разделение по уровню агрегации. Это объясняющая схема, а не отдельная классификация Google или WICG.

Уровень Что считается Для чего нужен
Отдельный сдвиг Произведение I × D для события [1, 2] Понять вклад конкретного перемещения
Сессионное окно Сумма неожиданных сдвигов в пределах правил окна [1] Найти наиболее нестабильный эпизод посещения
Полевой показатель страницы Распределение CLS по реальным посещениям [3] Оценить опыт большинства аудитории по 75-му процентилю

Причины сдвигов также полезно группировать по диагностическому признаку: незарезервированное место для изображения или рекламы, поздняя вставка блока, замена шрифта, изменение размеров компонента. Это рабочая схема поиска причины; участие каждого события в CLS всё равно определяют правила метрики. [1, 7]

Как применяется на практике

Учебный сценарий: читатель открыл новость, увидел заголовок и начало текста, а затем над первым абзацем появилась реклама без заранее выделенной высоты. Абзац и всё содержимое ниже переместились. Для воспроизведения фиксируют размер окна, состояние кэша, сеть, последовательность действий и момент вставки блока.

После этого проверяют причину. Для изображения или рекламы резервируют место до загрузки содержимого; поздний компонент не вставляют над уже видимой областью без ожидаемого действия; для шрифта сравнивают размеры резервного и загруженного начертания. Конкретное исправление выбирают по записи сдвига и затронутым элементам, а затем повторяют тот же сценарий. [7]

Полевые и лабораторные данные отвечают на разные вопросы. PageSpeed Insights показывает полевые данные Chrome UX Report и лабораторный анализ Lighthouse. Полевой блок охватывает предыдущий 28-дневный период. Если для отдельного адреса данных недостаточно, сервис может перейти к данным уровня origin — агрегату по всем страницам сайта; при недостатке выборки и там полевой блок не показывается. Лабораторный запуск удобен для отладки воспроизводимого пути, но обычно ограничен загрузкой страницы и может не увидеть поздние сдвиги. [1, 3, 7]

Российский отчёт Яндекс Метрики «Время загрузки страниц» показывает длительности и этапы загрузки, а также позволяет работать с квантилями. Это другой объект измерения: его значения нельзя называть CLS и подставлять в формулу визуальной стабильности. [5]

Как измерить или проверить

Сначала разберём один сдвиг. Пусть объединённая область до и после перемещения занимает 40% окна просмотра, то есть I = 0,4. Самое большое перемещение равно 20% большего размера окна, то есть D = 0,2. Тогда S = 0,4 × 0,2 = 0,08. Это вклад одного события, а не готовый результат посещения. [2]

Теперь применим оконную логику. Допустим, события произошли через 0; 0,6 и 1,2 секунды и получили оценки 0,08; 0,04 и 0,03. Паузы меньше секунды, а длительность серии 1,2 секунды, поэтому сумма первого окна равна 0,08 + 0,04 + 0,03 = 0,15. Через 7 секунд возникает новый сдвиг с оценкой 0,10: из-за паузы он образует другое окно. Итоговый CLS равен max(0,15; 0,10) = 0,15, а не 0,25. Это учебные данные, иллюстрирующие правило, а не результат измерения сайта. [1]

Для оценки страниц Google использует такие диапазоны: хороший CLS — от 0 до 0,1 включительно; требуется улучшение — больше 0,1 и не больше 0,25; плохой — больше 0,25. Цель проверяют по 75-му процентилю посещений отдельно для мобильных и настольных устройств. Среднее значение по смешанной аудитории не является заменой этому правилу. [1, 3, 6]

Практическая проверка состоит из четырёх шагов:

  1. Посмотреть полевые данные и записать адрес, период, устройство и уровень агрегации.
  2. Воспроизвести проблемный путь в лаборатории, включая прокрутку и поздние состояния.
  3. Найти конкретные события и элементы, затем исправить установленную причину.
  4. Повторить сценарий сразу и наблюдать полевое распределение после обновления 28-дневного периода. [1, 3, 7]

Ошибки, ограничения и спорные вопросы

CLS не является временем загрузки, процентом удобства или общей оценкой Lighthouse. Страница может быстро показать основное содержимое и затем сдвинуть его; возможна и обратная ситуация — медленная, но визуально стабильная загрузка. CLS выражается безразмерным числом, тогда как отчёт времени загрузки использует секунды. [1, 2, 5, 7]

Нулевой результат одного лабораторного прогона не доказывает отсутствие сдвигов при других устройствах, сетях, вариантах рекламы и действиях. С другой стороны, полевые данные помогают увидеть масштаб, но сами по себе не называют компонент, который надо исправить. Поэтому для диагностики нужны оба типа наблюдений. [1, 3, 7]

Хороший CLS также не гарантирует высокую позицию в Google. Core Web Vitals используются системами ранжирования, однако Google оценивает совокупность сигналов и прямо предупреждает, что хорошие результаты отчётов не гарантируют верхних позиций. [4]

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

CLS измеряется в секундах?

Нет. Это безразмерное число. Секунды участвуют только в правилах объединения сдвигов в окно. [1, 2, 7]

Почему значение в PageSpeed Insights отличается от запуска Lighthouse?

Полевой блок отражает распределение реальных посещений за предыдущие 28 дней, а лабораторный тест — один контролируемый сценарий. У них разные данные и условия. [3]

Любой сдвиг после клика портит CLS?

Нет. Сдвиг в пределах 500 миллисекунд после дискретного ввода может быть исключён по hadRecentInput. Однако прокрутка и перетаскивание не дают такого исключения автоматически. [1, 2]

Исправление CLS повысит позиции?

Оно улучшает конкретное свойство пользовательского опыта. Поисковый результат зависит не от одного показателя, поэтому обещать рост позиций нельзя. [4]

Решить с помощью сервиса

SEO-проверка включает проверку скорости страницы через PageSpeed / Lighthouse. Это внутренний инструмент, который готовится к открытию для внешних пользователей. Его технический результат может стать отправной точкой диагностики, но не заменяет полевые измерения CLS и проверку всех пользовательских сценариев.

Сервисы MEDIATRONE →

Связанные термины

Источники

  1. Mihajlija, M., & Walton, P. (n.d.; updated 2023, April 12). Cumulative Layout Shift (CLS). web.dev. https://web.dev/articles/cls (дата обращения: 24.10.2026). ↑ а б в г д е ж з и к л м н о п р с т у ф х ц
  2. Web Platform Incubator Community Group. (2025, December 17). Layout Instability API: Draft Community Group Report. https://wicg.github.io/layout-instability/ (дата обращения: 24.10.2026). ↑ а б в г д е ж з и к л м н
  3. Google. (n.d.; updated 2024, October 21). About PageSpeed Insights. Google for Developers. https://developers.google.com/speed/docs/insights/v5/about (дата обращения: 24.10.2026). ↑ а б в г д е ж
  4. Google Search Central. (n.d.; updated 2026, September 22). Understanding page experience in Google Search results. Google for Developers. https://developers.google.com/search/docs/appearance/page-experience (дата обращения: 24.10.2026). ↑ а б
  5. Яндекс. (б. г.). Время загрузки страниц. Яндекс Метрика. https://yandex.ru/support/metrica/ru/reports/timing (дата обращения: 24.10.2026). ↑ а б
  6. Walton, P. (2020, May 4; updated 2024, October 31). Web Vitals. web.dev. https://web.dev/articles/vitals (дата обращения: 24.10.2026). ↑ а б в г
  7. Osmani, A., & Pollard, B. (2020, May 5; updated 2025, February 7). Optimize Cumulative Layout Shift. web.dev. https://web.dev/articles/optimize-cls (дата обращения: 24.10.2026). ↑ а б в г д е ж з и

Служебный блок

Версия
3.0
Факты проверены
Подготовка
Редакция Медиатрона
Публикация
утверждена владельцем издания 4 ноября 2026 г.

Редакция Медиатрона. Факты сверены с первоисточниками на дату проверки, публикация утверждена владельцем издания.

Нашли ошибку? info@mediatrone.ru