--- title: ResizeObserver slug: Web/API/ResizeObserver tags: - API - Experimental - ResizeObserver - インターフェイス - オブザーバー - コンテンツボックス - バウンディングボックス - リサイズオブザーバー API - リファレンス translation_of: Web/API/ResizeObserver ---
{{APIRef("Resize Observer API")}}{{SeeCompatTable}}

ResizeObserver インターフェイスは、{{domxref('Element')}} のコンテンツ矩形または {{domxref('SVGElement')}} のバウンディングボックスへの変更を監視します。コンテンツ矩形は、コンテンツを配置できるボックスです。つまり、ボーダーボックスからパディングを引いたものです。(ボーダーとパディングの説明はボックスモデルを見てください。)

ResizeObserver は、無限のコールバックループとそれ自身のコールバック関数でサイズ変更することによって生じるであろう循環的な依存関係を避けます。これは、後続のフレームで DOM のより深い要素のみを処理することによって行われます。実装が仕様に従っている場合は、描画の前およびレイアウトの後にリサイズイベントを呼び出す必要があります。

コンストラクター

{{domxref("ResizeObserver.ResizeObserver", "ResizeObserver()")}}
新しい ResizeObserver オブジェクトを作成して返します。

プロパティ

なし

イベントハンドラー

なし

メソッド

{{domxref('ResizeObserver.disconnect()')}}
監視対象のすべての {{domxref('Element')}} ターゲットの監視を終了します。
{{domxref('ResizeObserver.observe()')}}
指定された {{domxref('Element')}} の監視を開始します。
{{domxref('ResizeObserver.unobserve()')}}
指定された {{domxref('Element')}} の監視を終了します。

次の例では、幅の変更に応じてボックスの境界線の半径を変更します。

const resizeObserver = new ResizeObserver(entries => {
  for (let entry of entries) {
    entry.target.style.borderRadius = Math.max(0, 250 - entry.contentRect.width) + 'px';
  }
});
resizeObserver.observe(document.querySelector('.box:nth-child(2)'));

仕様

仕様書 ステータス コメント
{{SpecName('Resize Observer','#resize-observer-interface','ResizeObserver')}} {{Spec2('Resize Observer')}} 初期定義

ブラウザの互換性

{{Compat("api.ResizeObserver")}}

あわせて参照