微信小程序:屏幕高度(screenHeight)和可使用窗口高度(windowHeight)什么时候相同?什么时候不同?

app.json中配置"navigationStyle": “custom”

不管渲染引擎使用webview,还是skyline,只要在app.json中配置了"navigationStyle": "custom",那么在页面中获得的屏幕高度(screenHeight)和可使用窗口高度(windowHeight)是相同的

例如,app.json中配置如下:
在这里插入图片描述

页面index.wxml:

<!--index.wxml-->
<navigation-bar title="验证" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
  <view class="container">
    Weixin
  </view>
</scroll-view>

index.js文件:

// index.js
Page({
  onReady() {
    console.log(wx.getWindowInfo());
  }
})

页面index.json:

{
  "usingComponents": {
    "navigation-bar": "/components/navigation-bar/navigation-bar"
  }
}

编译小程序,打印的日志:
在这里插入图片描述

在页面中获得的屏幕高度(screenHeight)和可使用窗口高度(windowHeight)是相同的。

app.json中配置"navigationStyle": “default”

在app.json中配置"navigationStyle": "default",此时只能使用webview渲染引擎,那么在页面中获得的屏幕高度(screenHeight)和可使用窗口高度(windowHeight)是不同的

例如,app.json配置:
在这里插入图片描述

页面index.wxml:

<!--index.wxml-->
<navigation-bar title="验证" back="{{false}}" color="black" background="#FFF"></navigation-bar>
<scroll-view class="scrollarea" scroll-y type="list">
  <view class="container">
    Weixin
  </view>
</scroll-view>

页面index.js文件:

// index.js
Page({
  onReady() {
    console.log(wx.getWindowInfo());
  }
})

页面index.json文件:

{
  "usingComponents": {
    "navigation-bar": "/components/navigation-bar/navigation-bar"
  }
}

编译小程序,打印的日志:
在这里插入图片描述

在页面中获得的屏幕高度(screenHeight)和可使用窗口高度(windowHeight)是不同的。

### 微信小程序中获取屏幕高度微信小程序开发过程中,为了适配不同的设备尺寸,通常需要动态获取用户的屏幕高度。通过调用微信提供的API `wx.getSystemInfoSync()` 可以同步获得系统的相关信息,其中包括窗口高度宽度。 #### 使用`getSystemInfoSync` 此方法能够立即返回系统信息对象,其中包含了多个关于设备显示的信息字段。对于获取屏幕高度而言,有两个重要的属性: - **windowHeight**: 表示WebView可使用的区域高度(即不包括顶部状态栏、底部导航栏以及可能存在的Tab Bar),单位为px[^1]。 ```javascript const systemInfo = wx.getSystemInfoSync(); console.log('Window Height:', systemInfo.windowHeight); ``` 如果希望得到整个物理屏幕高度,则应该关注另一个参数: - **screenHeight**: 描述的是完整的手机屏幕高度,覆盖了所有的UI组件如通知栏等[^2]. ```javascript const systemInfo = wx.getSystemInfoSync(); console.log('Screen Height:', systemInfo.screenHeight); ``` 需要注意的是,在实际应用中,开发者往往更关心可用视口内的空间大小,也就是`windowHeight`所代表的部分,因为这部分才是应用程序可以直接渲染内容的地方。 另外,当涉及到带有自定义 tabBar 的页面布局时,由于 tabBar 占用了额外的空间,因此计算有效展示区间的高度还需要减去 tabBar 自身的高度。从基础库版本 2.5.0 开始支持自定义 tabBar 功能[^4],这意味着可以根据需求调整界面设计而不必受限于默认样式。 综上所述,要准确地获取微信小程序中的屏幕高度,建议依据具体的业务场景来决定是采用`windowHeight`还是`screenHeight`作为参考标准,并考虑到任何附加控件的影响因素。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值