扫码关注官方订阅号
比如说一个网页有很多内容,能不能判断当前窗口显示的是哪一部分,然后对未显示的做一些操作?
走同样的路,发现不同的人生
getBoundingClientRect() 方法会返回该元素盒模型距离浏览器窗口的 top, bottom, left, right 值,其中上下的值有大于 0 并且左右的值有大于 0 则是证明其处于当前窗口位置。比如你在当前页控制台运行如下代码:
getBoundingClientRect()
top
bottom
left
right
function isShow() { var article = document.querySelector("article"); var box = article.getBoundingClientRect(), show = (box.top>0 || box.bottom>0) && (box.left>0 || box.right>0); console.log( "%c$('article') 元素 " + (show?"在":"不在") + "当前窗口中显示", "color:"+(show?"green":"red") ); } (window.onscroll = isShow)();
关于函数更多的说明请自行查看 MDN :https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
区分文档坐标和浏览器坐标即可
document.body.scrollTop可以取屏幕当前滚动到什么位置,document.body.clientHeight可以取当前屏幕的高度,结合这两者可以知道现在显示的是哪块内容。
document.body.scrollTop
document.body.clientHeight
$('element').offset()可以得到某元素相对于body的偏移得到{top: y, left: x}值,和上面结合你就知道这块内容有没有显示出来。
$('element').offset()
body
剩下来的你应该可以自己做了。
其实类似的应用不少,比如随着页面滚动加载露出的图片:lazyload。
楼上正解...
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
getBoundingClientRect()
方法会返回该元素盒模型距离浏览器窗口的top
,bottom
,left
,right
值,其中上下的值有大于 0 并且左右的值有大于 0 则是证明其处于当前窗口位置。比如你在当前页控制台运行如下代码:关于函数更多的说明请自行查看 MDN :https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect
区分文档坐标和浏览器坐标即可
document.body.scrollTop
可以取屏幕当前滚动到什么位置,document.body.clientHeight
可以取当前屏幕的高度,结合这两者可以知道现在显示的是哪块内容。$('element').offset()
可以得到某元素相对于body
的偏移得到{top: y, left: x}值,和上面结合你就知道这块内容有没有显示出来。剩下来的你应该可以自己做了。
其实类似的应用不少,比如随着页面滚动加载露出的图片:lazyload。
楼上正解...