Jquery 如何检测窗口顶部是否等于窗口滚动上的任何部分顶部

Jquery 如何检测窗口顶部是否等于窗口滚动上的任何部分顶部,jquery,html,css,Jquery,Html,Css,我的网页上有很多部分。如果window.top等于任何section.top,我想在滚动页面时为它们添加一个类名“active”。我的意思是我想知道我是否在这个部门。我可以这样做吗?所有部分都有自己的数据id属性。我试过下面这样的方法,但没有任何意义 $(window).scroll(function () { if ($(this).top == $("section").offset().top) { $("section").addClass("active");

我的网页上有很多部分。如果window.top等于任何section.top,我想在滚动页面时为它们添加一个类名“active”。我的意思是我想知道我是否在这个部门。我可以这样做吗?所有部分都有自己的数据id属性。我试过下面这样的方法,但没有任何意义

$(window).scroll(function () {
    if ($(this).top == $("section").offset().top) {
        $("section").addClass("active");
    }
});
尝试此功能:

$.fn.isOnScreen = function(){

var win = $(window);

var viewport = {
    top : win.scrollTop(),
    left : win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();

var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();

return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));

};
祝你好运


参考资料:

不错。非常感谢。它奏效了,但希望有更好的办法。无论如何再次感谢。
$(window).scroll(function () {
    if ($(this).isOnScreen()) {
        $("section").addClass("active");
    }
});