IntersectionObserver的使用

简介: ​IntersectionObserverAPI,可以自动"观察"元素是否可见,由于可见(visible)的本质是,目标元素与视口产生一个交叉区,所以这个 API叫做"交叉观察器"。

前言

IntersectionObserverAPI,可以自动"观察"元素是否可见,由于可见(visible)的本质是,目标元素与视口产生一个交叉区,所以这个 API

叫做"交叉观察器"。


它的用法比较简单

就是我们先用new实例化一下

let io = new IntersectionObserver(cb, ops)

IntersectionObserver是浏览器原生提供的构造函数, 接受两个参数:cb是可见性变化时提供的回调函数,ops是配置对象。

 // 开始观察
io.observe(获取的dom)
// 停止观察
io.unobserve(获取的dom)

callback函数

callback = (entries)=>{
  console.log(entries);//所有可见dom的
}

IntersectionObserverEntry 对象

isIntersecting元素是否可见,如果可见为true,否则为false

time:可见性发生变化的时间,是一个高精度时间戳,单位为毫秒

target:被观察的目标元素,是一个 DOM 节点对象

rootBounds:根元素的矩形区域的信息,getBoundingClientRect()方法的返回值,如果没有根元素(即直接相对于视口滚动),则返回null

boundingClientRect:目标元素的矩形区域的信息

intersectionRect:目标元素与视口(或根元素)的交叉区域的信息

intersectionRatio:目标元素的可见比例,即intersectionRect占boundingClientRect的比例,完全可见时

相关文章
|
9月前
umi 中如何使用 px2rem 插件做rem适配
在umi的src下面创建两个文件app.ts和document.ejs
124 0
|
9月前
|
安全 Anolis
性能优化特性之:E0PD
本文介绍了倚天实例上进行安全特性关闭以提升性能的特性:E0PD,并且从优化原理、使用方法、性能收益等方面做了详细阐述。
|
9月前
|
Sentinel
typeof NaN的结果是什么?什么情况下会出现NaN?
NaN 指“不是一个数字”(not a number),NaN 是一个“警戒值”(sentinel value,有特殊用途的常规值),用于指出数字类型中的错误情况,即“执行数学运算没有成功,这是失败后返回的结果”。
138 0
|
9月前
|
安全 JavaScript
js如何安全的获取undefinde值?
为什么要安全的获取undefinde值? 因为 undefined 是一个标识符,所以可以被当作变量来使用和赋值,但是这样会影响 undefined 的正常判断。
|
9月前
|
前端开发
如何创建一个 react 项目及如何运行?
要求:Node>=8.10 并且 npm>=5.6 建议:Node>=10.14.2,否则会报错:error babel-jest@26.6.3: The engine “node” is incompatible with this module. Expected version “>= 10.14.2”. Got “10.13.0”
166 0
|
9月前
|
前端开发
|
9月前
umi中@umijs/plugin-dva的使用,及实现一套增删改
符合以下规则的文件会被认为是 model 文件: • src/models 下的文件 • src/pages 下,子目录中 models 目录下的文件 • src/pages 下,所有model.ts 文件(不区分任何字母大小写)
171 0
|
9月前
|
前端开发
|
9月前
|
缓存 前端开发 JavaScript
前端如何进行性能优化的方法(详细版本)
每当有人访问您网站上的页面时,浏览器都必须请求大量文件。这些HTTP请求直接影响网页的加载速度。通常,更少的HTTP请求意味着网站加载速度更快。 现在,网站的加载速度是搜索引擎排名的重要因素。平均而言,媒体页面加载速度为谷歌的10个结果只是1.65秒。
126 0
|
9月前