微信小程序中获取某个元素的高度和宽度

众所周知微信小程序中没用dome元素,想要获取某个元素的宽高,只有创建节点

直接上代码:

js页面
//创建节点选择器
    var query = wx.createSelectorQuery();	// 创建节点查询器 query
    //选择id
    var that = this; // 获取this
    // 这段代码的意思是选择class=every的节点,获取节点位置信息的查询请求
    query.select('.every').boundingClientRect(function (rect) { 
    	console.log(res.width)
      that.setData({
        height: res.width + 'px' // 赋值操作
      })
    }).exec();
     query.selectViewport().scrollOffset().exec()//这段代码的意思是获取页面滑动位置的查询请求

wxml页面

<view class='every' style='height:{{height}}'></view>

如果获取的信息是null;
初步分析问题是:

1. onload 对应的是加载中,也就是webkit加载页面的方法执行。
2. onShow 对应的页面显示,并不算是数据填充后的显示,而是“页面框架的加载”
3. onReady 指的是“页面框架的显示”,而并非页面数据与节点加载渲染完成。
4. 微信小程序之所以这么设计应该是照顾到webkit内核压力的缘故,
   使得页面整个加载分为多个步骤,异步进行。

所有得到结论:


 1. 证明他们的执行顺序是:
	onLoad >> onShow >> onReady
 2. 查询方法: wx.createSelectorQuery(),在页面响应事件中并不能查询到节点信息。
 3. 如有查询节点需求可以用延时方法或者操作事件来获取。
	例如:setTimeout();或者是 wx.nextTick() // 这个和setTimeout()类似


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值