JS を使用して要素がビューポート内にあるかどうかを確認する方法

JS を使用して要素がビューポート内にあるかどうかを確認する方法

序文

要素がビューポート内にあるかどうかを監視する2つの方法を共有する

1. 位置計算

Element.getBoundingClientRect() メソッドを使用して、ビューポートに対する要素の位置を返します。

定数isElementVisible = (el) => {
 定数 rect = el.getBoundingClientRect();
};

ブラウザウィンドウの幅と高さを取得する

定数isElementVisible = (el) => {
 定数 rect = el.getBoundingClientRect();
  const vWidth = window.innerWidth || document.documentElement.clientWidth;
  const vHeight = window.innerHeight || document.documentElement.clientHeight;
};

図に示すように、要素がビューポート内にあるかどうかを判断します。

定数isElementVisible = (el) => {
  const rect = el.getBoundingClientRect()
  定数 vWidth = window.innerWidth || document.documentElement.clientWidth
  定数 vHeight = window.innerHeight || document.documentElement.clientHeight

  
  もし (
    rect.right < 0 ||
    矩形下端 < 0 ||
    rect.left > vWidth ||
    rect.top > vHeight
  ){
    偽を返す
  }

  真を返す
}

getBoundingClientRect メソッドを使用すると、ブラウザがリフローして再描画されるため、パフォーマンスが若干低下しますが、Intersection Observer よりも互換性が高くなります。

2. 交差点オブザーバー

Intersection Observer API は、ターゲット要素と祖先要素または最上位ドキュメントのビューポートとの交差における変更を非同期的に監視する方法を提供します。

Intersection Observer API は、ターゲット要素と祖先要素またはビューポートとの交差点の変更を非同期的に検出する方法を提供します。設定されたコールバック関数は、ターゲット要素がビューポートまたは他の指定された要素と交差したときにトリガーされます。

// 監視する要素を取得します const boxs = document.querySelectorAll('.box')

// オブザーバーを作成し、コールバック関数を設定します // isIntersecting プロパティを使用して、要素がビューポートと交差するかどうかを判断します const observer = new IntersectionObserver((entries, observer) => {
 エントリ.forEach((エントリ) => {
    コンソール.log(
      エントリ.ターゲット、
      entry.isIntersecting?「表示」:「非表示」
    );
  });
})

ボックス.forEach((ボックス) => {
  オブザーバー.observe(ボックス);
});

参照する

要素がビューポート内にあるかどうかを確認する方法 4bcl

交差点オブザーバー API

要約する

これで、JS を使用して要素がビューポート内にあるかどうかを確認する方法についての記事は終了です。JS を使用して要素がビューポート内にあるかどうかを確認する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL で準備、実行、割り当て解除ステートメントを使用するチュートリアル

>>:  複数のネットワークカードを備えた Linux システムでのルーティング構成の詳細な説明

推薦する

Ubuntu 18.04 (物理マシン) で OpenWRT 開発環境を構成する方法

1. 仮想マシン(物理マシン)をインストールする仮想マシンまたは物理マシンにインストールできます。 ...

ウェブデザインにおけるポップアップウィンドウとフローティングレイヤーのデザイン

従来のソフトウェアから Web ウェアへの段階的な移行の傾向の中で、デザイン パターンとテクノロジは...

MySQL のユニークインデックスと通常のインデックスのどちらを選択すればよいでしょうか?

ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...

MySQLインデックスベースのストレステストの実装

1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...

ウェブページのエンコードにおける GB2312、GBK、UTF-8 の違い

まず、GB2312、GBK、UTF-8 はすべて文字エンコーディングであることを理解する必要がありま...

geoip を使用して nginx で地域を制限する方法

このブログは仕事のメモです環境: nginx バージョン: nginx/1.14.0 Centos ...

CentOS6 アップグレード glibc 操作手順

目次背景glibc 2.14をコンパイルするソフトリンクを変更するやっと背景テスト環境には Cent...

MySQLトランザクションを実行するための構文とプロセスの詳細な説明

概要: MySQL は、トランザクションをサポートするためにさまざまなストレージ エンジンを提供しま...

JS における ES6 継承と ES5 継承の違い

目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...

CentOS システムでの JDK のインストールと設定の概要

目次序文OpenJDKの確認とアンインストールダウンロードした圧縮パッケージを使用してJDKをインス...

MySQL 外部キー制約の例の説明

MySQL の外部キー制約は、2 つのテーブル間のリンクを確立するために使用されます。 1 つのテー...

JavaScript マクロタスクとマイクロタスク

マクロタスクとマイクロタスクJavaScript はシングルスレッド言語です (マルチスレッドの場合...

7つの便利なTypeScriptの新機能

目次1. オプションの連鎖2. NULL値の結合3. 再帰型エイリアス4. アサーション署名5. P...

MySQL 5.7.20 のインストールと設定方法のグラフィック チュートリアル (win10)

この記事では、MySQL 5.7.20のインストールと設定方法を参考までに紹介します。具体的な内容は...

Tomcat でのコネクタ構成

JBoss は Tomcat を Web コンテナとして使用するため、JBoss の Web コンテ...