Largest Contentful Paint (LCP) измеряет время загрузки самого крупного визуального элемента в видимой области страницы. Для корректного расчета LCP важно понимать, какие элементы браузер рассматривает как кандидатов на этот показатель. Кандидатами на LCP являются элементы, которые:
Блочные элементы с текстом Кандидатами могут быть элементы, содержащие текст, если они видимы и имеют ненулевую ширину и высоту. Это могут быть:
<h1>, <h2>,
<p> и другие текстовые блоки, формирующие основной
контент страницы.<div> или
<section>, если он крупный или занимает значительную
площадь видимой области.Ключевой момент: LCP не учитывает элементы, скрытые через
display: none, visibility: hidden или
opacity: 0.
Изображения Изображения, загруженные через
<img> или через CSS-фон
(background-image), также являются кандидатами, если:
LCP учитывает не только стандартные <img>
элементы, но и <picture> и
<video poster> (постерное изображение
видео).
Элементы <video>
Видео-контент с атрибутом poster рассматривается как
кандидат на LCP до начала воспроизведения. После начала воспроизведения
LCP больше не будет учитывать видео-контент, если на экране отображается
кадр из видео, но только если размер кадра превышает размеры других
элементов-кандидатов.
Фоновые изображения через CSS Фоновые
изображения, заданные с помощью CSS, не учитываются напрямую LCP,
если не используются через url() в блоках
<img> или <picture>. Они
могут стать кандидатом, если применяются к значимым блокам (например,
через <img> или
<video poster>).
LCP вычисляется по мере рендеринга страницы. Кандидаты могут меняться, если DOM обновляется или медленно загружаются ресурсы:
Для анализа можно использовать инструменты:
web-vitals библиотека: экспорт функции
getLCP(callback) возвращает элемент LCP и время его
рендеринга.'largest-contentful-paint':const observer = new PerformanceObserver((entryList) => {
const entries = entryList.getEntries();
const lastEntry = entries[entries.length - 1];
console.log('LCP элемент:', lastEntry.element);
console.log('Время LCP:', lastEntry.startTime);
});
observer.observe({ type: 'largest-contentful-paint', buffered: true });
Это позволяет точно определить, какой элемент браузер выбрал как LCP, и оптимизировать его загрузку.
<img>,
<picture>, <video poster>.Эти критерии позволяют точно определить, какие элементы страницы влияют на Largest Contentful Paint, и на что стоит обращать внимание при оптимизации производительности.