ResizeObserverEntry
Базовая поддержка Широко доступна *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2020 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Интерфейс ResizeObserverEntry представляет собой объект, передаваемый в функцию обратного вызова конструктора ResizeObserver(), который позволяет получить новые размеры наблюдаемого Element или SVGElement.
Свойства экземпляра
-
ResizeObserverEntry.borderBoxSizeТолько для чтения -
Массив объектов, содержащих новые размеры рамки наблюдаемого элемента при выполнении обратного вызова.
-
ResizeObserverEntry.contentBoxSizeТолько для чтения -
Массив объектов, содержащих новые размеры области содержимого наблюдаемого элемента при выполнении обратного вызова.
-
ResizeObserverEntry.devicePixelContentBoxSizeТолько для чтения -
Массив объектов, содержащих новые размеры области содержимого наблюдаемого элемента в пикселях устройства при выполнении обратного вызова.
-
ResizeObserverEntry.contentRectТолько для чтения -
Объект
DOMRectReadOnly, содержащий новые размеры наблюдаемого элемента при выполнении обратного вызова. Обратите внимание, что это устаревшее свойство, которое сохраняется в спецификации только по соображениям обратной совместимости. -
ResizeObserverEntry.targetТолько для чтения -
Ссылка на наблюдаемый
ElementилиSVGElement.
Примечание: Область содержимого — это область, в которой может размещаться содержимое, то есть рамка минус отступы и ширина границы. Рамка включает содержимое, отступы и границу. См. Модель области для получения дополнительной информации.
Методы экземпляра
Нет.
Примеры
Следующий фрагмент взят из примера resize-observer-text.html (посмотреть исходный код).
Обратите внимание, что код охватывает три различных случая совместимости:
- Некоторые старые браузеры могут поддерживать
contentRect, но неcontentBoxSize. - Старые версии Firefox поддерживают
contentBoxSize, но неправильно реализовали его как один объект вместо массива. - Современные браузеры поддерживают
contentBoxSizeкак массив объектов, что позволяет им сообщать о размерах блоков для фрагментированных элементов (например, в многоколоночном сценарии).
const resizeObserver = new ResizeObserver((entries) => {
for (let entry of entries) {
if (entry.contentBoxSize) {
// The standard makes contentBoxSize an array...
if (entry.contentBoxSize[0]) {
h1Elem.style.fontSize =
Math.max(1.5, entry.contentBoxSize[0].inlineSize / 200) + "rem";
pElem.style.fontSize =
Math.max(1, entry.contentBoxSize[0].inlineSize / 600) + "rem";
} else {
// ...but old versions of Firefox treat it as a single item
h1Elem.style.fontSize =
Math.max(1.5, entry.contentBoxSize.inlineSize / 200) + "rem";
pElem.style.fontSize =
Math.max(1, entry.contentBoxSize.inlineSize / 600) + "rem";
}
} else {
h1Elem.style.fontSize =
Math.max(1.5, entry.contentRect.width / 200) + "rem";
pElem.style.fontSize = Math.max(1, entry.contentRect.width / 600) + "rem";
}
}
console.log("Size changed");
});
resizeObserver.observe(divElem);
Спецификации
| Спецификация |
|---|
| Resize Observer # resize-observer-entry-interface |
Совместимость с браузерами
| Рабочий стол | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
ResizeObserverEntry |
64 | 79 | 69 | 51 | 13.1 | 64 | 79 | 47 | 13.4 | 9.0 | 64 |
borderBoxSize |
84 | 84 | 9269–92Реализовано как один объект, представляющий размер области содержимого, а не массив объектов размеров области содержимого. |
70 | 15.4 | 84 | 9279–92Реализовано как один объект, представляющий размер области содержимого, а не массив объектов размеров области содержимого. |
60 | 15.4 | 14.0 | 84 |
contentBoxSize |
84 | 84 | 9269–92Реализовано как один объект, представляющий размер области содержимого, а не массив объектов размеров области содержимого. |
70 | 15.4 | 84 | 9279–92Реализовано как один объект, представляющий размер области содержимого, а не массив объектов размеров области содержимого. |
60 | 15.4 | 14.0 | 84 |
contentRect |
64 | 79 | 69 | 51 | 13.1 | 64 | 79 | 47 | 13.4 | 9.0 | 64 |
devicePixelContentBoxSize |
84 | 84 | 93 | 70 | Нет | 84 | 93 | 60 | Нет | 14.0 | 84 |
target |
64 | 79 | 69 | 51 | 13.1 | 64 | 79 | 47 | 13.4 | 9.0 | 64 |
© 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/ResizeObserverEntry