ResizeObserverEntry: свойство target
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2020 года.
Чтение-только свойство target интерфейса ResizeObserverEntry возвращает ссылку на Element или SVGElement, которые наблюдаются.
Значение
Элемент Element или SVGElement, который наблюдается.
Примеры
Следующий фрагмент взят из примера resize-observer-border-radius.html (посмотреть исходный код) . В этом примере показана зелёная рамка, размер которой задан в процентах от размера viewport. При изменении размера viewport, скругленные углы рамки изменяются пропорционально размеру рамки. Мы можем просто реализовать это с помощью border-radius с процентами, но это быстро приводит к уродливым эллиптическим углам; это решение обеспечивает красивые квадратные углы, которые масштабируются вместе с размером рамки.
Чтобы получить ссылку на наблюдаемый элемент и обновить его значение border-radius после каждого изменения, мы используем свойство target каждого элемента — entry.target.style.borderRadius.
const resizeObserver = new ResizeObserver((entries) => {
for (const entry of entries) {
if (entry.contentBoxSize) {
entry.target.style.borderRadius = `${Math.min(
100,
entry.contentBoxSize.inlineSize / 10 +
entry.contentBoxSize.blockSize / 10,
)}px`;
} else {
entry.target.style.borderRadius = `${Math.min(
100,
entry.contentRect.width / 10 + entry.contentRect.height / 10,
)}px`;
}
}
});
resizeObserver.observe(document.querySelector("div"));
Спецификации
| Спецификация |
|---|
| Resize Observer # dom-resizeobserverentry-target |
Совместимость браузеров
| Десктоп | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
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/target