scrollview 高度
微信小程序的 scroll-view
组件必须传一个指定高度才能正常使用。
https://cloud.tencent.com/developer/article/1972795
从上到下分别为:tab
、title
、scroll-view
,这三个组件中间还有两个 10px 的 margin。
需要注意的是计算用的单位都是 px,不是小程序的 rpx。因为下面调用接口获取可用屏幕高度时得到的就是 px 。
计算 scroll-view
的高度的公式如下:
Height(scroll-view) = 页面可用高度 - tab 高度 - title 高度 - 2*10(margin 大小)
使用 wx.getSystemInfoSync()
可以得到设备的各种信息,其中页面可用高度是 windowHeight
。
一般 UI 库都会讲 tab
组件设置为固定高度,而 title
组件则用户自定义。
如果这些都不是常量,可以使用微信提供的相关 API 来获取元素高度。
let query = wx.createSelectorQuery().in(this)
query.select('.title').boundingClientRect(function(res) {
//在这里做计算,res里有需要的数据
}).exec()
注意在组件 component 里使用的话,要用 wx.createSelectorQuery().in(this)
,将选择器的选取范围更改为自定义组件 component 内。(初始时,选择器仅选取页面范围的节点,不会选取任何自定义组件中的节点。)
如果要同时计算多个,可以采用如下代码:
computeScrollViewHeight() {
let that = this
let query = wx.createSelectorQuery().in(this)
query.select('.search').boundingClientRect()
query.select('.title-wrapper').boundingClientRect()
query.exec(res => {
let searchHeight = res[0].height
let titleHeight = res[1].height
let windowHeight = wx.getSystemInfoSync().windowHeight
let scrollHeight = windowHeight - searchHeight - titleHeight - 30 - 5 - 50
this.setData({ scrollHeight: scrollHeight})
})
},
注意 createSelectorQuery
适用的生命周期为 ready
。往前是获取不了数据的。