微信小程序自定义tabbar组件

 更新时间:2021年03月14日 10:55:02   作者:赵思远kelsty  
这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了微信小程序自定义tabbar组件的具体代码,供大家参考,具体内容如下

由于项目需求,必须自己写组件:

第一步:在App.json中配置tabBar,自定也组件也必须配置,"custom": true,list里配置所有的tabbar页面。

 "tabBar": {
 "custom": true,
 "color": "red",
 "selectedColor": "#3b81d7",
 "backgroundColor": "#000000",
 "list": [{
 "pagePath": "pages/Role/InsureIndex/index",
 "text": "首页"
 }, {
 "pagePath": "pages/Role/MineIndex/index",
 "text": "首页"
 }, {
 "pagePath": "pages/index/userInfo/userInfo",
 "text": "我的"
 }]
 },

第二步:在pages的同级目录新建组件,文件夹名字:custom-tab-bar,自定义组件文件名为index。组件代码如下,应该都能看懂。

index.js

Component({
 properties: {},
 
 data: {
 indexImg: "../static/images/tabBar/tab_icon_home_nor@2x.png",
 indexSelectImg: "../static/images/tabBar/tab_icon_home_sel@2x.png",
 aboutUsImg: "../static/images/tabBar/tab_icon_user_nor@2x.png",
 aboutUsSelectImg: "../static/images/tabBar/tab_icon_user_sel@2x.png",
 _tabbat: null,
 iPhoneX: false,
 urls: ['/pages/Role/InsureIndex/index',
 '/pages/index/userInfo/userInfo'
 ]
 },
 attached() {
 var self = this
//此为业务代码,可不看
 wx.getStorage({
 key: 'userInfo',
 success: function (res) {
 const {
  userRoleCode
 } = res.data
 if (userRoleCode == '50' || userRoleCode == '70') {
  self.setData({
  ["urls[0]"]: '/pages/Role/MineIndex/index'
  })
 } else if (userRoleCode == '30' || userRoleCode == '35' || userRoleCode == '40') {
  self.setData({
  ["urls[0]"]: '/pages/Role/InsureIndex/index'
  })
 }
 }
 })
 wx.getSystemInfo({
 success(res) {
 console.log(res.model)
 if (res.model.indexOf('iPhone X') >= 0) {
  self.setData({
  iPhoneX: true
  })
 }
 }
 })
 },
 /**
 * 组件的方法列表
 */
 methods: {
 switchTap: function (e) {
 var self = this
 var index = e.currentTarget.dataset.index;
 var urls = self.data.urls
 wx.switchTab({
 url: urls[index],
 })
 }
 }
})

index.wxml

<div class="_tabbar {{iPhoneX?'_iPhoneX':''}}">
 <div class="titem {{_tabbat==0?'tCdk':''}}" data-index="0" bind:tap="switchTap">
 <image src="{{_tabbat==0?indexSelectImg:indexImg}}" />
 <b>首页</b>
 </div>
 <div class="titem {{_tabbat==1?'tCdk':''}}" data-index="1" bind:tap="switchTap">
 <image src="{{_tabbat==1?aboutUsSelectImg:aboutUsImg}}" />
 <b>我的</b>
 </div>
</div>

index.wxss

._tabbar {
 width: 100%;
 height: 120rpx;
 display: flex;
 align-items: center;
 background: #fff;
 font-size: 26rpx;
 color: #999999;
 box-shadow: 0px -7rpx 13rpx 0px rgba(193, 185, 204, 0.13);
}
 
._tabbar .titem {
 text-align: center;
 width: 50%;
}
 
._tabbar .titem image {
 display: block;
 margin: auto;
 width: 48rpx;
 height: 48rpx;
 margin-bottom: 10rpx;
}
 
._tabbar .tCdk {
 color: #37ADFE;
}
 
._iPhoneX {
 height: 148rpx;
}

index.json

{
 "component": true,
 "usingComponents": {}
}

以上为组件代码,点击tabbar跳转页面时,会重新加载tabbar组件,导致选中样式一直是默认的,因此需要在用到tabbar的页面的js文件中做如下操作:(以 “首页” 页面为例)

onShow: function () {
 this.getTabBar().setData({
 _tabbat: 0
 })
 },

以上就已经完成了,但是看网上大家说会出现两个tabBar,我这边是没出现(一个自定义,一个自带的),如果出现的话,在app.js中的onLaunch函数中加入 wx.hideTabBar() , 隐藏自带的tabbar就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • js数字转换为float,取N位小数

    js数字转换为float,取N位小数

    在javascript中不分单精度float和双精度double,凡事有小数的变量都认为是float,因此要取小数后的n位,要用方法toFixed(n)来得到
    2014-02-02
  • jQuery ajax(复习)—Baidu ajax request分离版

    jQuery ajax(复习)—Baidu ajax request分离版

    你没有看错标题,本文的确是在讲Baidu ajax,不过是很久很久以前的版本了,我们先分析一段简单的ajax代码,来自早期的百度七巧板项目通过这个来先复习一遍ajax的知识
    2013-01-01
  • JavaScript中reduce()的用法实例

    JavaScript中reduce()的用法实例

    reduce()方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值,下面这篇文章主要给大家介绍了关于JavaScript中reduce()的用法实例,需要的朋友可以参考下
    2022-05-05
  • 详解Js 根据文件夹目录获取Json数据输出demo

    详解Js 根据文件夹目录获取Json数据输出demo

    这篇文章主要为大家介绍了Js 根据文件夹目录获取Json数据输出示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 根据出生日期自动取得星座的js代码

    根据出生日期自动取得星座的js代码

    最近这个项目需要注册时用户填写出生日期,然后自动取得星座,想想好像用后台代码太麻烦只好转而使用JavaScript。
    2010-07-07
  • 使用OpenLayers3 添加地图鼠标右键菜单

    使用OpenLayers3 添加地图鼠标右键菜单

    这篇文章主要介绍了使用OpenLayers3 添加地图鼠标右键菜单的相关资料,需要的朋友可以参考下
    2015-12-12
  • js动态切换图片的方法

    js动态切换图片的方法

    这篇文章主要介绍了js动态切换图片的方法,包含完整的css文件与js文件实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • layui弹出层按钮提交iframe表单的方法

    layui弹出层按钮提交iframe表单的方法

    今天小编就为大家分享一篇layui弹出层按钮提交iframe表单的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • WebGL高级变换之Matrix4使用介绍

    WebGL高级变换之Matrix4使用介绍

    这篇文章主要为大家介绍了WebGL高级变换之Matrix4使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • javascript修改IMG标签的src问题

    javascript修改IMG标签的src问题

    javascript修改IMG标签的SRC,在IE6下面图片修改正常,但在IE7和Firefox下面却不刷新,下面有个解决方法,大家可以参考下
    2014-03-03

最新评论