LayoutShift
Ограниченное использование
Эта функция не относится к Baseline, так как она не работает во всех широко используемых браузерах.
Экспериментально: Это экспериментальная технология
Перед использованием в производстве внимательно проверьте таблицу совместимости с браузерами.
Интерфейс LayoutShift API производительности предоставляет информацию об устойчивости макета веб-страниц на основе перемещений элементов на странице.
Описание
Сдвиг макета происходит, когда любой элемент, видимый в области просмотра, меняет свое положение между двумя кадрами. Такие элементы считаются неустойчивыми, что свидетельствует об отсутствии визуальной стабильности.
API неустойчивости макета предоставляет способ измерения и отчета об этих сдвигах макета. Все инструменты для отладки сдвигов макета, включая инструменты разработчика браузера, используют этот API. API также можно использовать для наблюдения и отладки сдвигов макета, регистрируя информацию в консоли, отправляя данные на конечную точку сервера или в веб-аналитику.
Инструменты производительности могут использовать этот API для расчета оценки CLS.
Свойства экземпляра
Этот интерфейс расширяет следующие свойства PerformanceEntry, квалифицируя их следующим образом:
-
PerformanceEntry.durationТолько для чтения Экспериментально -
Всегда возвращает
0(понятие продолжительности не применимо к сдвигам макета). -
PerformanceEntry.entryTypeТолько для чтения Экспериментально -
Всегда возвращает
"layout-shift". -
PerformanceEntry.nameТолько для чтения Экспериментально -
Всегда возвращает
"layout-shift". -
PerformanceEntry.startTimeТолько для чтения Экспериментально -
Возвращает
DOMHighResTimeStamp, представляющий время начала сдвига макета.
Этот интерфейс также поддерживает следующие свойства:
-
LayoutShift.valueЭкспериментально -
Возвращает оценку сдвига макета, вычисляемую как дробь воздействия (дробь области просмотра, которая была сдвинута) умноженную на дробь расстояния (расстояние перемещения как дробь области просмотра).
-
LayoutShift.hadRecentInputЭкспериментально -
Возвращает
trueеслиlastInputTimeменьше 500 миллисекунд в прошлом. -
LayoutShift.lastInputTimeЭкспериментально -
Возвращает время последнего исключающего события (ввода пользователя, которое исключило бы эту запись как фактор вклада в оценку CLS) или
0, если не произошло исключающего события ввода. -
LayoutShift.sourcesЭкспериментально -
Возвращает массив объектов
LayoutShiftAttributionс информацией об элементах, которые были сдвинуты.
Методы экземпляра
-
LayoutShift.toJSON()Экспериментально -
Преобразует свойства в JSON.
Примеры
Ведение журнала значений сдвига макета
Следующий пример демонстрирует, как захватывать сдвиги макета и регистрировать их в консоли.
const observer = new PerformanceObserver((list) => {
for (const entry of list.getEntries()) {
// Count layout shifts without recent user input only
if (!entry.hadRecentInput) {
console.log("LayoutShift value:", entry.value);
if (entry.sources) {
for (const { node, currentRect, previousRect } of entry.sources)
console.log("LayoutShift source:", node, {
currentRect,
previousRect,
});
}
}
}
});
observer.observe({ type: "layout-shift", buffered: true });
Спецификации
| Спецификация |
|---|
| API неустойчивости макета # sec-layout-shift |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
LayoutShift |
77 | 79 | Нет | 64 | Нет | 77 | Нет | 55 | Нет | 12.0 | 77 |
hadRecentInput |
77 | 79 | Нет | 64 | Нет | 77 | Нет | 55 | Нет | 12.0 | 77 |
lastInputTime |
77 | 79 | Нет | 64 | Нет | 77 | Нет | 55 | Нет | 12.0 | 77 |
sources |
84 | 84 | Нет | 70 | Нет | 84 | Нет | 60 | Нет | 14.0 | 84 |
toJSON |
77 | 79 | Нет | 64 | Нет | 77 | Нет | 55 | Нет | 12.0 | 77 |
value |
77 | 79 | Нет | 64 | Нет | 77 | Нет | 55 | Нет | 12.0 | 77 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift