JavaScript ResizeObserver.observe() — стежити за розміром елемента
Метод observe() починає стежити за зміною розміру елемента.
Загальний опис
Як і в спостерігача перетину, обробник спрацьовує одразу — щоб повідомити поточний розмір. Тобто окремо міряти елемент при ініціалізації не треба.
Опція box каже, що саме міряти: content-box (лише вміст, за замовчуванням) чи border-box (разом із рамкою й полями). Різниця стає болючою, коли в елемента є padding.
Розмір приходить у entry.contentRect — там і ширина, і висота.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| observe | 64+ | 69+ | 13.1+ | 51+ | 79+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| observe | 64+ | yes | yes | 13.4+ |
Приклади
+ запропонувати свій приклад у пісочниці
Компонент, що реагує на власну ширину.
HTML
<div id="card">Картка</div>
CSS
#card {
width: 300px;
background: #eef6ff;
padding: 8px;
}
JS
const card = document.getElementById('card');
const observer = new ResizeObserver(entries => {
for (const entry of entries) {
const { width } = entry.contentRect;
// рішення за розміром КОНТЕЙНЕРА, не вікна
entry.target.classList.toggle('narrow', width < 250);
console.log('Ширина картки:', Math.round(width));
}
});
observer.observe(card, { box: 'border-box' });
// обробник спрацьовує одразу після observe — і на кожну зміну розміру
setTimeout(() => {
card.style.width = '200px';
}, 500);
Коментарі
Коментарів ще немає — будьте першим!