使用 jquery 检查元素在视口中是否可见:
首先确定元素的顶部和底部位置。然后,通过将滚动位置添加到视区高度来确定视区底部的位置(相对于页面顶部)。
如果视区的底部位置大于元素的顶部位置,而视区的顶部位置小于元素的底部位置,则元素位于视区中(至少部分)。简单来说,当元素的任何部分位于视区的上边界和下边界之间时,该元素在屏幕上可见。
现在,您可以编写一个 if/else 语句,其中 if 语句仅在满足上述条件时运行。
下面的代码执行上面解释的内容:
// this function runs every time you are scrolling
$(window).scroll(function() {
var top_of_element = $("#element").offset().top;
var bottom_of_element = $("#element").offset().top + $("#element").outerHeight();
var bottom_of_screen = $(window).scrollTop() + $(window).innerHeight();
var top_of_screen = $(window).scrollTop();
if ((bottom_of_screen > top_of_element) && (top_of_screen < bottom_of_element)){
// the element is visible, do something
} else {
// the element is not visible, do something else
}
});
这个答案是Chris Bier和Andy在下面讨论的内容的总结。我希望它能帮助那些在像我一样做研究时遇到这个问题的人。我还使用以下问题的答案来制定我的答案:滚动位置时显示Div。