当前位置: 首页 > wzjs >正文

在线药店网站建设上海做网站好的公司

在线药店网站建设,上海做网站好的公司,成都网站建设火狐狸,建筑装饰装修工程公司JavaScript中判断元素是否在可视区域内 1.有什么应用2.方法1-----使用offsetTop、scrollTop3.方法2-----getBoundingClientRect4.方法3-----Intersection Observer 1.有什么应用 懒加载列表的无限滚动计算广告元素的曝光情况 2.方法1-----使用offsetTop、scrollTop offsetTo…

JavaScript中判断元素是否在可视区域内

  • 1.有什么应用
  • 2.方法1-----使用offsetTop、scrollTop
  • 3.方法2-----getBoundingClientRect
  • 4.方法3-----Intersection Observer

1.有什么应用

  • 懒加载
  • 列表的无限滚动
  • 计算广告元素的曝光情况

2.方法1-----使用offsetTop、scrollTop

offsetTop、scrollTop属于三大家族的内容,详情见https://blog.csdn.net/fageaaa/article/details/145728760。

思路:元素的offsetTop-页面的scrollTop<=页面的高度

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><title>Title</title><style>.area1,.area3 {width: 100%;height: 1200px;background-color: aqua;}.box {width: 100%;height: 100px;background-color: red;}</style></head><body><div class="area1"></div><div class="area2 box"></div><div class="area3"></div><script>function isInViewPortOfOne(el) {// 下面是浏览器视口的高度的兼容性写法const viewPortHeight =window.innerHeight ||document.documentElement.clientHeight ||document.body.clientHeight;const offsetTop = el.offsetTop;const scrollTop = document.documentElement.scrollTop;const top = offsetTop - scrollTop;//注意这里只是个简略方式,没考虑el的边框return top <= viewPortHeight && top + el.clientHeight >= 0;}let box= document.querySelector(".box");window.addEventListener("scroll", function () {if (isInViewPortOfOne(box)) {console.log("box元素在可视区域内");} else {console.log("box元素不在可视区域内");}});</script></body>
</html>

3.方法2-----getBoundingClientRect

getBoundingClientRect函数返回值是一个 DOMRect对象,拥有left, top, right, bottom, x, y, width, 和 height属性。详情见https://blog.csdn.net/fageaaa/article/details/145728760。
思路:top大于等于0;left大于等于0;right小于等于viewWidthbottom小于等于viewHeight

function isInViewPort(element) {const viewWidth = window.innerWidth || document.documentElement.clientWidth;const viewHeight = window.innerHeight || document.documentElement.clientHeight;const {top,right,bottom,left,} = element.getBoundingClientRect();return (top >= 0 &&left >= 0 &&right <= viewWidth &&bottom <= viewHeight);
}

4.方法3-----Intersection Observer

前面两种方式需要一直监听,就算用了防抖节流也要一直监听(只不过性能会好一点)。所以Intersection Observer这个方法性能上会更好!!!

浏览器提供了一种异步观察目标元素与祖先元素(或顶级文档的视口)交叉状态变化的方法。IntersectionObserver详细用法见https://blog.csdn.net/fageaaa/article/details/145741778

<head><meta charset="UTF-8" /><title>Title</title><style>.area1,.area3 {width: 100%;height: 1200px;background-color: aqua;}.box {width: 100%;height: 100px;background-color: red;}</style></head><body><div class="area1"></div><div class="area2 box"></div><div class="area3"></div><script>let box = document.querySelector(".box");//它提供了一种异步观察目标元素与祖先元素(或顶级文档的视口)交叉状态变化的方法。// 这个API的出现主要是为了高效解决在网页开发中需要频繁判断元素是否进入“视口”(viewport)的问题。// 相比于传统的依赖scroll事件和getBoundingClientRect方法,Intersection Observer API在性能上有显著的优势let intersectionObserver = new IntersectionObserver(function (el) {if (el[0].intersectionRatio <= 0) {console.log("元素彻底离开可视区");} else {console.log("元素进入可视区");//进入可视区之后,资源已经下载好,就不需要再进行监视了intersectionObserver.unobserve(box);}});intersectionObserver.observe(box);</script></body>

文章转载自:

http://14UdDCpJ.hyhzt.cn
http://eSUphfK7.hyhzt.cn
http://fDgfBtFj.hyhzt.cn
http://752c5bIW.hyhzt.cn
http://higU6QWv.hyhzt.cn
http://8o77YURD.hyhzt.cn
http://fbZsW9gq.hyhzt.cn
http://qAvRxSvM.hyhzt.cn
http://HtRdy759.hyhzt.cn
http://sP7ajWSM.hyhzt.cn
http://wXD3F8rt.hyhzt.cn
http://B1DPu3Su.hyhzt.cn
http://FifsEidt.hyhzt.cn
http://GT2rr6G2.hyhzt.cn
http://VvaU9XEc.hyhzt.cn
http://umfLJspJ.hyhzt.cn
http://9TbbV8Ms.hyhzt.cn
http://vxQijD2n.hyhzt.cn
http://vMgOEFSv.hyhzt.cn
http://RFASL935.hyhzt.cn
http://DYlCDGeq.hyhzt.cn
http://WBFoRDtv.hyhzt.cn
http://y8p9q1yK.hyhzt.cn
http://iirEuUpA.hyhzt.cn
http://zi8JdPGf.hyhzt.cn
http://xfsKglzd.hyhzt.cn
http://Wg1SInxS.hyhzt.cn
http://4hoxfxuN.hyhzt.cn
http://DrmtLmEJ.hyhzt.cn
http://6t5krD0i.hyhzt.cn
http://www.dtcms.com/wzjs/716084.html

相关文章:

  • 网站空间流量是什么网页制作与网站建设技术大全
  • 网站建设中心联系方式asp旅游网站模板下载
  • 小说网站开发微信购物商城
  • 外贸网站建设培训企业做网站须要注意些什么
  • 陵水网站设计公司网站取源用iapp做软件
  • 苏州公司网站建设报价华文细黑做网站有版权吗
  • 手机网站生成app网站管理平台模板
  • 网站开发难题wordpress最好的编辑器下载
  • wordpress建站Pdf易语言跳到指定网站怎么做
  • 如何制作ppt视频教程网站优化工作内容
  • 湖北强涛建设工程有限公司网站邻水网站建设
  • 小语种网站开发同城推广
  • 怎么制作一个表白网站网站后台改网页底色
  • 怎么用ps做网站首页图片尺寸网站建设和维护合同
  • 网站开发流程详细介绍南阳住房和城乡建设厅网站
  • 非织梦做的网站能仿吗装修公司网站设计
  • 淄博网站建设给力臻动传媒广州建站模板
  • 专业的郑州网站推广成都网站制作东三环
  • 网站开发的总结与展望广告公司手机网站建设
  • 响应式网站模板的特点模版网站开发
  • 做网站那个好海口免费自助建站模板
  • 即墨网站建设在哪优化网站标题和描述的方法
  • 做网站需要什么认证徐州祥云做网站
  • 制作公司网站设建筑企业网站源码
  • 百度站长平台有哪些功能虚拟货币网站建设
  • 上海网站快速排名wordpress科技主题公园
  • 做报名表的网站中国建设银行积分查询网站
  • 制作网站的模板下载软件在茂名哪里可以做网站
  • 邓卅做网站在什么地方郑州整站关键词搜索排名技术
  • 门户网站模板html5简述网站开发工作流程