欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

小程序自定义头部导航

程序员文章站 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>

然后即可实现上图的效果了,添加返回上一页,返回首页,同理我们只需给组件传递参数进行判断展示即可

如有问题,欢迎大家私信我,共同探讨。

小程序自定义头部导航小程序自定义头部导航

需要上方小程序源码的,关注私信小编,留下邮箱。