您现在的位置是:网站首页> 编程资料编程资料
IntersectionObserver判断是否在可视区域详解_javascript技巧_
2023-05-24
374人已围观
简介 IntersectionObserver判断是否在可视区域详解_javascript技巧_
前言
在日常的开发过程中,有时候会有一些要求判断节点是否进入可视化区域的需求。例如:判断信息是否在可视区域曝光再进行曝光,图片懒加载等。通常我们可以通过scroll和getBoundingclient来进行判断。
el.offsetTop - document.documentElement.scrollTop <= 视口高度 // 或 el.getBoundingClientRect().top <= 视口高度
但是scroll,getBoundingclient会引起回流,计算过于频繁可能会引起很大的性能问题,例如用户在使用的过程中,滑动卡顿啊等。那么有没有更好的办法来代替判断是否进入可视化区域呢?使用IntersectionObserver即可解决这种烦恼。
概念
Intersection Observer API 提供了一种异步检测目标元素与祖先元素或 viewport 相交情况变化的方法。浏览器显示页面的时候,首先会用js处理逻辑,然后进行样式计算及布局,在内存里面形成之后会画我们的屏幕上去,这一个过程就叫1帧,如果1帧中任一个阶段占用的时间过长,就会影响到我们的平均帧率,导致掉帧等。而IntersectionObserver会在浏览器空闲的时候,也就是帧空闲的时候才去执行,不会一直占用我们的主线程,从而提高了性能及体验。
使用
IntersectionObserver接收2个参数callback和options。具体可见MDN
Document
不兼容Safari 12.1以下和Firefox for Android 55以下,具体可以看MDN。 可以使用polyfill版解决该问题。
注意
当target元素已在root可视范围,但是被其他元素遮盖住了,该target是否被其他元素遮盖不可判断。
以上就是IntersectionObserver判断是否在可视区域详解的详细内容,更多关于IntersectionObserver 判断可视区域的资料请关注其它相关文章!
相关内容
- vue中post请求报400的解决方案_vue.js_
- React Context源码实现原理详解_React_
- vue 页面卡死,点击无反应的问题及解决_vue.js_
- node 安装 windows-build-tools全过程_node.js_
- 解决node-sass下载不成功的问题_node.js_
- 使用node-canvas在服务端渲染echarts图表解析_node.js_
- 关于electron-vue打包后运行白屏的解决方案_vue.js_
- 解决node.js中bcrypt遇到的安装问题_node.js_
- 在 React 项目中全量使用 Hooks的方法_React_
- Vue中使用 Echarts5.0 遇到的一些问题(vue-cli 下开发)_vue.js_
