JavaScript ResizeObserver.observe() — стежити за розміром елемента


Метод observe() починає стежити за зміною розміру елемента.

автор: NagarD

Загальний опис

Як і в спостерігача перетину, обробник спрацьовує одразу — щоб повідомити поточний розмір. Тобто окремо міряти елемент при ініціалізації не треба.

Опція box каже, що саме міряти: content-box (лише вміст, за замовчуванням) чи border-box (разом із рамкою й полями). Різниця стає болючою, коли в елемента є padding.

Розмір приходить у entry.contentRect — там і ширина, і висота.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
observe 64+ 69+ 13.1+ 51+ 79+ -
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
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);
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід