序文要素がビューポート内にあるかどうかを監視する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 は、ターゲット要素と祖先要素またはビューポートとの交差点の変更を非同期的に検出する方法を提供します。設定されたコールバック関数は、ターゲット要素がビューポートまたは他の指定された要素と交差したときにトリガーされます。 // 監視する要素を取得します 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 システムでのルーティング構成の詳細な説明
1. フローティングレイアウト1. 最初に固定幅の div をフロートさせます。ドキュメントフローか...
シェル スクリプト言語は、すべてのプログラミング言語の中で最も単純な言語であるため、資格のある Li...
1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...
テーブルの背景色は、BGCOLOR 属性を通じて設定できます。基本的な構文<テーブル BGCO...
Docker で war をデプロイするには、コンテナを使用する必要があります。ここでは tomca...
序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...
MySQL 8 の新機能: MySQL をバージョン 5.x から 8.x に直接アップグレードする...
コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...
ウェブサイトのデザインを編集または変更する必要がある場合、CSS が重要な役割を果たします。 CSS...
1. W3C バージョンの flex 2009年版フラグ: display: box; または bo...
序文WeChat アプレットでは、App.js の globalData を中間ブリッジとして使用し...
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
目次問題の説明方法 1 (バックエンドが画像 URL を返す)方法 2 (フロントエンドで requ...
Docker Compose は、複雑なアプリケーションを定義および実行するための Docker ツ...
序文以前フロントエンドを勉強していたとき、メタタグに対する私の理解はこの一文だけでした。 <メ...