美文网首页
uni-app 自定义封装顶部导航栏-持续优化中...

uni-app 自定义封装顶部导航栏-持续优化中...

作者: THERAIN_ | 来源:发表于2020-08-08 11:41 被阅读0次

自定义顶部导航栏,
需要配合ThorUI 图标组件 https://thorui.cn/doc/docs/tui-icon.html
一起使用;

components组件结构:

<template>
    <view>
        <view class="tan-nav-box" :style="'background:'+backgroundColor">
            <view class="tan-title">
                <view class="tan-side tan-left"> 
                    <block v-if="isLeftMenu == true">
                        <tui-icon name="arrowleft" @click="MenuClick(1)" :size="backSize" :color="iconColor"></tui-icon>
                    </block>
                </view>
                <view class="title" :style="'color:'+titleColor">{{title}}</view>
                <view class="tan-side tan-right">
                    <block v-if="isRightMenu == true">
                        <tui-icon name="manage" @click="MenuClick(2)" :size="rightMenuSize" :color="iconColor"></tui-icon>
                        </view>
                    </block>
            </view>
        </view>
        <!-- #ifdef APP-PLUS -->
        <view class="" style="width: 100%;height: 70rpx"></view>
        <!-- #endif -->
        <view class="" style="width: 100%;height: 91rpx"></view>
    </view>
</template>

组件脚本:

<script>
    export default {
        name:'TopNavBar',
        data() {
            return {
                
            };
        },
        props:{
            // 返回按钮大小
            backSize:{
                type:Number,
                default:30
            },
            backgroundColor:{ // 导航栏背景颜色
                type:String,
                default:'#FFFFFF'
            },
            rightMenuSize:{ //右侧菜单大小
                type:Number,
                default:30
            },
            iconColor:{ // 图标颜色
                type:String,
                default:'#333'
            },
            titleColor:{
                type:String,
                default:'#000'
            },
            isLeftMenu:{ // 是否显示左侧按钮
                type:Boolean,
                default:false
            },
            isRightMenu:{ // 是否显示右侧安妮
                type:Boolean,
                default:false
            },
            //  标题
            title:{
                type:String,
                default:'耦愉'
            }
        },
        methods:{
            MenuClick(e){
                this.$emit('click', {
                    index:e 
                });
            }
        }
    }
</script>

组件样式

<style lang="less">
    .tan-nav-box{
        position: fixed;
        z-index: 999;
        //  #ifdef APP-PLUS
        padding-top: 70rpx;
        // #endif
        width: 100%;
        box-sizing: border-box;
    }
    
    .tan-title{
        width: 100%;
        height: 90rpx;
        padding: 10rpx 30rpx;
        box-sizing: border-box;
        display: flex;
        justify-content: space-between;
        align-items: center;
    }
    
    .tan-side{
        width: 150rpx;
        height: 90rpx;
        display: flex;
        align-items: center;
        
    }
    
    .tan-left{
        justify-content: flex-start;
    }
    
    .tan-right{
        justify-content: flex-end;
    }
</style>

在需要使用的页面中使用 :

<template>
    <view>
        <top-nav-bar :isLeftMenu="true" @click="handleClick" :isRightMenu="true" title="标题" titleColor="#fff"  :backSize="30" :rightMenuSize="28" iconColor="#333" backgroundColor="#ff6700"></top-nav-bar>
    </view>
</template>

来看看运行效果:


image.png

相关文章

网友评论

      本文标题:uni-app 自定义封装顶部导航栏-持续优化中...

      本文链接:https://www.haomeiwen.com/subject/kxxhdktx.html