基本概念
首先需要搞清楚 clientHeight、scrollTop 的区别,通俗地说,clientHeight 指的是网页可视区域的高度,scrollTop 指的是网页被卷起来的高度,可以参考这篇文章:彻底搞懂clientHeight、offsetHeight、scrollHeight的区别。
一个简单的示意图如下:
 
实现逻辑
现在我们需要判断document中的元素,相对于屏幕在哪个位置:

- div在可视区域外
 分为两种情况:div在可视区域上方、div在可视区域下方。
 我们可以容易得到div高度为 divHeight,div到document顶端距离为 divOffsetHeight:const divOffsetHeight= $("div").offset().top; const divHeight = $("div").height();- div在可视区域上方
 此时,divOffsetHeight + divHeight < scrollTop
- div在可视区域下方
 此时,divOffsetHeight > scrollTop + clientHeight
 
- div在可视区域上方
- div在可视区域内
 除上述情况之外,就是div在可视区域内的情况。
完整代码
const divOffsetHeight= $("div").offset().top;
const divHeight = $("div").height();
const scrollTop = document.body.scrollTop;
const clientHeight = document.body.clientHeight;
if (divOffsetHeight + divHeight < scrollTop 
	|| divOffsetHeight  > scrollTop + clientHeight) {
	console.log("div在可视区域以外");
} else {
	console.log("div在可视区域以内");
}


















