微信小程序自定义头部导航栏(适应机型)

自定义的头部导航栏的高度,因为机型的原因,很难确定!但是可以通过计算得出来导航栏的高度!(全局 定义、或者 单页面 自定义都可以的),下边我说的单页面自定义。


自己创建一个导航栏组件,比如命名navigationBar

在你需要自定义的页面的json文件,进行配置和引入组件

{
  "usingComponents": {
    "navigationBar": "../../components/navigationBar/navigationBar"
  },
  "navigationStyle": "custom"
}

在全局的app.js文件中

App({
	onLaunch(){
		this.topBarHeight();
	},
	globalData:{
		navigationBarHeight:0,//这个值整个导航栏的高度
		statusBarHeight:wx.getSystemInfoSync()['statusBarHeight'], //状态栏的高度
	}
	topBarHeight(){
	    var {top,height} = wx.getMenuButtonBoundingClientRect(); //胶囊按钮的位置
    	var statusH = wx.getSystemInfoSync()['statusBarHeight']; //状态栏的位置
    	var meneStatusHeight = top - statusH; //状态栏到胶囊按钮的距离
    	var navigationBarHeight = statusH + height + meneStatusHeight * 2; //整个头部导航栏:状态栏+状态栏距离胶囊按钮的距离*2+胶囊按钮的高度
    	this.globalData.navigationBarHeight = navigationBarHeight;
    	//this.globalData.navigationBarHeight = navigationBarHeight*2;  如果在行内使用rpx样式,则需要*2,如果是用的px则不需要
	}
})


然后在创建的navigationBar

在navigationBar.js中

const app = getApp();
const statusBarHeight = app.globalData.statusBarHeight;
const navigationBarHeight = (app.globalData.navigationBarHeight);
const containerHeight = navigationBarHeight - statusBarHeight;//这个是内容高度
Component({
	properties:{},
	 data: {
    	statusBarHeight: statusBarHeight + 'px',
    	navigationBarHeight: navigationBarHeight + 'px',
    	containerHeight: containerHeight + 'px',
  },
})

在navigation.wxml中

<view class="bar-box" style="{{'height:'+navigationBarHeight}}">
  <view class="status-height" style="{{'height:'+statusBarHeight}}"></view>
  <view>要加的内容</view>
</view>
<!--【这个很有用】,因为上边整个导航栏的盒子要fixed定位,所以导航栏部分不占位置,特意加一个空白盒子高度等于导航栏的填充-->
<view class="box1" style="{{'height:'+navigationBarHeight}}"></view>

在navigation.wxss中

.bar-box{
	 width: 100%;
  	 position: fixed;
  	 top: 0;
  	 left: 0;
  	 z-index: 100;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值