麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 課堂 > 小程序 > 正文

微信小程序實現動態獲取元素寬高的方法分析

2020-03-21 16:05:06
字體:
來源:轉載
供稿:網友

本文實例講述了微信小程序實現動態獲取元素寬高的方法。分享給大家供大家參考,具體如下:

我以前一直以為微信小程序不能動態獲取view元素的寬高。但是自從看到: wx.createSelectorQuery() 這個api接口,以前的某些問題就能得到解決了。。。

那么,這個api接口怎么用呢?

首先,這個接口會返回一個對象實例。

var obj=wx.createSelectorQuery();

下面的就是返回的對象實例 obj 的所有內容。

微信小程序,元素,寬高

返回的 obj 有五個方法:

1.  obj.in(component):沒用過這個方法,多用于組件的選擇器。

2.  obj.select(selector):獲取指定的節點,selector是css選擇器。返回一個 NodesRef 對象實例,可以用于獲取節點信息。

3.  obj.selectAll(selector):獲取指定的節點,selector是css選擇器。返回一個 NodesRef 對象實例,可以用于獲取節點信息。

上面這兩個我感覺就是 js 中querySelector和querySelectorAll的區別。

4. obj.selectViewport():我沒用過這個方法。官方說是選擇顯示區域,可用于獲取顯示區域的尺寸、滾動位置等信息。也是返回一個 NodesRef 對象實例,可以用于獲取節點信息。

5. exec( function(res){} ):執行所有的請求,請求結果按請求次序構成數組,在callback的第一個參數中返回

上面返回的 NodesRef 對象實例就很重要了,它有三個方法:

1. boundingClientRect( function(rect){} ):就是這個方法,能夠動態獲取view元素的高度、寬度等屬性。還有其它的請看官方文檔

2. scrollOffset( function(res) {}):獲取節點的水平、垂直滾動的位置等。節點必須是scroll-view或者viewport

3. fields(fields,function(){res} ):這個可以獲取指定元素的自定義屬性和class名,具體的請看官方文檔的說明。

廢話了這么多,真正的實例用法:

wx.createSelectorQuery().selectAll('.npl-intro').boundingClientRect(function (rect) {  console.log(rect[0].height)  console.log(rect[0].width)}).exec()

如果覺得這樣寫有點長。可以分步寫。也是一樣的結果。

var obj=wx.createSelectorQuery();obj.selectAll('.npl-intro').boundingClientRect(function (rect) {  console.log(rect[0].height)  console.log(rect[0].width)})obj.exec() ;

或者在exec中返回,如果出現上面的方式出現獲取到的 rect 是 null 的話,可以考慮用下面這種,就不會出現問題。結果是一樣的。

var obj=wx.createSelectorQuery();obj.selectAll('.npl-intro').boundingClientRect();obj.exec(function (rect) {  console.log(rect[0].height)  console.log(rect[0].width)}) ;

當然,這方法可以寫在onLoadonReadyonShow等這些生命周期的方法,也可以寫在自定義的方法里。什么時候需要,什么時候就調用。

注意:如果要獲取通過wx:if 和setData來實現顯示與隱藏的元素,調用的這個方法的時候可能出現獲取到的內容為null。我的解決辦法是加個定時器:因為這個獲取元素的方法是異步的,所以只有拖延點時間再去獲取,不然有可能元素還未加載出來,就調用了這個方法,當然返回的結果就是null了。

//動態設置高度setTimeout(function () {  var query = wx.createSelectorQuery();  query.select('.nd-btnBox').boundingClientRect();  query.exec(function (rect) {    if (rect[0] === null) return;    that.setData({      marginBM: rect[0].height + 10    })  });}, 500)

官方 wx.createSelectorQuery() 接口

希望本文所述對大家微信小程序開發有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 他也色在线视频 | 午夜a狂野欧美一区二区 | 久久精品久久精品国产大片 | 精国品产一区二区三区有限公司 | 久久草在线观看视频 | 毛片小网站| 国产成人强伦免费视频网站 | 国产羞羞视频在线免费观看 | 中文字幕在线播放一区 | 久啪视频 | 成人艳情一二三区 | 毛片免费视频播放 | 亚洲国产精久久久久久久 | 一级空姐毛片 | 黄色国产在线观看 | 欧美一级片免费在线观看 | 在线成人免费视频 | 国产做爰 | 欧美精品免费一区二区三区 | 亚州精品国产 | 毛片118极品美女写真 | 激情亚洲网| 日韩电影av在线 | 国产一区精品视频 | 超碰人人做人人爱 | 国产毛片毛片毛片 | 香蕉成人在线视频 | 一级片999 | 免费亚洲视频在线观看 | 欧美成人一区二区三区电影 | 98国内自拍在线视频 | 日本欧美一区二区三区视频麻豆 | 国产91小视频在线观看 | 国产精品久久久久久久模特 | 日本中文高清 | 精品久久久久久成人av | 成年人小视频在线观看 | 久久精品在线免费观看 | 一级在线免费 | 免费看国产| 免费a级毛片永久免费 |