自定义微信小程序顶部导航栏,适配兼容踩坑第一天

501 阅读1分钟

拿到需求,首先拆分,组件,参数,方法,各种情况统统要考虑进来。

小程序的导航是由状态栏+标题导航栏构成,因为需要自适应,所以我们所有数据不能写死,均自动获取,计算。

app.js里面获取状态栏高度,胶囊信息,并存储为全局变量

状态栏高度statusBarHeight=wx.getSystemInfoSync().statusBarHeight

获取菜单按钮(右上角胶囊按钮)的布局位置信息方法menuButtonObject = wx.getMenuButtonBoundingClientRect()

标题导航栏高度=胶囊高度 + (胶囊距离顶部距离-状态栏高度)*2

标题导航栏高度menuButtonObject.height + (menuButtonObject.top - statusBarHeight)*2

okokok 大体情况就是这样的,接下来就可以写组件了,app.json配置"navigationStyle": "custom" ,声明使用自定义导航。

定义导航组件,在页面直接使用,当然还有很多参数比如有些页面不需要显示返回首页,有些页面不需要返回按钮等,通过组件参数配置就OK啦

踩坑:组件内使用粘性布局的时候页面滚动,导航也会滚动,所以需要手动配置粘性距离顶部距离,距离也同样动态配置,offsetTop=menuButtonObject.height + (menuButtonObject.top - res.statusBarHeight)*2 + statusBarHeight