0Pricing
HTML Academy · レッスン

IntersectionObserver APIとしきい値

オブザーバーを作成し、可視性のしきい値を設定します

「IntersectionObserver APIとしきい値」はCoddyKit上の無料HTML Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHTML Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 HTML Academyコースには全4レッスンが含まれています。

IntersectionObserver の役割

IntersectionObserver は、要素がビューポート(または別のスクロールコンテナー)に入ったり、そこから出たりしたときにコールバックを呼び出します。これはスクロールリスナーに代わる、現代的でパフォーマンスに優れた方法です。計算はブラウザーが行い、コードは実際に表示状態が変化したときだけ実行されます。

生成

new IntersectionObserver(callback, options) でオブザーバーを生成します。交差状態が変化すると、コールバックはエントリの配列を受け取ります。options では、監視するコンテナーと、コールバックを呼び出すしきい値を制御します。

const observer = new IntersectionObserver((entries) => {
  for (const entry of entries) {
    if (entry.isIntersecting) {
      console.log("Visible:", entry.target);
    }
  }
});
observer.observe(document.querySelector(".hero"));

IntersectionObserverEntry

各エントリには、target(監視対象の要素)、isIntersecting(真偽値)、intersectionRatio(0〜1)、boundingClientRect、intersectionRect、time があります。表示・非表示を二値で判定する場合は isIntersecting を、表示割合に基づく処理には intersectionRatio を使用してください。

threshold オプション

{ threshold: 0.5 } を指定すると、交差率が50%をまたぐたびにコールバックが呼び出されます。[0, 0.25, 0.5, 0.75, 1] のような配列を使用すると、4分の1ごとに呼び出せます。進捗インジケーターの作成や、「表示されている割合」を報告する分析に便利です。

root オプション

デフォルトでは、オブザーバーはビューポートとの交差を測定します。root: someScrollableDiv を設定すると、内部のスクロールコンテナーを基準に測定できます。たとえば、高さが固定された div 内の仮想化リストなどに使用します。

rootMargin オプション

rootMargin: "200px" を指定すると、監視領域が上下左右に200ピクセルずつ広がります。より早く呼び出したい場合(ビューポートに入る200ピクセル前から画像の読み込みを開始する場合)や、より遅く呼び出したい場合(ビューポートを完全に通過してから呼び出す場合)に使用してください。

new IntersectionObserver(callback, {
  rootMargin: "0px 0px 200px 0px",
  threshold: 0
});

observe と unobserve

observer.observe(element) は要素の監視を開始し、observer.unobserve(element) は停止します。コールバックが不要になったら、必ず監視を解除してください(たとえば、遅延読み込みを一度だけ実行した後など)。これによりメモリを解放できます。

disconnect

observer.disconnect() は、監視中のすべての要素の監視を停止します。コンポーネントのアンマウント時や、オブザーバーが不要になったときに呼び出してください。これにより、用途を終えた後も残り続けるオブザーバーによるメモリリークを防げます。

非同期配信

コールバックは非同期にまとめて配信されます。高速スクロール中に多数の交差状態が変化しても、要素ごとに1回ずつではなく、すべてのエントリを含む1回のコールバックが呼び出されます。スクロールイベントのたびに呼び出されるスクロールリスナーと比べて、大幅なパフォーマンス向上になります。

初回のコールバックはすぐに呼び出される

新しい要素の監視を開始すると、現在の状態を示すコールバックがほぼすぐに1回呼び出されます。これにより、監視開始時点ですでに表示されている要素も、特別な初期化処理なしで扱えます。

一般的な用途

画像の遅延読み込み、スクロールしてビューに入ったときのアニメーションの開始、無限スクロール(リストの末尾近くにセンチネルを監視)、ユーザーが実際に読んだ記事の追跡、ヒーロー領域の表示状態に基づく固定ヘッダーの切り替えなどに使用します。

理解度チェック

IntersectionObserver における threshold: 0 と threshold: 1 の違いは何ですか?

まとめ

IntersectionObserver は、組み込みのパフォーマンス最適化とバッチ処理により、要素の表示状態が変化したときにコールバックを呼び出します。表示状態を扱う処理では、スクロールリスナーの代わりに使用してください。threshold(0〜1または配列)、root(カスタムスクロールコンテナー)、rootMargin(監視領域の拡大・縮小)で設定します。特定の要素には observe/unobserve を使用し、disconnect ですべてをクリーンアップします。

よくある質問

「IntersectionObserver APIとしきい値」レッスンは無料ですか?

はい。「IntersectionObserver APIとしきい値」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、HTML Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 HTML Academyコースには全4レッスンが含まれています。

「IntersectionObserver APIとしきい値」で何を学びますか?

オブザーバーを作成し、可視性のしきい値を設定します ブラウザで直接実行するハンズオンコードでHTML Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

HTML Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのHTML Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「IntersectionObserver APIとしきい値」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このHTML Academyレッスンでコードを書いて実行できますか?

はい。すべてのHTML Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. IntersectionObserver APIとしきい値
  2. IntersectionObserverによる遅延読み込み
  3. 無限スクロールの実装
  4. スクロール連動アニメーションのセットアップ
← HTML Academyに戻る