スクロール後に要素が表示されているかどうかを確認するにはどうすればいいですか? 質問する

スクロール後に要素が表示されているかどうかを確認するにはどうすればいいですか? 質問する

AJAX 経由で要素を読み込んでいます。要素の一部は、ページを下にスクロールしないと表示されません。要素がページの表示部分にあるかどうかを知る方法はありますか?

ベストアンサー1

これでうまくいくはずです:

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');
}

おすすめ記事