微信小程序开发中怎么自定义导航栏
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了微信小程序开发中怎么自定义导航栏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发中怎么自定义导航栏文章都会有所收获,下面我们一起来看看吧。C
千家信息网最后更新 2026年11月03日微信小程序开发中怎么自定义导航栏
这篇文章主要介绍了微信小程序开发中怎么自定义导航栏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发中怎么自定义导航栏文章都会有所收获,下面我们一起来看看吧。
CustomNavBar.wxml
{{ navTitle }} {{ navTitle }}
CustomNavBar.wxss
.custom-navbar-con { position: relative; width: 100%; background-color: white; z-index: 9999; }.custom-navbar-con .custom-navbar-statusbar-con { width: 100%; }.custom-navbar-con .custom-navbar-content { width: 100%; }.custom-navbar-con .custom-navbar-left-menu-con { position: absolute; }.custom-navbar-con .custom-navbar-left-menu-con .custom-navbar-icon-btn { height: 100%; border-radius: 200px; border: 1px solid rgba(220, 220, 220, 0.6); }.custom-navbar-con .custom-navbar-left-menu-con .custom-navbar-icon-btn .icon { height: 90%; margin-top: 2.5%; }.custom-navbar-con .custom-navbar-left-menu-con .custom-navbar-icon-btn .text { font-size: 27rpx; }.custom-navbar-con .custom-navbar-left-menu-con .custom-navbar-icon-btn.back { border: none; }.custom-navbar-con .custom-navbar-left-menu-con .custom-navbar-icon-btn.back~.custom-navbar-icon-btn.home { margin-left: 10rpx; }.custom-navbar-con .custom-navbar-left-menu-con .custom-navbar-icon-btn.switch-shop { padding-left: 5px; padding-right: 25rpx; }.custom-navbar-con.ios .custom-navbar-title.android { display: none; }.custom-navbar-con.android .custom-navbar-title.ios { display: none; }.custom-navbar-con .custom-navbar-title.ios { font-weight: bold; text-align: center; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); }.custom-navbar-con .custom-navbar-title.android { padding-left: 30rpx; }```CustomNavBar.js
```javascriptmodule.exports = function(PageInstance) { let App = getApp() let _tplData = { _CustomNavBar_: { navRightMenuRect: App.NavRightMenuRect, navRightMenuCenterY: App.NavRightMenuCenterY, statusBarHeight: App.StatusBarHeight, winWidth: App.WinWidth, winHeight: App.WinHeight, iOS: App.iOS, navTitle: '', // 当前只合适短标题,如需长标题,建议隐藏自定义导航栏,自定义展示 navHeight: App.CustomNavHeight, needFixed: false, showNavBar: !App.NavRightMenuRect ? false : true, showLeftMenu: true, showBackBtn: true, showHomeBtn: false } } let _tplMethods = { customNavBarBack() { wx.navigateBack() }, customNavBarBackToHome() { let url = '/pages/index/index' wx.reLaunch({ url: url }) } } let isIndexPage = !!(PageInstance.route == 'pages/index/index') let pages = getCurrentPages() if (pages.length == 1) { _tplData._CustomNavBar_.showBackBtn = false _tplData._CustomNavBar_.showHomeBtn = !isIndexPage } // 每个页面 可单独配置自定义导航栏 if (PageInstance.data.CustomNavBarConfig) { Object.assign(_tplData._CustomNavBar_, PageInstance.data.CustomNavBarConfig) } // !!!! 最后执行 // 当无法获取到右上角按钮胶囊的布局位置时,强制设置自定义导航栏为隐藏状态 if (!App.NavRightMenuRect) { _tplData._CustomNavBar_.showNavBar = false } Object.assign(PageInstance, _tplMethods) PageInstance.setData(_tplData) return this}app.js的配置
// 自定义导航栏import CustomNavBar from './template/CustomNavBar/CustomNavBar'; App({ //自定义 模板式 组件 CustomNavBar, // 系统信息 WinWidth: 0, WinHeight: 0, StatusBarHeight: 0, PixelRatio: 1, SystemFullName: '', SystemVersion: '', SystemSDKVersion: '', //自定义导航栏相关 NavRightMenuRect: null, NavRightMenuCenterY: 0, CustomNavHeight: 0, onLaunch: function (options) { let self = this let systemInfo = wx.getSystemInfoSync() self.iOS = systemInfo.platform === 'ios' self.isDebug = systemInfo.platform === 'devtools' if (self.isDebug) { // 单纯为了在开发工具下调试 自定义导航栏 // 开发工具下不存在App版本号的区分 systemInfo.version = '7.0.0' } self.WinWidth = systemInfo.windowWidth self.WinHeight = systemInfo.windowHeight self.StatusBarHeight = systemInfo.statusBarHeight // 部分小程序库版本没有返回状态栏高度 if (!self.StatusBarHeight) { self.StatusBarHeight = 20 } self.PixelRatio = Math.max(systemInfo.pixelRatio, 2) self.SystemFullName = systemInfo.system self.SystemVersion = systemInfo.version self.SystemSDKVersion = systemInfo.SDKVersion // app.json全局配置的自定义导航栏的话,客户端需求版本为6.6.0 // 每个页面 单独配置的自定义导航栏的话,客户端需求版本为7.0.0 // wx.getMenuButtonBoundingClientRect方法,要求基础库版本为2.1.0 if (self.compareVersion(self.SystemVersion, '6.6.0') >= 0) { // 官方的6.6.0版本以上客户端,最低基础库版本为1.9.4 // 6.6.0以上且[1.9.4 - 2.1.0]范围内的机型无法使用wx.getMenuButtonBoundingClientRect // 所以手动写死非全面屏手机的适配胶囊布局位置 self.NavRightMenuRect = { top: 26, bottom: 58, right: self.WinWidth - 10, width: 87, height: 32 } // 如果系统信息返回的状态栏高度大于20,认为是全面屏手机 if (self.StatusBarHeight > 20) { self.NavRightMenuRect.top = 50 self.NavRightMenuRect.bottom = 82 } // 2019年08月21日22:09:22 // 微信小程序库出现bug,导致部分机型wx.getMenuButtonBoundingClientRect无返回值 // 所以在这之前先默认写死一个NavRightMenuRect,防止全局的自定义导航栏已经隐藏了但是无法显示自定义导航栏 // 详见https://developers.weixin.qq.com/community/develop/doc/00062238d78e880aedd88b72351c00 if (wx.getMenuButtonBoundingClientRect) { let NavRightMenuRect = wx.getMenuButtonBoundingClientRect() self.NavRightMenuRect = { top: NavRightMenuRect.top, bottom: NavRightMenuRect.bottom, right: NavRightMenuRect.right, width: NavRightMenuRect.width, height: NavRightMenuRect.height } } self.NavRightMenuCenterY = self.NavRightMenuRect.top + self.NavRightMenuRect.height / 2 self.CustomNavHeight = self.NavRightMenuRect.bottom + (self.NavRightMenuRect.top - self.StatusBarHeight) } else { self.NavRightMenuRect = null self.CustomNavHeight = 0 } }, // 比较两个版本号 compareVersion (v1, v2) => { v1 = v1.split('.') v2 = v2.split('.') const len = Math.max(v1.length, v2.length) while (v1.length < len) { v1.push('0') } while (v2.length < len) { v2.push('0') } for (let i = 0; i < len; i++) { const num1 = parseInt(v1[i]) const num2 = parseInt(v2[i]) if (num1 > num2) { return 1 } else if (num1 < num2) { return -1 } } return 0 } }),假如在index 页面引用
index.wxml
index.js
onLoad: function(options) { new App.CustomNavBar(this) }关于"微信小程序开发中怎么自定义导航栏"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"微信小程序开发中怎么自定义导航栏"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
导航
版本
开发
小程
配置
客户
客户端
状态
知识
页面
位置
信息
全局
内容
基础
工具
布局
开发工具
手机
机型
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广州万易互联网科技有限公司
互联网科技公司经营范围
互联网科技巨头监管
互联网科技卖菜
金融科技创新监管互联网金融
青岛互联网科技公司
互联网科技媒体
腾讯科技 互联网女皇
科技大学互联网专业好不好
常德市电业局互联网科技部
互联网大会黑科技排名
千方科技属于互联网企业吗
广西互联网科技孵化中心
互联网金融科技名词解释
科技互联网海报
互联网金融科技元年
昆明中奇联合互联网科技
互联网的科技体现在哪里
科技互联网专业工作会议发言稿
颐高云石互联网科技
苏州找大状互联网科技有限公司
新华互联网科技学校
互联网科技活动banner
关于新基建和互联网科技
互联网 卓越科技
互联网科技研发水平
河南住房之家互联网科技
厦门江牛科技互联网
广东鹅鹅鹅互联网科技有限公司
平安好医生打造互联网科技医疗