• 微信小程序自定义tabBar


    效果:

     

     

    参考官方网站,自定义tabBar

    自定义 tabBar | 微信开放文档

    1、配置信息

    需要在app.json中设置一个属性custom,为true ,代表全局开启自定义tab

    注意:当我们设置了custom属性之后,那么tabBar下面的list数组是否可以删了呢?

    答:不可以,文档里面已经明确表示是不可以删的,需要保持完整配置项以及低版本里面可以不适用自定义tabBar,因此需要兼容、

    2、添加代码文件。

    这个目录结构是固定的 ,必须要在项目根目录创建一个文件夹: custom-tab-bar,以及对应的文件。

    第一步骤中的custom设置为true,小程序就可以自动读取该目录下的index组件,把该组件当做tab渲染出来。

    点击加号,在根目录新建一个custom-tab-bar文件夹

     

    然后右键该文件夹,点击新建components,输入index,回车,就会自动创建四个文件

     

     

    此时我们可以看到小程序底部出现,就代表创建成功了。因为他自动识别了tabBar页面。

     

     3、在该目录下编写代码即可。

     

     建立好之后我们引入vant组件库里面的tab组件:

    首先在js文件下,引入

    1. "usingComponents": {
    2. "van-tabbar": "/miniprogram_npm/@vant/weapp/tabbar/index",
    3. "van-tabbar-item": "/miniprogram_npm/@vant/weapp/tabbar-item/index"
    4. }

     然后再wxml中写入 vant官网提供的tabbar标签栏

    Vant Weapp - Tabbar 标签栏轻量、可靠的小程序 UI 组件库https://vant-contrib.gitee.io/vant-weapp/#/tabbar

    1. <van-tabbar active="{{ active }}" bind:change="onChange">
    2. <van-tabbar-item icon="wap-home">首页</van-tabbar-item>
    3. <van-tabbar-item icon="shopping-cart" info="5">购物车</van-tabbar-item>
    4. <van-tabbar-item icon="manager" dot>我的</van-tabbar-item>
    5. </van-tabbar>

    在js文件下写入官网提供的变量以及点击切换按钮change事件。

     效果:

    注意:图标是可以自定义的,自己看vant文档就好了,如果不需要就直接使用vant提供的图标,通过修改icon的名称来实现。

     注意:

    我们想直接修改tabbar组件的样式,需要找到对应元素的类名,例如我想调整文本与图标之间的距离:(小提示:按住shift键 鼠标按住左键,上下拉动模拟器可以实现放大缩小效果。)

    我们可以看到,他是默认给图标加了个margin值 

     

     

     主要是下面这条代码:
    他代表什么意思呢?
    意思是margin-bottom值取得是--tabbar-item-margin-bottom这个变量的值或者5px,如果存在变量--tabbar-item-margin-bottom就取该变量的值,否则默认5px值。

    margin-bottom: var(--tabbar-item-margin-bottom,5px);

    因此我们来修改这个变量:

    通过父类定义 在index.wxss中定义:

    1. .van-tabbar-item{
    2. --tabbar-item-margin-bottom:0
    3. }

     保存之后,发现并没有效果:

     

     看了文档以后,发现需要开启这个属性,不然在自定义组件中修改vant的默认样式是不会生效的

    因此我们index.js中设置

    1. options:{
    2. styleIsolation:'shared'
    3. },

     可以看到距离就没那么大了:

     接下来我们简化代码。用循环写这个tabbar。

    在index.js中定义一个list

    1. list:[
    2. {
    3. path:"pages/home/home",
    4. icon:"wap-home",
    5. text:"首页"
    6. },
    7. {
    8. path:"pages/shopcart/shopcart",
    9. icon:"shopping-cart",
    10. text:"购物车",
    11. info:10,
    12. },
    13. {
    14. path:"pages/mine/mine",
    15. icon:"manager",
    16. text:"我的"
    17. }
    18. ]

     wxml中这样写:因为不能保证每个都需要徽标,因此,我们只给购物车定义了info属性,通过三目运算,去判断是否存在info,存在就显示徽标,否则不显示。

    1. <van-tabbar active="{{ active }}" bind:change="onChange">
    2. <van-tabbar-item wx:for="{{list}}" wx:key="index" info="{{item.info?item.info:''}}" icon="{{item.icon}}">{{item.text}}</van-tabbar-item>
    3. </van-tabbar>

     这篇文章就到此结束了,下篇文章,讲如何让购物车上的数字徽标,动态加加变化。

  • 相关阅读:
    python爬虫爬取网易云音乐(超详细教程,附源码)
    什么是M365 Manager Plus?
    PCL 计算USC(UniqueShapeContext)特征描述子
    Mac在Python3.8环境下安装Scrapy及踩坑分享
    MES管理系统如何解决电子企业排产难度大的问题
    C#线程发展历史
    js-判断android,ios,pc三端环境
    http客户端:Feign的使用 与 日志配置
    16.左侧导航菜单制作
    [附源码]Java计算机毕业设计SSM高铁乘坐舒适性在线调查及评价系统
  • 原文地址:https://blog.csdn.net/qq_41579104/article/details/125356332