在窗口滚动过程中,如何判断一个元素出现在可视窗口中?
$.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));
};
每个元素有offsetTop属性,表示该元素到页面顶部的距离;页面有scrollTop属性,表示滚动条竖直方向滚动的距离;当 页面高度+scrollTop > offsetTop 时,即是元素出现在页面时。
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答852 阅读✓ 已解决
6 回答867 阅读✓ 已解决
4 回答943 阅读✓ 已解决
使用getBoundingClientRect()方法能够获取到指定的元素在当前viewpoint中的位置
这个viewpoint就是浏览器的可是窗口