小程序自定义导航如何实现的,代码是什么

Admin 2022-09-13 群英技术资讯 311 次浏览

今天小编跟大家讲解下有关“小程序自定义导航如何实现的,代码是什么”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助。


 

微信小程序自定义导航的具体代码如下

在app.js中获取状态栏信息和胶囊按钮信息

onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)
    // 获取系统信息
    this.globalData.systemInfo = wx.getSystemInfoSync();
    // 获取状态栏高度
    this.globalData.statusBarHeight = this.globalData.systemInfo.statusBarHeight
    // 胶囊按钮位置信息
    this.globalData.menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    // 获取导航栏高度
    this.globalData.navBarHeight = this.globalData.menuButtonInfo.bottom + (this.globalData.menuButtonInfo.top - this.globalData.statusBarHeight)
},
globalData: {
    statusBarHeight: '',
    menuButtonInfo: {},
    navBarHeight:'',
    systemInfo:''
  },

导航栏高度为胶囊底部位置+(胶囊顶部位置-状态栏高度)

将导航栏封装成组件

navigation-bar.js

properties: {
    // 是否显示返回箭头
    showBackArrow: {
        type: Boolean,
        value: true
    },
    // 是否自定义导航栏标题
    customTitle: {
        type: Boolean,
        value: false
    },
    // 导航栏标题
    title: {
        type: String,
        value: 'weixin'
    },
    // 是否自定义返回方法
    customBack: {
        type: Boolean,
        value: false
    }
},
data: {
    navBarHeight:getApp().globalData.navBarHeight,
    statusBarHeight:getApp().globalData.statusBarHeight,
    menuButtonInfo:getApp().globalData.menuButtonInfo
},
methods: {
    /**  点击返回按钮 */
    back() {
        if (this.data.customBack) {
            this.triggerEvent('back')
        } else {
            wx.navigateBack({
                delta: 0,
            })
        }
    },
    /** 点击导航栏标题事件 */
    clickTitle(){
        this.triggerEvent('clickTitle')
    },
}

navigation-bar.wxml

<view class="nav-bar" style="height:{{navBarHeight}}px;">
    <view style="height:{{statusBarHeight}}px;"></view>
    <view style="height:{{navBarHeight-statusBarHeight}}px;width:{{menuButtonInfo.left}}px;" class="nav-box">
        <view class="back-arrow" wx:if="{{showBackArrow}}">
            <van-icon name="arrow-left" color="#262626" size="40rpx" bindtap="back"></van-icon>
        </view>
        <view class="nav-title" style="width: {{showBackArrow?'calc(100% - 40rpx)':'100%'}};">
            <text wx:if="{{!customTitle}}" bindtap="clickTitle">{{title}}</text>
            <slot wx:if="{{customTitle}}"></slot>
        </view>
    </view>
</view>
<view style="height:{{navBarHeight}}px;"></view>

navigation-bar.wxss

.nav-bar{
    width: 100%;
    position: fixed;
    top: 0;
    left: 0;
    background-color: #ffffff;
    z-index: 1000000;
}

.nav-box{
    padding: 0 20rpx;
    display: flex;
    align-items: center;
}

.back-arrow{
    width: 60rpx;
    height: 100%;
    display: flex;
    align-items: center;
    padding-top: 4rpx;
}

.nav-title{
    height: 100%;
    display: flex;
    align-items: center;
    font-size: 36rpx;
    color: #262626;
    font-weight: 600;
}

使用

app.js

"window": {
        "navigationStyle": "custom"
    },
    "usingComponents": {
        "navigation-bar":"/components/navigation-bar/navigation-bar",
    }

.wxml

<navigation-bar title="打卡" customBack bind:back="backWorkPage"></navigation-bar>


感谢各位的阅读,以上就是“小程序自定义导航如何实现的,代码是什么”的内容了,经过本文的学习后,相信大家对小程序自定义导航如何实现的,代码是什么都有更深刻的体会了吧。这里是群英网络,小编将为大家推送更多相关知识点的文章,欢迎关注! 群英智防CDN,智能加速解决方案
标签: 小程序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服