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);}})}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5 分钟内构建一个简单的基于 Python 的 GAN

文章目录 一、说明二、代码三、训练四、后记 一、说明 生成对抗网络&#xff08;GAN&#xff09;因其能力而在学术界引起轩然大波。机器能够创作出新颖、富有灵感的作品&#xff0c;这让每个人都感到敬畏和恐惧。因此&#xff0c;人们开始好奇&#xff0c;如何构建一个这样的网…

计算机网络面试基础(一)

文章目录 一、HTTP基本概念1.HTTP是什么&#xff1f;2.HTTP 常见的状态码有哪些&#xff1f;3.http常见字段 二、GET和POST1.get和post有什么区别 三、HTTP缓存技术1.HTTP 缓存有哪些实现方式&#xff1f;2.什么是强制缓存&#xff1f;3.什么是协商缓存&#xff1f;(不太懂) 四…

分治算法例子

分治算法概述 分治算法是一种将问题分解为更小的子问题来解决,然后将这些子问题的解合并起来得到原问题的解的算法。这些示例展示了分治算法如何将问题分解为更小的子问题,通过递归和合并来解决复杂问题。以下是两个常见的分治算法示例及其Python实现: 快速排序 (Quick So…

长文预警:九头蛇的进化——Tesla AutoPilot 纯视觉方案解析

九头蛇的进化&#xff1a;Tesla AutoPilot 纯视觉方案解析 前言 本文整理自原文链接&#xff0c;写的非常好&#xff0c;给了博主很多启发&#xff0c;投原创是因为平台机制&#xff0c;希望能被更多人看到。 嘿嘿&#xff0c;漫威粉不要打我←_←不是Hail Hydra&#xff0c…

分享:各种原理测厚仪的发展历程!

板材厚度的检测离不开测厚仪的应用&#xff0c;目前激光测厚仪、射线测厚仪、超声波测厚仪等都已被广泛的应用于板材生产线中&#xff0c;那你了解他们各自的发展历程吗&#xff1f; 激光测厚仪的发展&#xff1a; 激光测厚仪是随着激光技术和CCD&#xff08;电荷耦合器件&…

swaggerHole:针对swaggerHub的公共API安全扫描工具

关于swaggerHole swaggerHole是一款针对swaggerHub的API安全扫描工具&#xff0c;该工具基于纯Python 3开发&#xff0c;可以帮助广大研究人员检索swaggerHub上公共API的相关敏感信息&#xff0c;整个任务过程均以自动化形式实现&#xff0c;且具备多线程特性和管道模式。 工具…

网络安全实验BUAA-全套实验报告打包

下面是部分BUAA网络安全实验✅的实验内容 &#xff1a; 认识路由器、交换机。掌握路由器配置的基本指令。掌握正确配置路由器的方法&#xff0c;使网络正常工作。 本博客包括网络安全课程所有的实验报告&#xff1a;内容详细&#xff0c;一次下载打包 实验1-路由器配置实验2-AP…

快速搭建高效运营体系,Xinstall App下载自动绑定助您一臂之力

在互联网的浪潮中&#xff0c;App的推广与运营面临着诸多挑战。如何在多变的互联网环境下迅速搭建起能时刻满足用户需求的运营体系&#xff0c;成为了众多企业关注的焦点。今天&#xff0c;我们就来聊聊如何通过Xinstall的App下载自动绑定功能&#xff0c;轻松解决App推广与运营…

PXE、无人值守实验

PXE部署 [roottest2 ~]# systemctl stop firewalld [roottest2 ~]# setenforce 0一、部署tftp服务 [roottest2 ~]# yum -y install tftp-server.x86_64 xinetd.x86_64 [roottest2 ~]# systemctl start tftp [roottest2 ~]# systemctl enable tftp [roottest2 ~]# systemctl …

因为宇宙一片漆黑,所以地球才有昼夜之分,宇宙为什么是黑的?

因为宇宙一片漆黑&#xff0c;所以地球才有昼夜之分&#xff0c;宇宙为什么是黑的&#xff1f; 地球为何会有昼夜之分&#xff1f; 乍一看&#xff0c;这个问题很是简单&#xff0c;当然是因为地球一直在自转了&#xff0c;当地球的一部分被太阳照射时就是白昼&#xff0c;而…

UI框架与MVC模式详解(1)——逻辑与数据分离

【效率最高的耦合方式】 以实际的例子来说明&#xff0c;更容易理解些。 这里从上到下&#xff0c;从左到右共有8个显示项&#xff0c;如果只需要显示这8个&#xff0c;不会做任何改变&#xff0c;数据固定&#xff0c;那么我们只需要最常规的思路去写就好&#xff0c;这是最…

【JSP】如何在IDEA上部署JSP WEB开发项目

以我的课设为例&#xff0c;教大家拿到他人的项目后&#xff0c;如何在IDEA上部署。 需要准备&#xff1a; JDK17&#xff08;或者JDK13&#xff09;IntelliJ IDEA 2023.2.6MySQL 8.0Tomcat 9.0 一&#xff0c;新建项目添加文件 1.1复制“位置”的路径 1.2找到该文件夹 1.3…

Python语言兼职:探索、挑战与机遇

Python语言兼职&#xff1a;探索、挑战与机遇 在数字化浪潮汹涌的今天&#xff0c;Python语言因其简洁易懂、功能强大的特点&#xff0c;成为了众多编程爱好者的首选。而兼职Python开发者这一职业&#xff0c;也逐渐成为了一种新兴的工作模式。本文将深入探讨Python语言兼职的…

linux嵌入式设备测试wifi信号强度方法

首先我们要清楚设备具体链接在哪个wifi热点上 执行&#xff1a;nmcli dev wifi list rootubuntu:/home/ubuntu# nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS > * 14:EB:08:51:7D:20 wifi22222_5G Infr…

米尔NXP i.MX 93开发板的Qt开发指南

1. 概述 Qt 是一个跨平台的图形应用开发框架&#xff0c;被应用在不同尺寸设备和平台上&#xff0c;同时提供不同版权版本供用户选择。米尔 NXP i.MX 93 开发板&#xff08;MYD-LMX9X开发板&#xff09;使用 Qt6.5 版本进行应用开发。在 Qt 应用开发中&#xff0c;推荐使用 Qt…

NSSCTF CRYPTO MISC题解(一)

陇剑杯 2021刷题记录_[陇剑杯 2021]签到-CSDN博客 [陇剑杯 2021]签到 下载附件压缩包&#xff0c;解压后得到 后缀为.pcpang&#xff0c;为流量包&#xff0c;流量分析&#xff0c;使用wireshark打开 {NSSCTF} [陇剑杯 2021]签到 详解-CSDN博客 选择统计里面的协议分级 发现流…

Vxe UI vxe-table 实现自定义列拖拽,列拖拽排序功能

Vxe UI vue vxe-table 实现自定义列拖拽&#xff0c;列拖拽排序功能 开启自定义列 vxe-toolbar 工具栏&#xff0c;通过 custom 启用后就可以开启自定义列功能 <template><div><vxe-toolbar ref"toolbarRef" custom></vxe-toolbar><vx…

【java基础】内部类

1、 非静态成员内部类可以访问所在类的全部方法和对象&#xff08;就相当于一个对象方法&#xff08;属于对象阶层和非静态方法同时加载在类加载之后&#xff09;&#xff09; 2、非静态成员内部类无法在该类&#xff08;就是非静态成员内部类所在的类&#xff09;的静态方法中…

人类的深度学习与机器的深度学习不同

人类的深度学习和机器的深度学习存在一些重要的区别&#xff1a; 人类的深度学习是自主进行的&#xff0c;无需明确编程。我们可以通过观察周围环境、与他人互动和实践来不断学习和适应&#xff0c;人类是具有意识和自我意识的智能体&#xff0c;能够理解和处理抽象概念&#x…

Python - 获取文件行数

看了很多教程&#xff0c;使用 readlines() 读取感觉效率比较低 这里我使用 Python 调用 wc -l 命令 PS : 这个命令存在一个小的可能的不一致是&#xff0c;如果文件最后一行没有换行符&#xff0c;则这一行不会被统计 import osfile_path /Users/user/Documents/happy.md…