ホームページ >ウェブフロントエンド >jsチュートリアル >動的にロードされた要素がスクロール後に表示されているかどうかを検出するにはどうすればよいですか?

動的にロードされた要素がスクロール後に表示されているかどうかを検出するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 02:08:10131ブラウズ

How Can I Detect if a Dynamically Loaded Element is Visible After Scrolling?

スクロール後の要素の可視性の検出

AJAX を使用して動的にロードされた要素の場合、ビューポート内での可視性を決定することが重要になる場合があります。これは、スクロール後に表示される要素に特に関係します。この問題に対処する効果的な方法は次のとおりです:

カスタム関数の使用:

次の関数は、要素が現在のビューポート内に表示されているかどうかを確認します:

function isScrolledIntoView(elem) {
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

ユーティリティの使用関数:

より汎用性の高いオプションは、カスタマイズを提供するユーティリティ関数を使用することです:

function Utils() {

}

Utils.prototype = {
    constructor: Utils,
    isElementInView: function (element, fullyInView) {
        var pageTop = $(window).scrollTop();
        var pageBottom = pageTop + $(window).height();
        var elementTop = $(element).offset().top;
        var elementBottom = elementTop + $(element).height();

        if (fullyInView === true) {
            return ((pageTop < elementTop) && (pageBottom > elementBottom));
        } else {
            return ((elementTop <= pageBottom) && (elementBottom >= pageTop));
        }
    }
};

var Utils = new Utils();

使用法:

決定するには要素が表示されている場合は、この関数を呼び出すだけです:

var isElementInView = Utils.isElementInView($('#flyout-left-container'), false);

if (isElementInView) {
    console.log('in view');
} else {
    console.log('out of view');
}

これらのメソッドを実装することで、動的に読み込まれる要素の可視性を簡単に検出できるため、最適化されたページ インタラクションとユーザー エクスペリエンスが可能になります。

以上が動的にロードされた要素がスクロール後に表示されているかどうかを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。