JavaScript ResizeObserver: отследить размер элемента

Категория: JavaScript · Язык: JavaScript · Обновлено:

ResizeObserver сообщает об изменении размера конкретного элемента, даже если размер поменялся не из-за окна браузера. Это полезно для графиков, панелей и компонентов с адаптивным содержимым.

Рабочий пример

JavaScript
const panel = document.querySelector('#panel');
const observer = new ResizeObserver(entries => {
  for (const entry of entries) {
    const width = entry.contentRect.width;
    panel.classList.toggle('compact', width < 420);
  }
});
observer.observe(panel);
// при удалении компонента: observer.disconnect();

Наблюдатель привязан к элементу. Порог ширины является примером: выберите его по фактическому поведению компонента.

Частый вопрос

Чем ResizeObserver отличается от window.resize?

window.resize относится к окну. ResizeObserver отслеживает размер выбранного элемента и реагирует также на изменения layout внутри страницы.