当前位置:   article > 正文

小程序获取窗口宽高和dom元素_小程序获取dom高度

小程序获取dom高度

一、获取手机窗口数据

  1. wx.getSystemInfoSync().windowWidth // 获取当前窗口的宽度
  2. wx.getSystemInfoSync().windowHeight // 获取当前窗口的高度
  3. wx.getSystemInfoSync().model // 获取当前采用的设备
  4. wx.getSystemInfoSync().pixelRatio
  5. wx.getSystemInfoSync().language // 获取当前所采用的的语言
  6. wx.getSystemInfoSync().version // 获取当前设备的版本

二、获取dom元素

  1. var query = wx.createSelectorQuery();  // 创建节点选择器
  2. query.select('.list').boundingClientRect(res=>{
  3. console.log(res) // 获取class为list的节点
  4. });
  5. query.selectViewport().scrollOffset();
  6. query.exec((res) => {
  7. var listHeight = res[0].height; // 获取list高度
  8. });
  9. // 注意:res[0]为当前节点的详细数据;res[1]为显示区域的竖直滚动位置;query.exec((res) => {})中的回调函数是最后执行的,若要获取高度等信息进行操作的话,要在回调函数中进行。

================================= 华丽的分割线 =============================

由于最近开发小程序遇到了相关dom操作的问题,所以在此做下详细介绍:

下面内容引自【传送门】

由于微信官方禁止小程序操作dom元素,因而无法像前端一样操作小程序DOM,好在官方提供了API ,

这个api叫做 wx.createSelectorQuery(),  官方定义:返回一个 SelectorQuery 对象实例。

这个api的select()方法用于查找元素,类似jq的元素选择器

然后有 boundingClientRect(function(res){}) 则返回指定元素的DOM属性,res代表元素本身,(百度了 boundingClientRect :边界中心)

再之后的exec(function(rect){})则是设置元素属性,rect在这里指的是所有匹配到结果的集合,通过调用that/this.setdata({})可以更改元素dom值,请注意!rect是一个数组集合,想要设置某一个元素,需要给该数组加指定元素的下标!

看下面代码:

  1. onReady: function () {
  2. var that = this
  3. const query = wx.createSelectorQuery();
  4. query.select('.cont1').boundingClientRect(function (res) {
  5. //这里返回元素自身的DOM属性
  6. console.log(res);
  7. }).exec(function(rect){
  8. that.setData({
  9. swiperHeight: rect[0].height + 0
  10. })
  11. // rect返回一个数组,需要使用下标0才能找到
  12. // console.log(s[0].height)
  13. });
  14. },

网上听大佬说偶尔会有rect返回为null的意外,昨晚翻遍百度,终于找到了一个解决方法,感谢那位大佬(传送门)

  1. /*原理是使用定时器异步获取dom*/
  2.   setTimeout(function () {
  3. var query = wx.createSelectorQuery();
  4. query.select('.cont1').boundingClientRect();
  5. query.exec(function (rect) {
  6. if (rect === null) return;
  7. that.setData({
  8. swiperHeight: rect .height + 10
  9. })
  10. });
  11. }, 500)

以上,有问题欢迎指出!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/42696
推荐阅读
相关标签
  

闽ICP备14008679号