Layout Shift Record (LSR) — это объект, который фиксирует смещение элементов на веб-странице во время её загрузки или интерактивного использования. Он является частью метрик Web Vitals, в частности Cumulative Layout Shift (CLS), которая измеряет стабильность визуального контента. Основная цель LSR — количественно оценить непредвиденные смещения и предоставить точные данные для оптимизации пользовательского опыта.
Каждый LSR содержит несколько ключевых полей:
value — числовое значение смещения, которое отражает размер визуального сдвига относительно текущего viewport. Чем выше значение, тем более заметным был сдвиг для пользователя.
sources — массив объектов, описывающих элементы, участвующие в смещении. Каждый объект содержит:
x, y, width,
height).hadRecentInput — булево значение, которое показывает, было ли смещение вызвано взаимодействием пользователя (например, клик или скролл). Смещения без взаимодействия считаются более критичными для CLS.
startTime — временная метка начала смещения, в миллисекундах от начала навигации страницы.
LSR создается каждый раз, когда происходит значительное смещение визуального контента, которое может быть замечено пользователем. Для браузеров это фиксируется через API Layout Instability, предоставляемое Web Vitals.
Процесс выглядит следующим образом:
import { getCLS } from 'web-vitals';
getCLS((metric) => {
console.log('Cumulative Layout Shift:', metric.value);
console.log('Layout Shift Records:', metric.entries);
metric.entries.forEach((entry) => {
console.log('Element:', entry.sources.map(source => source.node));
console.log('Shift value:', entry.value);
console.log('Start time:', entry.startTime);
console.log('User input affected?', entry.hadRecentInput);
});
});
В этом примере:
metric.value — это суммарное значение CLS.metric.entries — массив LSR, содержащих информацию о
каждом смещении.transform или
opacity, чтобы не создавать LSR.LSR можно отправлять в систему аналитики для дальнейшего анализа пользовательского опыта. Полезно фиксировать:
value — величину смещения, чтобы выявить проблемные
страницы.startTime — момент появления смещения, чтобы связывать
его с определенными событиями на странице.sources — элементы, вызывающие смещение, для
приоритетной оптимизации.Layout Shift Record — это детализированный инструмент анализа нестабильности визуального контента, позволяющий разработчикам точно измерять и устранять непредсказуемые смещения на веб-странице.