1. app.json文件添加"custom": true
"tabBar": { "custom": true,
2. 新建组件文件/components/custom-tab-bar
3. 文件/components/custom-tab-bar/index.wxml
<view class="tabbar-container"> <view class="tabbar-item {{active==0? 'tabbar-select':''}}" bindtap="switchJump" data-url="../index/index"> <view class="tabbar-image" data-active="0"> <image src="{{active==0? '/images/icons/avatar.png':'/images/icons/usercenter.png'}}"></image> </view> <view class="tabbar-text">首页</view> </view> <view class="tabbar-item {{active==1? 'tabbar-select':''}}" bindtap="switchJump" data-url="../borrowingRecords/index" data-active="1"> <view class="tabbar-image"> <image src="{{active==1? '/images/icons/avatar.png':'/images/icons/usercenter.png'}}"></image> </view> <view class="tabbar-text">市场合作</view> </view> <view class="tabbar-item tabbar-center {{active==2? 'tabbar-select':''}}" bindtap="switchJump" data-url="../address/disMap" data-active="2"> <view class="mask-item"> <view class="mask-border"></view> </view> <view class="item-center"> <view class="tabbar-image"> <image src="{{active==2? '/images/icons/avatar.png':'/images/icons/usercenter.png'}}"></image> </view> <view class="tabbar-text"></view> </view> </view> <view class="tabbar-item {{active==3? 'tabbar-select':''}}" bindtap="switchJump" data-url="../coinRecord/index" data-active="3"> <view class="tabbar-image"> <image src="{{active==3? '/images/icons/avatar.png':'/images/icons/usercenter.png'}}"></image> </view> <view class="tabbar-text">小象币</view> </view> <view class="tabbar-item {{active==4? 'tabbar-select':''}}" bindtap="switchJump" data-url="../myCenter/index" data-active="4"> <view class="tabbar-image"> <image src="{{active==4? '/images/icons/avatar.png':'/images/icons/usercenter.png'}}"></image> </view> <view class="tabbar-text">我的</view> </view> </view>
4.文件/components/custom-tab-bar/index.js
Component({ /** * 组件的属性列表 */ properties: { pageActive: { type: Number, value: 0 } }, /** * 组件的初始数据 */ data: { tabbarHeight: "100", active: 0 }, // 在组件实例进入页面节点树时执行 attached: function () { this.setData({ active: this.data.pageActive }) }, // 在组件实例被从页面节点树移除时执行 detached: function () { }, /** * 组件的方法列表 */ methods: { //页面跳转 switchJump: function(e){ let url = e.currentTarget.dataset.url; wx.switchTab({ url: url, }) } } })
5.文件/components/custom-tab-bar/index.wxss
view,cover-view,cover-image{ box-sizing: border-box; padding: 0; margin: 0; } .tabbar-container{ width: 100%; height: 100rpx; background-color: #fff; position: fixed; bottom: 0; left: 0; z-index: 9999999; display: flex; align-items: flex-end; border-top: 1rpx solid #e6e6e6; } .tabbar-container .tabbar-select{ color: #298acb; } .tabbar-item{ width: 20%; height: 100rpx; color: #71c6ff; padding: 10rpx 0rpx; background-color: #fff; border-top: 1rpx solid #e6e6e6; } .tabbar-item .tabbar-image{ width: 100%; height: 50rpx; display: flex; justify-content: center; position: relative; } .tabbar-item .tabbar-image image{ width: 50rpx; height: 50rpx; } .tabbar-item .tabbar-text{ width: 100%; height: 30rpx; line-height: 30rpx; font-size: 26rpx; text-align: center; } .tabbar-center{ height: 150rpx; border: 0; padding: 0; background-color: transparent; position: relative; } .tabbar-center .mask-item{ width: 100%; height: 50rpx; overflow: hidden; position: relative; } .tabbar-center .mask-item .mask-border{ width: 120rpx; height: 120rpx; border: 1rpx solid #e6e6e6; border-radius: 50%; background-color: #fff; position: absolute; top: 0; left: calc(50% - 60rpx); } .tabbar-center .item-center{ width: 100%; height: 100rpx; } .tabbar-center .item-center .tabbar-image{ position: absolute; top: 2rpx; left: calc(50% - 58rpx); width: 116rpx; height: 116rpx; padding: 5rpx; background-color: #fff; border-radius: 50%; } .tabbar-center .item-center .tabbar-text{ position: absolute; bottom: 10rpx; left: 0rpx; width: 100%; } .tabbar-center .item-center .tabbar-image image{ width: 100%; height: 100%; }
6. 文件/components/custom-tab-bar/index.json
{ "component": true, "usingComponents": {} }
7. 页面调用:
<custom-tab-bar page-active="{{pageNum}}"></custom-tab-bar>