介绍前言
1。位置计算
2。十字路口观察
这篇文章给大家分享的是有关怎么利用JS检查元素是否在视口内的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
前言
分享两个监测元素是否在视口内的方法
1。位置计算
使用Element.getBoundingClientRect()方法返回元素相对于视口的位置
const isElementVisible =, (el),=祝辞,{ ,const rect =, el.getBoundingClientRect (); };
获取浏览器窗口的宽高
const isElementVisible =, (el),=祝辞,{ ,const rect =, el.getBoundingClientRect (); const 才能;vWidth =, window.innerWidth | |, document.documentElement.clientWidth; const 才能;vHeight =, window.innerHeight | |, document.documentElement.clientHeight; };
判断元素是否在视口内,如图所示
const isElementVisible =, (el),=祝辞,{ const 才能;rect =, el.getBoundingClientRect () const 才能;vWidth =, window.innerWidth | |, document.documentElement.clientWidth const 才能;vHeight =, window.innerHeight | |, document.documentElement.clientHeight ,, if 才能; ,,,rect.right & lt;, 0, | | ,,,rect.bottom & lt;, 0, | | ,,,rect.left 祝辞,vWidth | | ,,,rect.top 祝辞vHeight ),{才能 ,,,return 错误的 ,,} return 才能正确 }
getBoundingClientRect方法会使浏览器发生回流和重绘,性能消耗稍大,但兼容性比十字路口观察者要好。
2。十字路口观察
十字路口观察者异步API提供了一种观察路口的变化目标元素的祖先元素或顶级文档# 39;s视窗。
引用>交叉观察者API提供了一种异步检测目标元素与祖先元素或视窗相交情况变化的方法。在目标元素与视口或者其他指定元素发生交集时和触发配置的回调函数。
//,获取要监测的元素 const boxes =, document.querySelectorAll (& # 39; .box& # 39;)//,创建观察者,配置回调函数//,通过,isIntersecting 属性判断元素与视口是否相交 const observer =, new IntersectionObserver((条目,观察者),=祝辞,{ ,entries.forEach((条目),=祝辞,{ ,,,console.log ( ,,,,,entry.target, ,,,,,entry.isIntersecting ?,“visible",:,“invisible" ,,,); ,,}); }) boxes.forEach((箱),=祝辞,{ observer.observe才能(盒); });感谢各位的阅读!关于“怎么利用JS检查元素是否在视口内”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
怎么利用JS检查元素是否在视口内