IntersectionObserver

IntersectionObserver交差オブザーバー API のインターフェイスで、対象となる要素と祖先要素または文書の最上位のビューポートとの交差状態の変化を非同期に監視する方法を提供します。祖先要素またはビューポートがルートとして参照されます。

IntersectionObserver が生成されると、ルート内での可視部分の比率を監視するように構成されます。この構成はいったん IntersectionObserver が生成されると変更できませんので、与えられた監視オブジェクトは可視性の面における特定の変化を監視する場合にのみ有用です。しかし、同じオブザーバーで複数の対象要素を監視することができます。

コンストラクター

IntersectionObserver()

対象の要素の可視性が 1 つまたは複数の閾値を通過したことを検出したときに、指定されたコールバック関数を実行する新しい IntersectionObserver オブジェクトを生成します。

プロパティ

IntersectionObserver.root 読取専用

指定された、監視対象となる Element または Document の祖先です。 root の値がコンストラクターに渡されなかったり、 null が渡されたりした場合は、最上位の文書のビューポートが使用されます。

IntersectionObserver.rootMargin 読取専用

交差状態を計算するときにルートの外接ボックスに適用されるオフセットの矩形で、計算のためにルートを効果的に縮小または拡大させます。このプロパティから返される値は、内部的な要件に合わせて変化するので、コンストラクターを呼び出したときに指定したものと同じにならないことがあります。それぞれのオフセットはピクセル数 (px) またはパーセント値 (%) で表すことができます。既定値は "0px 0px 0px 0px" です。

IntersectionObserver.thresholds 読取専用

交差領域と監視対象の外接ボックス領域との比の閾値を昇順に並べたリストです。対象の通知は、対象においていずれかの閾値を通過した場合に生成されます。コンストラクターで値が渡されなければ、 0 が使用されます。

メソッド

IntersectionObserver.disconnect()

IntersectionObserver オブジェクトが対象を監視することを停止します。

IntersectionObserver.observe()

IntersectionObserver が対象の要素を監視するよう命じます。

IntersectionObserver.takeRecords()

監視対象すべての IntersectionObserverEntry オブジェクトの配列を返し、すべての監視を停止します。

IntersectionObserver.unobserve()

IntersectionObserver が特定の要素の監視を停止するよう命じます。

js

const intersectionObserver = new IntersectionObserver((entries) => {
  // intersectionRatio が 0 の場合、対象がビューの外にあるので、
  // 何かをする必要はありません。
  if (entries[0].intersectionRatio <= 0) return;

  loadItems(10);
  console.log("Loaded new items");
});
// 監視を開始
intersectionObserver.observe(document.querySelector(".scrollerFooter"));

仕様書

Specification
Intersection Observer
# intersection-observer-interface

ブラウザーの互換性

BCD tables only load in the browser

関連情報