小程序自定义头部导航
程序员文章站
2022-07-12 13:58:04
...
由于各种的需求,现在小程序已经开始支持自定义头部导航了,接下来给大家讲接如何实现。
一,首先配置自定义导航
app.json配置 "navigationStyle": "custom" 接下来你会发现 默认的头部没有了;
二,开始写我们的自定义导航组件
那么问题来了 我们如何定义导航的高度呢,接下来直接上文档,上代码;
App({
onShow: function (options) {
// 判断是否由分享进入小程序
if (options.scene == 1007 || options.scene == 1008) {
this.globalData.share = true //判断分享打开 正常打开 如果分享进入及不需要展示后退
} else {
this.globalData.share = false
};
this.globalData.capsule = wx.getMenuButtonBoundingClientRect(); //获取胶囊宽高及位置
wx.getSystemInfo({
success: (res) => {
console.log(res)
this.globalData.height = res.statusBarHeight
}, fail(err) {
console.log(err);
}
})
}
})
拿到了导航的高度,胶囊高度之后我们就可以开始写components组件了
<view class='nav-wrap' style='height: {{height*2 + 20}}px;'>
<view class="searchBox" style='height:{{capsule.height-1}}px;position: absolute; top:{{capsule.top}}px; left:{{left}}px;'>
<image class="search_icon" src='../../images/search.png'></image>
<input placeholder="搜索" placeholder-class="placeActive"></input>
</view>
</view>
const app = getApp()
Component({
data: {
height: '',
left:0,
capsule:{},
//默认值 默认显示左上角
navbarData: {
showCapsule: 1
}
},
attached: function () {
wx.getSystemInfo({
success: (res) => {
this.setData({
left: res.windowWidth - app.globalData.capsule.right,//文本框据左边距离
height: app.globalData.height,
capsule: app.globalData.capsule,
});
}
})
},
methods: {
// 返回上一页面
_navback() {
wx.navigateBack()
},
//返回到首页
_backhome() {
// wx.switchTab({
// url: '/pages/index/index',
// })
wx.reLaunch({
url: '/pages/index/index',
})
}
}
})
接下来调用组件
<header-nav capsule-data='{{capsule}}'></header-nav>
然后即可实现上图的效果了,添加返回上一页,返回首页,同理我们只需给组件传递参数进行判断展示即可
如有问题,欢迎大家私信我,共同探讨。
需要上方小程序源码的,关注私信小编,留下邮箱。