小程序自定义tabbar—让你的小程序与众不同

前言

本篇文章将详细介绍微信小程序自定义tabbar的设置方法和注意事项,希望能够帮助广大开发者更好地开发和设计自己的微信小程序,实现更加个性化和独特的用户体验。

目录

前言  

一、自定义tabbar设置的重要性  
二、怎么设置自定义tabbar呢  
    第一步,配置信息  
    第二步,添加tabBar代码文件  
    第三步,编写tabBar代码  
    第四步,使用tabBar  
三、注意事项

🔥  发本文章由猿梦_小星原创
📢 本文章主旨——讲解微信小程序自定义tabbar的设置方法和注意事项 🙏 希望这篇文章能够给您带来帮助,给小编 点赞👍+关注🧡+收藏🚩+评论💬

一、自定义 tabbar 设置的重要性

微信小程序是一种新型的应用程序,可以在微信内部直接运行,无需下载和安装,具有轻量、易开发、易传播等特点。作为一种新型的应用形态,微信小程序在近几年已经得到广泛应用和推广。然而,微信小程序的开发规范和限制也给开发者带来了很多挑战,其中之一就是原生tabbar的限制。

默认情况下,微信小程序的底部导航栏(也称tabbar)是固定的,开发者无法更改其样式和布局,也无法实现更加个性化和独特的设计。为了解决这个问题,开发者可以选择自定义tabbar,从而实现更加灵活和自由的设计。

总之呢,自定义tabbar是一种非常实用的功能,可以让微信小程序更加美观、灵活、个性化,提高用户体验和差异化竞争力。

Snipaste_2023-06-27_10-39-38.jpg

 二、怎么设置自定义 tabbar

首先,我们来看以下官方给我们的文档: 自定义 tabBar | 微信开放文档 (qq.com)

定眼一看,是不是一头雾水,接下来,跟随小编一起来进行保姆级操作吧!

第一步,配置信息

注:这一步的操作呢,是必须的,一呢,是需要指定以下custom 字段,二呢,是为了如果自定义tabbar没有显示,那么现在设置的将会被显示。

在app.json中编写代码,如下:

"tabBar": {
        "custom": true,
        "color": "#a5b5b5",
        "selectedColor": "#22cd5e",
        "borderStyle": "black" ,
        "list": [{
          "selectedIconPath": "images/tabBar/icon_1.png",
          "iconPath": "images/tabBar/icon_11.png",
          "pagePath": "pages/index/index",
          "text": "首页"
        }, {
          "selectedIconPath": "images/tabBar/icon_2.png",
          "iconPath": "images/tabBar/icon_22.png",
          "pagePath": "pages/messages/messages",
          "text": "消息"
        },{
          "selectedIconPath": "images/tabBar/icon_3.png",
          "iconPath": "images/tabBar/icon_33.png",
          "pagePath": "pages/lianPage/lianPage",
          "text": "我的"
        }
      ]
    },

按照平时设置tabbar的设置即可,记得要添加"custom": true字段。

第二步,添加tabBar代码文件

注:第二步代码和第三步代码在官方文档中给出的实例代码中复制即可。

在代码根目录下添加入口文件:

  custom-tab-bar/index.js
	custom-tab-bar/index.json
	custom-tab-bar/index.wxml
	custom-tab-bar/index.wxss=

第三步,编写tabBar代码

wxml代码:

<view class="tab-bar">
  <view class="tab-bar-border"></view>
  <view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
    <image src="{{selected === index ? item.selectedIconPath : item.iconPath}}"></image>
    <view style="color: {{selected === index ? selectedColor : color}}">{{item.text}}</view>
  </view>
</view>

js代码:

Component({
  data: {
    selected: 0,
    color: "#a5b5b5",
    selectedColor: "#22cd5e",
    list: [{
      pagePath: "/pages/index/index",
      iconPath: "/image/tabBar/icon_11.png",
      selectedIconPath: "/image/images/tabBar/icon_1.png",
      text: "首页"
    },{
      pagePath: "/pages/messages/messages",
      iconPath: "/image/tabBar/icon_22.png",
      selectedIconPath: "/image/tabBar/icon_2.png",
      text: "消息"
    }{
      pagePath: "/pages/lianPage/lianPage",
      iconPath: "/image/tabBar/icon_33.png",
      selectedIconPath: "/image/tabBar/icon_3.png",
      text: "我的"
    }]
  },
  attached() {
  },
  methods: {
    switchTab(e) {
      const data = e.currentTarget.dataset
      const url = data.path
      wx.switchTab({url})
      this.setData({
        selected: data.index
      })
    }
  }
})

wxss代码:

.tab-bar {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 80px;
  background: white;
  display: flex;
  flex-direction: row;
  padding-bottom: env(safe-area-inset-bottom);
  pointer-events: auto;
}

