1、首先可以在全局配置 所有的頁面 navigationStyle: custom ,此時所有的頁面都不會顯示navBar ;也可以 給指定的頁面使用自定義導航欄;
2、給自定義導航欄添加自適應高度
<template> <view class="navBar" :style="{height: navBarHeight+ 'px'}"> <!-- #ifdef H5 --> <view class="left-btn" @click="$router.go(-1)"> < </view> <!-- #endif --> <!-- #ifdef MP-WEIXIN --> <view class="left-btn" @tap="back()"> <image class="icon" src="../static/img/left_arrow.png" mode=""></image> </view> <!-- #endif --> <view class="title"> {{title}} </view> <view class="right-btn"> <slot name="rightBtn"></slot> </view> </view> </template> <script> export default { name:"navBar", props:{ title:{ type:String, default:"title" } }, data() { return { navBarHeight:40 }; }, mounted(){ // #ifdef MP-WEIXIN
let btnInfo = wx.getMenuButtonBoundingClientRect() this.navBarHeight = (2 * btnInfo.top)+ btnInfo.height; // #endif }, methods:{ back(){ uni.navigateBack({ delta:1 }) } } } </script> <style scoped> .icon { width: 20px; height: 20px; } .navBar { display: flex; padding: .1rem .2rem; align-items: center; justify-content: space-between; color: #fff; background: #007AFF; } </style>
這里的 wx.getMenuButtonBoundingClientRect() 可以獲取小程序膠囊位置的詳細信息,根據膠囊的位置來設置 navBar 的高度