jQueryを使用して特定の要素がユーザーのビューポートに入ったときにイベントをトリガーするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-31 09:47:02
オリジナル
729 人が閲覧しました

How to Trigger an Event When a Specific Element Enters the User's Viewport using jQuery?

ユーザーが jQuery を使用して特定の要素にスクロールしたときにイベントをトリガーする

このシナリオでは、特定の要素が表示されたときにアラートを表示したいとします。 h1 要素 (ID が「scroll-to」) がユーザーのブラウザー ビューに入ります。これを実現するには、ページの上部からの要素のオフセットを計算し、現在のスクロール位置と比較します:

<code class="javascript">$(window).scroll(function() {
    var elementOffsetTop = $('#scroll-to').offset().top;
    var elementHeight = $('#scroll-to').outerHeight();
    var windowHeight = $(window).height();
    var scrollTop = $(this).scrollTop();

    if (scrollTop > (elementOffsetTop + elementHeight - windowHeight)) {
        console.log('H1 on the view!');
    }
});</code>
ログイン後にコピー

上記のコード:

  • offset()。 top は、ドキュメントの上部から要素の上部までの距離を返します。
  • outerHeight() は、パディングとボーダーを含む要素の高さを返します。
  • スクロール位置が以下より大きいかどうかを確認します。要素のオフセットからその高さとウィンドウの高さを引いて、要素が現在のビューポートに確実に表示されるようにします。

要素がビューポートに入ったときに要素をフェードインするなど、他のアクションを実行するようにイベントを変更することもできます。

<code class="javascript">$(window).scroll(function() {
    var elementOffsetTop = $('#scroll-to').offset().top;
    var elementHeight = $('#scroll-to').outerHeight();
    var windowHeight = $(window).height();
    var scrollTop = $(this).scrollTop();

    if (scrollTop > (elementOffsetTop + elementHeight - windowHeight)) {
        $('#scroll-to').fadeIn();
    }
});</code>
ログイン後にコピー

さらに、検出ロジックを改善するために、要素が完全にビューポート内にあるかどうかを判断するチェックを追加できます。

<code class="javascript">$(window).scroll(function() {
    var elementOffsetTop = $('#scroll-to').offset().top;
    var elementHeight = $('#scroll-to').outerHeight();
    var windowHeight = $(window).height();
    var scrollTop = $(this).scrollTop();

    if (scrollTop > (elementOffsetTop + elementHeight - windowHeight) && elementOffsetTop > scrollTop && (scrollTop + windowHeight > elementOffsetTop + elementHeight)) {
        //Do something
    }
});</code>
ログイン後にコピー

この更新されたロジックにより、イベントがトリガーされるだけであることが保証されます。スクロール方向に関係なく、要素がビューポートに完全に表示されるとき。

以上がjQueryを使用して特定の要素がユーザーのビューポートに入ったときにイベントをトリガーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート