更新记录

1.0.1(2023-10-22) 下载此版本

更新在小程序中显示问题

1.0.0(2023-10-22) 下载此版本

自定义一个底部菜单栏,附有动画效果,传值即可使用,有default显示页面模式和swiper轮播图显示模式的传值,可便于开发时多个选择,使用该底部菜单栏后,建议开发者使用的菜单栏页面以组件的形式进行开发,如:首页、个人中心等在菜单栏使用的页面,否则无法起到该插件的基本效果。其他页面可正常在pages编写


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.8.10 × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

组件名:yg-tabbar 代码块: <yg-tabbar />

一款轻量级的uniapp底部自定义菜单栏组件,自用而开发的插件,方便因uniapp的原生组件无法实现自己想要的一些其他功能而开发的。

注意事项 该组件使用时请把需要添加的页面改为组件编写,不然无法获得组件的效果,如首页,请生成componets文件夹中的组件进行页面编写,因为不是原生uniapp的组件,做不到直接连接pages文件夹中的页面进行切换,所以必须组件化写入相对应的页面,不然无法获得相对应的效果。

引入方式

本组件符合easycom规范,HBuilderX 2.5.5起,只需将本组件导入项目,在页面template中即可直接使用,无需在页面中import和注册components

基本用法 示例

<yg-tabbar :tbStyle="tbStyle" @pagesChange="pagesChange" />

开启动画 示例

<yg-tabbar :tbStyle="tbStyle" :iconAnimation="iconAnimation" @pagesChange="pagesChange" />

同步切换 示例

<yg-tabbar :tbStyle="tbStyle":swiperCurrent="swiperCurrent" @pagesChange="pagesChange" />

开启角标 示例

<yg-tabbar :tbStyle="tbStyle":iconNumbers="iconNumbers" @pagesChange="pagesChange" />

data(){
    retrun {
        //角标显示,sort表示要显示的是第几个角标,起始值是0,num表示显示的数据,0不显示,大于0时才显示
        iconNumbers: {
                sort: 0,
                num: 99
        }, 
    }
}

data需要传入的值

    tbStyle:{
       list:[{
            image: '', //默认显示图片,图片大小为60rpx,但是最好用60px得图片,
            selectImage: '', //选中后显示得图片,图片大小为60rpx,但是最好用60px得图片,
            txt: '首页' ,//图标文字
            icon:0,//角标,如购物车类的,消息类的需要用到角标的填写,没有可以不写

        }],
        defaultcolor: '#8A8A8A', //默认字体颜色
        selectListTxtColor: '#4970c4', //选中后字体颜色
        selectIndex: 0, //选中之后的下标
        defaultFontSizi: '24rpx' ,//字体大小
        iconNumber:[]//小角标显示的地方,跟list的下标一致
    },
    iconAnimation:false,//是否显示切换图标动画

methods方法

         //轮播图滑动的页面切换,
        swiperChange(e) {
            this.swiperCurrent = e.detail.current
        },
        //以轮播图方式显示的滑动页面,来获取菜单下标
        currentChange(data) {
            this.swiperCurrent = data;
        },
        //以正常切换页面的方式切换组件
        pagesChange(e) {
            this.pageShow = e;
        }

完整页面切换示例

<template>
    <view>
        <view class="content" v-if="pagesFn=='swiper'">
            <swiper :indicator-dots="false" :autoplay="false" :duration="200" :current="swiperCurrent"
                @change="swiperChange">
                <swiper-item>
                    <view>
                        <yg-home />
                    </view>
                </swiper-item>
                <swiper-item>
                    <view>
                        <yg-classify />
                    </view>
                </swiper-item>
                <swiper-item>
                    <view>
                        <yg-user />
                    </view>
                </swiper-item>
            </swiper>
            <yg-tabbar :tbStyle="tbStyle" :iconNumbers="iconNumbers" :animationIcon="animationIcon"
                :swiperCurrent="swiperCurrent" @currentChange="currentChange" />
        </view>
        <view class="content" v-if="pagesFn=='default'">
            <yg-home v-if="pageShow=='首页'"/>
            <yg-classify v-if="pageShow=='分类页'"/>
            <yg-user v-if="pageShow=='个人中心'"/>
            <yg-tabbar :tbStyle="tbStyle" :iconNumbers="iconNumbers" :animationIcon="animationIcon"
                :swiperCurrent="swiperCurrent" @pagesChange="pagesChange" />
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                tbStyle: {
                    list:[
                        {
                            image: '/static/images/tabBarImage/home.png', //默认显示图片,图片大小为60rpx,但是最好用60px得图片,
                            selectImage: '/static/images/tabBarImage/selectHome.png', //选中后显示得图片,图片大小为60rpx,但是最好用60px得图片,
                            txt: '首页' ,//图标文字

                        },{
                            image: '/static/images/tabBarImage/home.png', //默认显示图片,图片大小为60rpx,但是最好用60px得图片,
                            selectImage: '/static/images/tabBarImage/selectHome.png', //选中后显示得图片,图片大小为60rpx,但是最好用60px得图片,
                            txt: '首页' ,//图标文字

                        },{
                            image: '/static/images/tabBarImage/home.png', //默认显示图片,图片大小为60rpx,但是最好用60px得图片,
                            selectImage: '/static/images/tabBarImage/selectHome.png', //选中后显示得图片,图片大小为60rpx,但是最好用60px得图片,
                            txt: '首页' ,//图标文字

                        }
                    ]
                }, //底部菜单样式表,详情请到组件中查看组件传值实例,组件只显示<5的菜单列表
                iconNumbers: {
                    sort: 0,
                    num: 99
                }, //角标显示,sort表示要显示的是第几个角标,起始值是0,num表示显示的数据,0不显示,大于0时才显示
                animationIcon: false, //是否开启切换动画,开启后,图标会出现动画放大缩小,关闭时图标会默认为放大
                swiperCurrent: 0, //轮播图swiper的current赋值到这里,tabBar点击事件的值也回传到这里
                pagesFn: 'swiper' ,//两种显示方式,swiper是轮播图式的页面翻页显示,swiper方式,currentChange函数会传一个Number下标值,你可以定义一个变量来使用,控制current的切换;default是正常的切换页面显示,显示方式如果是default,pagesChange函数会回传一个你自定义的菜单名,你可以在data中定义一个变量来使用
                pageShow:'首页'//定义一个变量,在组件上用v-if来负责显示底部菜单栏点击后应该显示哪个页面
            }
        },
        onLoad() {

        },
        methods: {
            //轮播图滑动的页面切换,
            swiperChange(e) {
                this.swiperCurrent = e.detail.current
            },
            //以轮播图方式显示的滑动页面,来获取菜单下标
            currentChange(data) {
                this.swiperCurrent = data;
            },
            //以正常切换页面的方式切换组件
            pagesChange(e) {
                this.pageShow = e;
            }
        }
    }
</script>

<style scoped>
    swiper {
        width: 100%;
        background-color: #fff;
        height: calc(100vh - 115rpx);
    }
</style>

API yg-tabbar Props

属性名 类型 默认值 说明
tbStyle Object 添加菜单按钮有image/selestImage/txt/icon等属性
iconNumbers Object 角标显示,有sort/num两个属性,sort是第几个图标显示角标,num是显示多少数字
animationIcon Boolean false 是否开启切换动画,开启会出现动画放大缩小,关闭时默认为放大
swiperCurrent Number 0 使用轮播图做页面组件的话的current赋值到这里,tabBar点击事件的值也回传到这里

tbStyle包含的属性

属性名 类型 默认值 说明
list array 添加菜单按钮的数组,有image/selestImage/txt/icon等属性,传入相应的属性值,可生成底部菜单按钮,类似uniapp的tabbar组件传入方式
defaultcolor String '#8A8A8A' 默认字体颜色
selectListTxtColor String '#4970c4' 选中后字体颜色
selectIndex Number 0 选中之后的下标
defaultFontSizi String '24rpx' 字体大小

methods方法

函数名 传值类型 说明
@swiperChange Number 该函数传入一个的轮播图下标(e.detail.current),获取下标后给组件的属性swiperCurrent传入该值,可控制轮播图和组件做联动切换
@currentChange Number 该函数会从组件回传一个下标(data),该值可以赋值到轮播图的Current上,同步轮播图的翻页效果
@pagesChange String 组件回传一个字符串,可用来控制显示哪一个空间,比如首页显示、个人中心显示等

另:制作不易,请大家轻点喷,有任何建议或者意见,都可以留言,后续会开发相对应的导航组件和页面配套组件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问