createIntersectionObserver 1.10.4+

创建并返回一个 IntersectionObserver 对象实例。

输出

IntersectionObserver 对象

IntersectionObserver 对象

IntersectionObserver 对象的方法列表

方法名返回值描述
relativeToIntersectionObserver 实例本身使用选择器指定一个节点,作为参照区域之一
relativeToViewportIntersectionObserver 实例本身指定页面显示区域作为参照区域之一
observe指定目标节点并开始监听相交状态变化情况
disconnect停止监听,回调函数将不再触发

IntersectionObserver.relativeTo(selector, margins)

使用选择器指定一个节点,作为参照区域之一

参数说明

String selector

选择器

Object margins

用来扩展(或收缩)参照节点布局区域的边界

参数名称数据类型属性默认值描述
leftNumberoptional0节点布局区域的左边界
rightNumberoptional0节点布局区域的右边界
topNumberoptional0节点布局区域的上边界
bottomNumberoptional0节点布局区域的下边界

IntersectionObserver.relativeToViewport(margins)

指定页面显示区域作为参照区域之一

参数说明

Object margins

用来扩展(或收缩)参照节点布局区域的边界

参数名称数据类型属性默认值描述
leftNumberoptional0节点布局区域的左边界
rightNumberoptional0节点布局区域的右边界
topNumberoptional0节点布局区域的上边界
bottomNumberoptional0节点布局区域的下边界

IntersectionObserver.observe(targetSelector, callback)

指定目标节点并开始监听相交状态变化情况

参数说明

String targetSelector

选择器

Function callback

监听相交状态变化的回调函数

callback 返回对象的属性

属性名称数据类型描述
intersectionRatioNumber相交比例
intersectionRectObject相交区域的边界
boundingClientRectObject目标边界
relativeRectObject参照区域的边界
timeNumber相交检测时的时间戳

intersectionRect、boundingClientRect、relativeRect 结构说明

属性名称类型描述
leftNumber左边界
rightNumber右边界
topNumber上边界
bottomNumber下边界
  1. //也可以使用 this.createIntersectionObserver({selectAll}) 来创建
  2. tt.createIntersectionObserver(this, {
  3. selectAll: true
  4. })
  5. .relativeTo('.container')
  6. .observe('.ball', res => {
  7. res.intersectionRect // 相交区域
  8. res.intersectionRect.left // 相交区域的左边界坐标
  9. res.intersectionRect.top // 相交区域的上边界坐标
  10. res.intersectionRect.width // 相交区域的宽度
  11. res.intersectionRect.height // 相交区域的高度
  12. });

IntersectionObserver.disconnect()

停止监听。回调函数将不再触发

原文: https://developer.toutiao.com/docs/api/createIntersectionObserver.html