• 微信小程序第三篇:获取页面节点信息


    获取节点信息

    createSelectorQuery

    wx.createSelectorQuery()可以用于获取节点属性、样式、在界面上的位置等信息。
    最常见的用法是使用这个接口来查询某个节点的当前位置,以及界面的滚动位置。

    示例代码:

    const query = wx.createSelectorQuery()
    query.select('#the-id').boundingClientRect()
    query.selectViewport().scrollOffset()
    query.exec(function(res){
      res[0].top       // #the-id节点的上边界坐标
      res[1].scrollTop // 显示区域的竖直滚动位置
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    自定义组件或包含自定义组件的页面中,使用 this.createSelectorQuery 来代替 wx.createSelectorQuery ,这样可以确保在正确的范围内选择节点。

    selectViewport

    selectViewport() 可以用来获取 scroll-view 的尺寸、滚动位置等信息

    *注意:selectViewport()没有参数的
    
    选择显示区域。可用于获取显示区域的尺寸、滚动位置等信息
      onLoad: function (options) {
          const query=wx.createSelectorQuery();		//创建一个SelectorQuery 对象实例
          query.selectViewport().					//选择显示区域
          scrollOffset(function(res){				//查询节点(必须是scroll-view / viewport)的滚动位置
              res.id      // 节点的ID
    	      res.dataset // 节点的dataset
    	      res.scrollLeft // 节点的水平滚动位置
    	      res.scrollTop  // 节点的竖直滚动位置
           }).exec()
        
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    boundingClientRect

    添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。
    在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

    示例代码:

    Page({
      getRect () {
        wx.createSelectorQuery().select('#the-id').boundingClientRect(function(rect){
          rect.id      // 节点的ID
          rect.dataset // 节点的dataset
          rect.left    // 节点的左边界坐标
          rect.right   // 节点的右边界坐标
          rect.top     // 节点的上边界坐标
          rect.bottom  // 节点的下边界坐标
          rect.width   // 节点的宽度
          rect.height  // 节点的高度
        }).exec()
      },
      getAllRects () {
        wx.createSelectorQuery().selectAll('.a-class').boundingClientRect(function(rects){
          rects.forEach(function(rect){
            rect.id      // 节点的ID
            rect.dataset // 节点的dataset
            rect.left    // 节点的左边界坐标
            rect.right   // 节点的右边界坐标
            rect.top     // 节点的上边界坐标
            rect.bottom  // 节点的下边界坐标
            rect.width   // 节点的宽度
            rect.height  // 节点的高度
          })
        }).exec()
      }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    fields

    获取节点的相关信息。需要获取的字段在 fields 中指定。

    示例代码:

    Page({
      getFields () {
        wx.createSelectorQuery().select('#the-id').fields({
          dataset: true,
          size: true,
          scrollOffset: true,
          properties: ['scrollX', 'scrollY'],
          computedStyle: ['margin', 'backgroundColor'],
          context: true,
        }, function (res) {
          res.dataset    // 节点的dataset
          res.width      // 节点的宽度
          res.height     // 节点的高度
          res.scrollLeft // 节点的水平滚动位置
          res.scrollTop  // 节点的竖直滚动位置
          res.scrollX    // 节点 scroll-x 属性的当前值
          res.scrollY    // 节点 scroll-y 属性的当前值
          // 此处返回指定要返回的样式名
          res.margin
          res.backgroundColor
          res.context    // 节点对应的 Context 对象
        }).exec()
      }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    正则表达式
    JDBC(一)
    [AIGC] 快速掌握Netty,打造高性能IM服务器!
    NoSQL--3.MongoDB配置(Linux版)
    蓝桥杯:核桃的数量(3148)java
    Babel AST代码转换、生成
    公司股东退出机制法律分析
    设计模式-14-迭代器模式
    git学习笔记
    数据结构与算法(C++实现) 课堂笔记「全英」
  • 原文地址:https://blog.csdn.net/qq_49900295/article/details/128057570