微信小程序开发中怎么自定义导航栏
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍了微信小程序开发中怎么自定义导航栏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发中怎么自定义导航栏文章都会有所收获,下面我们一起来看看吧。C
千家信息网最后更新 2025年11月12日微信小程序开发中怎么自定义导航栏
这篇文章主要介绍了微信小程序开发中怎么自定义导航栏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发中怎么自定义导航栏文章都会有所收获,下面我们一起来看看吧。
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安全错误
数据库的锁怎样保障安全
微信说我违反网络安全法
计算机网络技术工作规划
db2数据库恢复到另一台机
2018年网络安全回顾
北海合耀网络技术有限公司
圣达维软件开发有限公司
文献数据库制作
航天开票安全接入服务器地址
网络安全信息系统分级
国光软件开发有限责任公司
达梦数据库单表备份与恢复
淮南市网络安全应急处置培训班
甲方做软件开发好呢
solidworks数据库
助理软件开发工程师好干嘛
批量删除dhcp服务器数据
数据库reactor
电子科技大学工业互联网特色班
培训机构管理系统需要服务器吗
服务器安全第三方检测机构
广东app软件开发市场价
数据库免维护
闵行区音频led大屏服务器
软件开发工程
期刊文献数据库排名
丰台区推广网络技术售后服务
数据库查询类
天津中搜网络技术有限公司
成都软件开发厂家
数据库的主机和ftp主机