小程序 API 能力汇总——TYML IntersectionObserver API

ty.createIntersectionObserver

创建并返回一个 IntersectionObserver 对象实例。在自定义组件或包含自定义组件的页面中,应使用 this.createIntersectionObserver([options]) 来代替。

使用方式

复制代码
ty.createIntersectionObserver(instance, [options]);

this.createIntersectionObserver([options]);

instance

页面实例或自定义组件实例。

options

选项

属性 类型 默认值 必填 说明 最低版本
thresholds Array<number> 0 否 一个数值数组,包含所有阈值。
initialRatio number 0 否 初始的相交比例,如果调用时检测到的相交比例与这个值不相等且达到阈值,则会触发一次监听器的回调函数。
observeAll boolean false 否 是否同时观测多个目标节点(而非一个),如果设为 true ,observe 的 targetSelector 将选中多个节点(注意:同时选中过多节点将影响渲染性能)
返回值

IntersectionObserver

示例代码
复制代码
Page({
  onLoad() {
    this._observer = ty.createIntersectionObserver(this);
    this._observer.relativeTo('.scroll-view').observe('.ball', (res) => {
      this.setData({
        appear: res.intersectionRatio > 0,
      });
    });
  },
 
  onUnload() {
    if (this._observer) this._observer.disconnect();
  },
});

IntersectionObserver

IntersectionObserver 对象,用于推断某些节点是否可以被用户看见、有多大比例可以被用户看见。

方法

IntersectionObserver.observe

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

IntersectionObserver.disconnect

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

IntersectionObserver IntersectionObserver.relativeTo

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

IntersectionObserver IntersectionObserver.relativeToViewport

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

observe

IntersectionObserver.observe(string targetSelector, function callback)

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

参数
string targetSelector

选择器

function callback

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

参数

Object res

属性 类型 说明
id string 节点 ID
dataset Record.<string, any> 节点自定义数据属性
intersectionRatio number 相交比例
intersectionRect Object 相交区域的边界
boundingClientRect Object 目标边界
relativeRect Object 参照区域的边界
time number 相交检测时的时间戳

res.intersectionRect 的结构

属性 类型 说明
left number 左边界
right number 右边界
top number 上边界
bottom number 下边界
width number 宽度
height number 高度

res.boundingClientRect 的结构

属性 类型 说明
left number 左边界
right number 右边界
top number 上边界
bottom number 下边界
width number 宽度
height number 高度

res.relativeRect 的结构

属性 类型 说明
left number 左边界
right number 右边界
top number 上边界
bottom number 下边界

disconnect

IntersectionObserver.disconnect()

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

relativeTo

IntersectionObserver.relativeTo(string selector, Object margins)

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

参数

string selector

选择器

Object margins

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

属性 类型 默认值 必填 说明
left number 否 节点布局区域的左边界
right number 否 节点布局区域的右边界
top number 否 节点布局区域的上边界
bottom number 否 节点布局区域的下边界

返回值

IntersectionObserver

relativeToViewport

IntersectionObserver.relativeToViewport(Object margins)

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

Object margins

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

属性 类型 默认值 必填 说明
left number 否 节点布局区域的左边界
right number 否 节点布局区域的右边界
top number 否 节点布局区域的上边界
bottom number 否 节点布局区域的下边界

返回值 IntersectionObserver

示例代码

复制代码
Page({
  onLoad: function () {
    ty.createIntersectionObserver(this)
      .relativeToViewport({ bottom: 100 })
      .observe('.target-class', (res) => {
        res.intersectionRatio; // 相交区域占目标节点的布局区域的比例
        res.intersectionRect; // 相交区域
        res.intersectionRect.left; // 相交区域的左边界坐标
        res.intersectionRect.top; // 相交区域的上边界坐标
        res.intersectionRect.width; // 相交区域的宽度
        res.intersectionRect.height; // 相交区域的高度
      });
  },
});

👉 立即开发。

相关推荐
聚美智数4 小时前
智能结构化识别-图片结构解析-图像结构化解析-照片结构化解析
android·java·数据库
十年Java程序媛4 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
我是人✓4 小时前
SpringBoot静态资源映射揭秘
java·spring boot·后端
lpfasd1234 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
土豆.exe5 小时前
nf_tables 的 verdict 被读了两次:一个十年未闭合的位域错配
java·数据库·网络安全·缓存
小坏讲微服务6 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
kunicoding6 小时前
多线程编程核心概念详解:从线程基础到并发安全
java·jvm·安全
snow@li6 小时前
SpringBoot:核心注解全景梳理 / @xxx 叫“注解”(Annotation)
java·spring
devilnumber6 小时前
避坑_IDEA 提取方法(Extract Method)工具
java·ide·intellij-idea
鬼手点金7 小时前
Agent 的学习机制:后训练、上下文学习与外部化学习
java·人工智能·git·学习·自动化·nanogpt