您的位置:首页 > 娱乐 > 明星 > wx小程序自定义tabbar

wx小程序自定义tabbar

2024/12/23 15:40:50 来源:https://blog.csdn.net/weixin_69670563/article/details/139446213  浏览:    关键词:wx小程序自定义tabbar

1.在app.json文件中,添加自定义tabbar配置:"custom": true

  "tabBar": {"custom": true,"backgroundColor": "#fafafa","borderStyle": "white","selectedColor": "#40ae36",   "color": "#666","list": [{"pagePath": "pages/index/index","iconPath": "static/images/home.png","selectedIconPath": "static/images/home@selected.png","text": "首页"},{"pagePath": "pages/adoptProduct/adoptProduct","iconPath": "static/images/adopt.png","selectedIconPath": "static/images/adopt@selected.png","text": "认养"},{"pagePath": "pages/supermarket/supermarket","iconPath": "static/images/supermarket.png","selectedIconPath": "static/images/supermarket@selected.png","text": "农副超市"},     {"pagePath": "pages/ucenter/index/index","iconPath": "static/images/my.png","selectedIconPath": "static/images/my@selected.png","text": "我的"}]}

2.新建根目录文件

index.wxml

<view class="tabBar"><view class="cont"><block wx:for="{{tabBar.list}}" wx:key="index" class="cont-item"><view data-path="{{item.pagePath}}" data-index="{{item.pagePath}}" bindtap="switchTab" class="{{item.search?'search':'item'}} {{tabIndex === index ? 'on' : 'off'}}"><image src="{{tabIndex === index  ? item.selectedIconPath : item.iconPath}}"></image><view class="txt {{tabIndex === index ? 'selectedColor' : ''}}">{{item.text}}</view></view></block></view>
</view>

index.wxss

.tabBar {z-index: 100;width: 100%;position: fixed;bottom: 0;font-size: 28rpx;background-color: #fff;color: #636363;
}
.cont {z-index: 0;height: calc(100rpx + env(safe-area-inset-bottom) / 2);padding-bottom: calc(env(safe-area-inset-bottom) / 2); padding-bottom: 30rpx;display: flex;justify-content: space-around;
}
.cont .item {font-size: 24rpx;position: relative;width: 15%;text-align: center;padding: 0;display: block;height: auto;line-height: 1;margin: 0;background-color: inherit;overflow: initial;justify-content: center;align-items: center;padding-top: 20rpx;
}
.cont .item image {width: 50rpx !important;height: 50rpx !important;margin: auto
}
.cont .selectedColor {color: #40ae36;
}
.txt{font-size: 24rpx;
}

index.js

//获取应用实例
const app = getApp();
Component({data: {},methods: {switchTab(e) { const data = e.currentTarget.datasetconst url = data.pathwx.switchTab({url})}}
})

index.json

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

3.在utils添加tab-service.js(通过接口请求,去判断显示那个tabbar)

let tabData = {tabIndex: 0,//底部按钮高亮下标tabBar: {custom: true,color: "#5F5F5F",selectedColor: "#07c160",backgroundColor: "#F7F7F7",list: []}
}// 更新菜单
const updateRole = (that, type) => {if (type === '0') {tabData.tabBar.list=[{pagePath: "/pages/index/index",iconPath: "/static/images/home.png",selectedIconPath: "/static/images/home@selected.png",text: "首页"},{pagePath: "/pages/adoptProduct/adoptProduct",iconPath: "/static/images/adopt.png",selectedIconPath: "/static/images/adopt@selected.png",text: "认养"},{pagePath: "/pages/supermarket/supermarket",iconPath: "/static/images/supermarket.png",selectedIconPath: "/static/images/supermarket@selected.png",text: "农副超市"},     {pagePath: "/pages/ucenter/index/index",iconPath: "/static/images/my.png",selectedIconPath: "/static/images/my@selected.png",text: "我的"}]}else if (type === '1'){tabData.tabBar.list= [{pagePath: "/pages/index/index",iconPath: "/static/images/home.png",selectedIconPath: "/static/images/home@selected.png",text: "首页"},{pagePath: "/pages/supermarket/supermarket",iconPath: "/static/images/supermarket.png",selectedIconPath: "/static/images/supermarket@selected.png",text: "农副超市"},     {pagePath: "/pages/ucenter/index/index",iconPath: "/static/images/my.png",selectedIconPath: "/static/images/my@selected.png",text: "我的"}]} updateTab(that);
}// 更新底部高亮
const updateIndex = (that, index) => {tabData.tabIndex = index;updateTab(that);
}// 更新Tab状态
const updateTab = (that) => {if (typeof that.getTabBar === 'function' && that.getTabBar()) {that.getTabBar().setData(tabData);}
}// 将可调用的方法抛出让外面调用
module.exports = {updateRole, updateTab, updateIndex,tabBar:tabData.tabBar.list
}

4.在tabbar对应界面添加

tabService.updateRole(this,'0') // 显示所有tabbar4个
tabService.updateRole(this,'1') // 显示tabbar中的3个
tabService.updateIndex(this, 0)  // tabbar高亮

首页中的index.js

 onShow(){ this.chooseMenu()tabService.updateIndex(this, 0)  // tabbar高亮}chooseMenu(){util.request(api.chooseMenu, {}, 'GET').then(res => {if (res.errno === 0) {if(res.data == 1 ) {tabService.updateRole(this,'1')}else {tabService.updateRole(this,'0')}}else{util.showErrorToast(res.errmsg);}})}

我的页面中的index.js

 onShow(){ this.chooseMenu()tabService.updateIndex(this, 0)  // tabbar高亮}chooseMenu(){util.request(api.chooseMenu, {}, 'GET').then(res => {if (res.errno === 0) {if(res.data == 1 ) {tabService.updateRole(this,'1')tabService.updateIndex(this, 2)  //由于tabService.updateRole(this,'1')为1,所有少一个认养tabbar,所有updateIndex应传2高亮}else {tabService.updateRole(this,'0')tabService.updateIndex(this, 3) }}else{util.showErrorToast(res.errmsg);}})}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com