在移动端,很多的app都需要设置沉浸式导航栏,但是手机适配又成了一个很大的问题,所以通过获取手机状态栏高度,再增加页面padding的方法应该是最好的,可以适应各种妖孽手机,首先需要在HBuilder的配置文件中设置沉浸式导航,找到manifest.json文件下的plus对象,然后贴如下面代码:
1 2 3
| "statusbar": { "immersed": true },
|
下面代码片段是获取移动端状态栏高度的。
注:此代码写在main.js中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| setTimeout(()=>{ if(window.plus){ var isImmersedStatusbar = plus.navigator.isImmersedStatusbar(); if (isImmersedStatusbar) { var StatusbarHeight = plus.navigator.getStatusbarHeight(); if (plus.device.model.toString() == 'iPhoneX') { Vue.prototype.$StatusbarHeight = StatusbarHeight + 15; } else { Vue.prototype.$StatusbarHeight = StatusbarHeight; } } plus.navigator.setStatusBarStyle('dark'); new Vue({ el: '#app', router, store, components: { App }, template: '<App/>' }) } },100)
|
在获取到高度后,在app.vue页面来给#app增加padding值,这里一劳永逸型,哈哈。
1
| :style="{paddingTop:`${$StatusbarHeight}px`}"
|
如果有个别状态栏背景色不一样的,可以给#app动态添加class来解决,