小程式windowHeight在不同頁面高度不一致問題及解決方案
阿新 • • 發佈:2018-11-10
小程式可以通過wx.getSystemInfo獲取系統資訊
1. windowHeight
概念
可使用視窗高度,即:螢幕高度(screenHeight
) - 導航(tabbar
)高度 - 導航欄高度 - 狀態列高度。
在不含導航(tabbar)的頁面,
windowHeight =螢幕高度(screenHeight
) - 導航欄高度 - 狀態列高度
瞭解規則
iPhone X : 導航欄高度 44 、 狀態列高度 44 、tabBar高度 83
其他機型 : 導航欄高度 44 、 狀態列高度 20 、 tabBar高度 49
2.使用windoeHeight
在頁面中呼叫wx.getSystemInfo即可獲取當前頁面的螢幕高度,
wx.getSystemInfo({ success: function (res) { console.log('--------------獲取系統資訊,獲取螢幕高度---------------') console.log(res) }, fail: function (res) { }, complete: function (res) { }, })
3.不同頁面WINDOWHEIGHT不一致解決辦法
但是不同頁面獲取的螢幕高度不同,為了方便使用,將WINDOWHEIGHT寫入全域性變數,在含有的TabBar頁面正常呼叫,在不含的TabBar頁面加上的TabBar的高度使用
app.js
onLaunch(){ // 獲取螢幕高度 wx.getSystemInfo({ success: function (res) { that.globalData.windowHeight = res.windowHeight }, }) }, globalData: { windowHeight:'' }
含有的TabBar的頁面
xxx.js
var app = getApp();
data:{
windowHeight: app.globalData.windowHeight,
}
不含的TabBar的頁面
xxx.js
var app = getApp();
data:{
windowHeight: app.globalData.windowHeight + 48,
}
頁面使用
xxx.wxml
<view style='height:{{windowHeight+"px"}}'>
在app.js中獲取到的WINDOWHEIGHT包含的TabBar的高度
所以在不含的TabBar的頁面比含的TabBar頁面需要多加一個的TabBar的高度
以下為小程式官方文件wx.getSystemInfo的介紹
wx.getSystemInfo(Object object)
獲取系統資訊
引數
物件物件
屬性 | 型別 | 預設值 | 是否必填 | 說明 | 支援版本 |
---|---|---|---|---|---|
成功 | 功能 | 否 | 介面呼叫成功的回撥函式 | ||
失敗 | 功能 | 否 | 介面呼叫失敗的回撥函式 | ||
完成 | 功能 | 否 | 介面呼叫結束的回撥函式(呼叫成功,失敗都會執行) |
object.success回撥函式
引數
物件資源
屬性 | 型別 | 說明 | 支援版本 |
---|---|---|---|
牌 | 串 | 手機品牌 | > = 1.5.0 |
模型 | 串 | 手機型號 | |
pixelRatio | 數 | 裝置畫素比 | |
螢幕寬度 | 數 | 螢幕寬度 | > = 1.1.0 |
screenHeight | 數 | 螢幕高度 | > = 1.1.0 |
WINDOWWIDTH | 數 | 可使用視窗寬度 | |
WINDOWHEIGHT | 數 | 可使用視窗高度 | |
statusBarHeight | 數 | 狀態列的高度 | > = 1.9.0 |
語言 | 串 | 微信設定的語言 | |
版 | 串 | 微信版本號 | |
系統 | 串 | 作業系統版本 | |
平臺 | 串 | 客戶端平臺 | |
fontSizeSetting | 數 | 使用者字型大小設定。以“我 - 設定 - 通用 - 字型大小”中的設定為準,單位px。 | > = 1.5.0 |
SDKVersion | 串 | 客戶端基礎庫版本 | > = 1.1.0 |
benchmarkLevel | 數 | (僅Android)效能等級,-2或0:該裝置無法執行小遊戲,-1:效能未知,> = 1裝置效能值,該值越高,裝置效能越好(目前裝置最高不到50) | > = 1.8.0 |