taoliujun / blog

https://taoliujun.github.io/blog/
https://taoliujun.github.io/blog/
0 stars 0 forks source link

Web Api - Intersection Observer #92

Open taoliujun opened 8 months ago

taoliujun commented 8 months ago

Intersection Observer

MDN: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API

Intersection Observer用于检测目标元素与祖先元素或顶级文档的视口相交情况的变化。主要用于:

接口

IntersectionObserver

相交观察器接口,实例化的时候接受一个回调函数,和一个配置项。

观察是异步的,所以回调函数执行时获取的相交信息,不是实时的。

回调函数包含了两个入参:

本接口实例返回了一系列属性,如rootrootMargin等,意义同入参配置项。还返回了一系列方法如下:

IntersectionObserverEntry

某一时刻的相交信息,包含了一系列属性:

属性和方法

//

事件

//

示例

示例:https://taoliujun.github.io/example/web-api/Intersection_Observer_API/index.html

  1. 在高度400的父观察元素中,放3个高度300的被观察元素,触发阈值是[0,1],表示被观察者的相交区域比例在0或1发生变化的时候,都会触发回到函数,初始化日志:

image

元素1全部可见,元素2是0.33的区域可见,元素3则完全不可见。

  1. 滚动一点,元素1触发了1阈值。

image

  1. 再滚动一点,元素1没有触发0阈值,所以日志中没有它;元素2触发了1阈值;元素3触发了0阈值。

image