.tab-bar-border {
  background-color: rgba(0, 0, 0, 0.33);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 1px;
  transform: scaleY(0.5);

json代码:

{
  "component": true
}

第四步,使用tabBar

注:这里的给出的代码和官方给出的实例代码略有不同,区别在于,实例代码中所用的是Component组件生命周期,而我们常用的是page生命周期函数。

在每个tarbbar页面中的js文件下,添加如下代码:

onShow: function () {
    if (typeof this.getTabBar === 'function' &&  this.getTabBar()) {
      this.getTabBar().setData({
        selected: 1
      })
    }
  }

即可大功告成,这里所写的都是最基本设置自定义tabBar的方法,用户可以根据自己的需求来设置样式等等。

三、注意事项

  1. 需要隐藏原生tabbar:在使用自定义tabbar之前,需要先隐藏原生tabbar,否则会出现两个tabbar的情况,影响用户体验。可以在 app.js 中的 onLaunch 方法中调用 wx.hideTabBar() 方法隐藏原生tabbar。
  2. 自定义样式需要符合设计规范:虽然自定义tabbar可以更加灵活和自由地设计样式和布局,但是需要遵守微信小程序的设计规范,否则可能会被审核不通过。
  3. 处理页面切换的逻辑:在自定义tabbar中,需要处理页面切换的逻辑,可以使用 wx.switchTab() 方法实现页面切换。需要注意的是,如果使用 wx.navigateTo() 或 wx.redirectTo() 方法,会新开一个页面,而不是切换到已有页面。
  4. 需要处理不同页面间的状态:在使用自定义tabbar时,需要处理不同页面间的状态,例如在购物车页面添加商品时,需要在我的页面的购物车图标上添加未读消息数量。可以使用小程序的事件总线或其他状态管理工具来实现跨页面状态管理。
  5. 兼容性问题:自定义tabbar可能会存在兼容性问题,需要在不同的设备和平台上进行测试,确保兼容性。

综上所述,小程序自定义tabbar需要注意以上这些事项,才能更好地实现自定义tabbar功能,提升用户体验。

coffee-3567_256.gif

关注小编,下期带你看市面上常见的自定义tabbar样式。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-15 17:17
听说过付费实习,没想到这么贵啊我去,要不我给你个腰子吧
哈哈哈,你是老六:这种公司一定要注意啊,不要随便签合同,只要签了后面钱可能回不来,而且你通过法律途径也弄不回
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-21 11:33
昨天是学校最后一场招聘会,鼠鼠去参加了,全场只有一个招聘java的岗位,上来先做一份笔试题,做完后他拿张纸对答案,然后开始问简历上的问题,深圳小厂,6-8k(题目如下),后面还有两轮面试。然后我就在招聘现场逛呀逛,看到有公司招聘电商运营,给的比上年的小厂还多,鼠鼠就去了解了下,然后hr跟鼠鼠要了份简历,虽然我的简历上面全是求职Java开发相关的内容,但是hr还是鼓励我说没关系,她帮我把简历给老板看看,下周一会给我通知。招聘会结束后鼠鼠想了一段时间,也和朋友聊了聊,发现我可能是不太适合这个方向,然后就跟爸爸说回家了给我发条微信,我有些话想跟他说说。晚上爸爸到家了,跟我发了条微信,我立马跑出图书馆跟他打起了电话,这个通话长达一个小时,主要是跟爸爸坦白说我不想找这行了,是你的儿子太没用了,想试试其他行业。然后爸爸也跟我说了很多,说他从来没有希望我毕业后就赚大钱的想法,找不到就回家去,回家了再慢慢找,实在找不到就跟他干(帮别人装修房子,个体户),他也知道工作不好找,让我不要那么焦虑,然后就是聊一些家常琐事。对于后面的求职者呢我有点建议想提一下,就是如果招实习的时间或者秋招开始,而你的简历又很差的情况下,不要说等做好项目填充完简历之后再投,那样就太晚了,建议先把熟悉的项目写上简历,然后边投边面边完善,求职是一个人进步的过程,本来就比别人慢,等到一切都准备好后再投岂不是黄花菜都凉了。时间够的话还是建议敲一遍代码,因为那样能让你加深一下对项目的理解,上面那些说法只是针对时间不够的情况。当然,这些建议可能没啥用,因为我只是一个loser,这些全是建立在我理想的情况下,有没有用还需其他人现身说法。上篇帖子没想到学校被人认了出来,为了不丢脸只能匿名处理了。
KPLACE:找研发类或技术类,主要还是要1.多投 2.多做准备,很多方面都要做准备 3.要有心理准备,投累了就休息一两天,再继续,要相信自己能找到
投递58到家等公司10个岗位
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务