codecamp

支付宝小程序API 节点查询

my.createIntersectionObserver

简介

my.createIntersectionObserver 用于创建并返回一个 IntersectionObserver 对象实例。需在 page.onReady 之后执行 my.createIntersectionObserver()

使用限制

基础库 1.11.0 或更高版本;支付宝客户端 10.1.32 或更高版本,若版本较低,建议采取 兼容处理

示例代码

<!-- .axml -->
<view class="logo" style='width: 200px;height: 200px;background-color:blue'>11</view>
// .js


Page({
  onReady() {
    my.createIntersectionObserver().relativeToViewport({top: 100, bottom: 100}).observe('.logo', (res) => {
      console.log(res, 'intersectionObserver');
      console.log(res.intersectionRatio); // 相交区域占目标节点的布局区域的比例
      console.log(res.intersectionRect);  // 相交区域
      console.log(res.relativeRect);      // 参照区域的边界
      console.log(res.boundingClientRect); // 目标边界
      console.log(res.time); // 时间戳
      console.log(res.id); 
    });
  }
})

入参

入参为 Object 类型,属性如下:

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

返回值

返回值为 IntersectionObserver。

IntersectionObserver 概览

更新时间:2019-12-18 11:45:26

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

方法

名称 描述
IntersectionObserver.disconnect 停止监听。
IntersectionObserver.observe 指定目标节点,并开始监听相交状态变化情况。
IntersectionObserver.relativeTo 使用选择器指定一个节点,作为参照区域之一。
IntersectionObserver.relativeToViewport 指定页面显示区域作为参照区域之一。

my.createSelectorQuery

简介

my.createSelectorQuery 是用于返回一个 SelectorQuery 对象实例的 API。

使用限制

基础库 1.4.0 或更高版本;支付宝客户端 10.1.8 或更高版本,若版本较低,建议采取 兼容处理

扫码体验

节点查询.jpeg

示例代码

<!-- API-DEMO page/API/create-selector-query/create-selector-query.axml-->
<view class="page">
  <view class="page-description">节点查询 API</view>
  <view class="page-section">
    <view className="all">节点 all1</view>
    <view className="all">节点 all2</view>
    <view id="one">节点 one</view>
    <view id="scroll" style="height:200px;overflow: auto">
      <view style="height:400px">独立滚动区域</view>
    </view>
    <button type="primary" onTap="createSelectorQuery">节点查询</button>
  </view>
</view>
// API-DEMO page/API/create-selector-query/create-selector-query.js
Page({
  createSelectorQuery() {
    my.createSelectorQuery()
      .select('#non-exists').boundingClientRect()
      .select('#one').boundingClientRect()
      .selectAll('.all').boundingClientRect()
      .select('#scroll').scrollOffset()
      .selectViewport().boundingClientRect()
      .selectViewport().scrollOffset().exec((ret) => {
      console.log(ret);
      my.alert({
        content: JSON.stringify(ret, null, 2),
      });
    })
  },
});
ret 结构

[
  null,
  {
    "x": 1,
    "y": 2,
    "width": 1367,
    "height": 18,
    "top": 2,
    "right": 1368,
    "bottom": 20,
    "left": 1
  },
  [
    {
      "x": 1,
      "y": -34,
      "width": 1367,
      "height": 18,
      "top": -34,
      "right": 1368,
      "bottom": -16,
      "left": 1
    },
    {
      "x": 1,
      "y": -16,
      "width": 1367,
      "height": 18,
      "top": -16,
      "right": 1368,
      "bottom": 2,
      "left": 1
    }
  ],
  {
    "scrollTop": 0,
    "scrollLeft": 0
  },
  {
    "width": 1384,
    "height": 360
  },
  {
    "scrollTop": 35,
    "scrollLeft": 0
  }
]

返回值

返回值为 SelectorQuery。

SelectorQuery 概览

节点查询对象类。

方法

名称 描述
SelectorQuery.boundingClientRect 将当前选择节点的位置信息放入查询结果。
SelectorQuery.exec 将查询结果放入 Callback 回调中。
SelectorQuery.scrollOffset 将当前选择节点的滚动信息放入查询结果。
SelectorQuery.select 选择当前第一个匹配选择器的节点。
SelectorQuery.selectAll 选择所有匹配选择器的节点。
SelectorQuery.selectViewport 选择窗口对象。
支付宝小程序API 滚动
支付宝小程序API 选项选择器
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

支付宝小程序开发文档

支付宝小程序 快速示例

支付宝小程序 小程序快速示例

支付宝小程序 框架

支付宝小程序 组件

支付宝小程序组件 基础组件

支付宝小程序组件 无障碍访问

支付宝小程序 扩展组件

支付宝小程序扩展组件 UI组件

支付宝小程序 API

支付宝小程序 开发工具

支付宝小程序 云服务

支付宝小程序 Serverless

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }