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.rhkb.cn/news/343739.html

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

相关文章

“开源与闭源:AI大模型发展的未来之路“

文章目录 每日一句正能量前言数据隐私开源大模型与数据隐私闭源大模型与数据隐私数据隐私保护的共同考虑结论 商业应用开源大模型的商业应用优势&#xff1a;开源大模型的商业应用劣势&#xff1a;闭源大模型的商业应用优势&#xff1a;闭源大模型的商业应用劣势&#xff1a;商…

虚拟机与windows文件同步

如果上图中不能设置&#xff0c;则在虚拟机mnt文件夹执行以下命令&#xff1a;

Go微服务: 分布式之TCC事务

TCC 分布式事务 T: Try 预处理, 尝试执行&#xff0c;完成所有的业务检查&#xff0c;做好一致性&#xff0c;预留必要的业务资源&#xff0c;做好准隔离性C: Confirm 确认&#xff0c;如果所有的分支Try都成功了, 就到了这个阶段, Confirm 是真正执行业务的过程, 不做任何业务…

【数据结构】图论入门

引入 数据的逻辑结构&#xff1a; 集合&#xff1a;数据元素间除“同属于一个集合”外&#xff0c;无其他关系线性结构&#xff1a;一个对多个&#xff0c;例如&#xff1a;线性表、栈、队列树形结构&#xff1a;一个对多个&#xff0c;例如&#xff1a;树图形结构&#xff1…

Liunx环境下redis主从集群搭建(保姆级教学)02

Redis在linux下的主从集群配置 本次演示使用三个节点实例一个主节点&#xff0c;两个从节点&#xff1a;7000端口&#xff08;主&#xff09;&#xff0c;7001端口&#xff08;从&#xff09;&#xff0c;7002端口&#xff08;从&#xff09;&#xff1b; 主节点负责写数据&a…

澳大利亚和德国媒体投放-国外新闻发稿-海外软文推广

德国媒体 Firmenpresse德国新闻 Firmenpresse德国新闻是一家备受欢迎的新闻发布平台&#xff0c;其好友搜索引擎在收录网站方面表现出色。如果您希望更好地将您的新闻传播给德国受众&#xff0c;Firmenpresse德国新闻将是一个理想的选择。 Frankfurt Stadtanzeiger法兰克福城…

《深入浅出C语言:从基础到指针的全面指南》

1. 简介 C语言是一种通用的编程语言&#xff0c;广泛应用于系统编程、嵌入式系统和高性能应用程序。它由Dennis Ritchie在1972年开发&#xff0c;并且至今仍然非常流行。C语言以其高效、灵活和强大的功能著称&#xff0c;是许多现代编程语言的基础。 2. 基本语法 2.1 Hello, …

K8s Pod的QoS类

文章目录 OverviewPod的QoS分类Guaranteed1.如何将 Pod 设置为保证Guaranteed2. Kubernetes 调度器如何管理Guaranteed类的Pod Burstable1. 如何将 Pod 设置为Burstable2.b. Kubernetes 调度程序如何管理 Burstable Pod BestEffort1. 如何将 Pod 设置为 BestEffort2. Kubernete…

ROS云课三分钟外传之CoppeliaSim_Edu_V4_1_0_Ubuntu16_04

三分钟热度试一试吧&#xff0c;走过路过不要错过。 参考之前&#xff1a; 从云课五分钟到一分钟之v-rep_pro_edu_v3_6_2-CSDN博客 git clone https://gitcode.net/ZhangRelay/v-rep_pro_edu_v3_6_2_ubuntu16_04.gittar -xf v-rep_pro_edu_v3_6_2_ubuntu16_04/V-REP_PRO_EDU…

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题 *解决方法一&#xff1a; 将抽屉弹窗里从后端返回得到的值缓存在浏览器中&#xff0c;在当前页面中从浏览器中获取该值。 &#xff08;原理其实就是借助第三个盒子来传递一下值&#xff0c;太小学…

在npm发布自己的组件包

目录 前言 正文 npm和git的对比 Node环境的配置 具体发布步骤 ※※需要注意的是 尾声 &#x1f52d; Hi,I’m Pleasure1234&#x1f331; I’m currently learning Vue.js,SpringBoot,Computer Security and so on.&#x1f46f; I’m studying in University of Nottingham Ni…

金融领域的AI解决方案

AI可赋能金融营销、资管、风控等领域&#xff0c;面向金融消费者、金融机构和金融监管机构&#xff0c;改善金融 市场信息对称性并提升金融交易的效率和安全性。目前&#xff0c;金融行业各机构对于安全认证和客户身份识别的需求较为迫切&#xff0c;身份识别和智能客服应用和落…

如何在没有密码的情况下解锁iPhone

通常&#xff0c;您可以使用密码、FaceID 或 Touch ID 轻松解锁 iPhone。但是&#xff0c;有时您可能会忘记密码、iPhone 已停用或您的二手手机已锁定。在这种情况下&#xff0c;您必须绕过 iPhone 密码才能访问您的设备。在本文中&#xff0c;我们将向您介绍 5 种经过测试的方…

JavaEE初阶---多线程编程(一.线程与进程)

目录 &#x1f923;一.线程与进程的概念与联系&#xff1a; 进程的基本概念&#xff1a; 线程的基本概念&#xff1a; 进程和线程的区别与联系&#xff1a; &#x1f643;代码执行实列&#xff1a; 1.通过继承Thread父类来实现多线程 2.通过实现Runnable接口来实现多线程…

Leetcode3171. 找到按位与最接近 K 的子数组

Every day a Leetcode 题目来源&#xff1a;3171. 找到按位与最接近 K 的子数组 解法1&#xff1a;位运算 优化&#xff1a; 代码&#xff1a; /** lc appleetcode.cn id3171 langcpp** [3171] 找到按位与最接近 K 的子数组*/// lc codestart class Solution { public:int m…

路由器作为网络扩展器——设置桥接、路由模式

下面提到的路由器都是家用路由器 一、有线桥接(交换模式) 1.连接示意图 (副路由器只看交换模式部分) 副路由器充当交换机的角色 二、无线桥接(与有线类似) &#xff08;副路由器的无线信号 连接 主路由器的无线信号&#xff09; 三、路由模式 1.连接示意图 (副路由器只看…

RT-DETR 详解之 Efficient Hybrid Encoder

在先前的博文中&#xff0c;博主介绍了RT-DETR在官方代码与YOLOv8集成程序中的训练与推理过程&#xff0c;接下来&#xff0c;博主将通过代码调试的方式来梳理RT-DETR的整个过程。 整体结构 RT-DETR的代码调试大家可以参考博主这篇文章&#xff1a; 在梳理整个代码之前&…

Serverless 使用OOS将http文件转存到对象存储

目录 背景介绍 系统运维管理OOS 文件转存场景 前提条件 实践步骤 附录 示例模板 背景介绍 系统运维管理OOS 系统运维管理OOS&#xff08;CloudOps Orchestration Service&#xff09;提供了一个高度灵活和强大的解决方案&#xff0c;通过精巧地编排阿里云提供的OpenAPI…

监控摄像机接入GB28181平台如何获取监控视频

各种型号监控摄像头或硬盘录像机接入 GB28181平台配置过程非常简单明了&#xff0c;但有些细节需要注意&#xff0c;避免走弯路。 1、基本要求 &#xff08;1&#xff09;网络要求 总的来说&#xff0c;只要监控设备和GB28181平台的网络是连通的&#xff0c;设备可以主动访问…

2024 cicsn SuperHeap

文章目录 参考沙箱存在protobuf逆向buy_booksee_bookreturn_bookedit_booksearch_book 思路exp 参考 https://hakuya.work/post/7 https://akaieurus.github.io/2024/05/20/2024%E5%9B%BD%E8%B5%9B%E5%88%9D%E8%B5%9Bpwn-wp/#SuperHeap https://blog.csdn.net/m0_63437215/art…