微信小程序自定义顶部导航栏

小程序提供的顶部导航栏字体颜色仅支持 #ffffff 和 #000000两种,因其局限性多数情况需要自定义导航栏
导航栏替换基本流程如下

  1. 去掉原有小程序自带的导航栏;
  2. 计算导航栏高度。避免部分页面使用自带导航栏导致高度不一致的情况;
  3. 确定标题文字位置。

去掉顶部这个不太好看的黑壳壳子;

image.png
情况一:个别页面自定义
在当前页面所属的json配置文件中修改如下:

{
  "usingComponents": {},
  "navigationStyle": "custom"
}

情况二:全部页面自定义
在全局json配置文件(app.json)中修改windows参数如下(没有windows配置的手动添加):

"window": {
    "navigationStyle": "custom"
},

此时效果:

image.png

获取状态栏高度

注:获取的高度单位是px

wx.getSystemInfo({
	success: res => {
		const statusBarHeight = res.statusBarHeight
	}
})

状态栏高度即为图中骚粉色区域高度;

image.png

导航栏高度

骚粉区域的高度再加上xie红色区域的高度就是我们自定义的导航栏高度

所有的机型导航栏高度都是状态栏高度加上44px

	const navigationHeight = statusBarHeight + 44 + 'px';

此时我们就找到了导航栏的高度

确定标题位置

标题和右上角的胶囊处于同一水平区域居中显示,如图黄色区域:

image.png
首先获取胶囊的位置信息(获取结果单位为px)

	const capsuleInfo = wx.getMenuButtonBoundingClientRect();
	//bottom: 胶囊底部距离屏幕顶部的距离
	//height: 胶囊高度
	//left:   胶囊左侧距离屏幕左侧的距离
	//right:  胶囊右侧距离屏幕左侧的距离
	//top:    胶囊顶部距离屏幕顶部的距离
	//width:  胶囊宽度

我们只需要拿到胶囊的height值和top值即可完成标题文字定位

  <view class="title" style="height:{{height}}px;top:{{top}}px;">标题</view>

结束

至此导航栏的替换已经完成,其它个性化样式根据自身需要调整即可。

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值