ホームページ >ウェブフロントエンド >jsチュートリアル >Intersection Observer API: JavaScript の隠れた宝石
最近、JavaScript の機能を調べていると、Intersection Observer API という強力でありながら見落とされがちな機能を発見しました。 この API は、ブラウザーのビューポート内で要素がいつ表示されるか非表示になるかを検出するための非常に効率的なソリューションを提供します。
Intersection Observer API は、ターゲット要素がその祖先またはビューポートとどのように交差するかの変化を非同期的に監視します。この説明は複雑に聞こえるかもしれませんが、その応用は驚くほど簡単です。要素の可視性を決定するという一般的な問題をエレガントに解決します。
以前、開発者は要素の可視性を追跡するために scroll
イベントに大きく依存していました。この方法では、特に複数の要素を扱う場合、パフォーマンスを維持するために手動での計算と最適化が必要になることがよくありました。 ブラウザはスクロール中に位置を継続的に再計算するため、scroll
イベントを使用して多数の要素を追跡することは非効率的であることが判明しました。
Intersection Observer API は、次の 3 つの主要コンポーネントに依存します。
オブザーバー: IntersectionObserver
オブジェクトは 1 つ以上の要素を監視します。
コールバック: ターゲット要素の可視性が変更されるたびに実行される関数。
オプション: root
、rootMargin
、threshold
を含むカスタマイズ可能なパラメータ。
root
: 可視性チェックのためのビューポートを指定します。 デフォルトは null
で、ブラウザのビューポートを使用します。rootMargin
: root
要素の周囲のマージン。CSS マージンに似ています。 root
要素の境界ボックスは、正の値を指定すると拡大し、負の値を指定すると縮小します。threshold
: コールバックをトリガーするために必要なターゲット要素の可視性の割合を定義します。 範囲は 0 (0%) ~ 1 (100%) です。IntersectionObserver
インスタンスの作成は簡単です:
<code class="language-javascript"> const lazyObserver = new IntersectionObserver(handleLazyImage, { rootMargin: "-10px", // 10px margin used within the container to account for existing margins root: lazyImageContainer, // Custom container as the root threshold: 0.25, // Trigger when 25% of the image is visible within the container });</code>
ここで、handleLazyImage
はコールバック関数であり、他のプロパティは構成オプションです。
インスタンス化後、ターゲット要素の観察を開始します:
<code class="language-javascript"> lazyImages.forEach((img) => lazyObserver.observe(img));</code>
包括的な詳細については、GitHub リポジトリを参照してください [GitHub リポジトリへのリンクはここにあります]。
Intersection Observer API は、数多くの実用的な用途を提供します。
Intersection Observer API は、Web アプリケーションでのビューポートベースのインタラクションを管理するための優れたアプローチを提供します。 さまざまな一般的なシナリオにクリーンで効率的なソリューションを提供し、パフォーマンスを向上させ、開発を簡素化します。 遅延読み込み、無限スクロール、スクロールベースのアニメーションのいずれを実装する場合でも、Intersection Observer API は非常に貴重なツールです。
これを次のプロジェクトに組み込んでください。ユーザーとパフォーマンス指標は改善を高く評価するでしょう!
以上がIntersection Observer API: JavaScript の隠れた宝石の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。