uni-app自定义底部tabbar

2023-11-03


1.新建custom-tab-bar目录 ,并分别创建 (js,json,wxml,wxss)
index.json

{
  "component": true
}

index.wxml

<view class="tab-bar">
  <view wx:for="{{list}}" wx:key="index" class="tab-bar-item {{item.diyClass}}" data-path="{{item.pagePath}}" data-index="{{index}}" bindtap="switchTab">
    <image src="{{selected === index ? item.selectedIconPath : item.iconPath}}" class="{{item.diyClass}}"  mode="aspectFit"/>
    <view style="color: {{selected === index ? selectedColor : color}}" class="{{item.diyClass}}">{{item.text}}</view>
  </view>
</view>

index.wxss


/*重新样式*/
.tab-bar {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  display: flex;
  box-shadow: 0px -2px 10px 0px rgba(0,0,0,0.05);
  box-sizing: content-box;
}

.tab-bar-border {
  background-color: rgba(0, 0, 0, 0.33);
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 1px;
  transform: scaleY(0.5);
}

.tab-bar-item {
  flex: auto;
  text-align: center;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  background: #fff;
  height: 120rpx;
}

.tab-bar-item.diy {
  margin-top: 0!important;
  background: transparent;
  position: relative;
  flex: inherit;
  width: 134rpx;
}

.tab-bar-item image {
  width: 48rpx;
  height: 48rpx;
  overflow: initial;
}

.tab-bar-item view {
  font-size: 24rpx;
}

.tab-bar-item image.diy {
  position: absolute;
  width: 134rpx;
  height: 140rpx;
  bottom: 25.6%;
  z-index: 100;
}

.tab-bar-item view.diy {
  margin-top: 90rpx;
  background: #fff;
  width: 100%;
  height: 100%;
  padding-top: 58rpx;
  z-index: 99;
}

index.js

const app = getApp()
Component({
	data: {
		selected: 0, //当前选中的tab下标
		color: "#1E1E1E",
		selectedColor: "#2B71F2", //tabbar选中字体颜色
		list: [{
				pagePath: "pages/home/index",
				text: "首页",
				iconPath: "/static/home.png",
				selectedIconPath: "/static/home_active.png"
			},
			{
				pagePath: "pages/home/popularScience",
				text: "科普",
				iconPath: "/static/popularScience.png",
				selectedIconPath: "/static/popularScience_active.png"
			},
			{
				pagePath: "pages/home/report",
				text: "报告",
				iconPath: "/static/report.png",
				selectedIconPath: "/static/report.png"
			},
			{
				pagePath: "pages/home/ai",
				text: "AI检测",
				iconPath: "/static/ai.png",
				selectedIconPath: "/static/ai_active.png"
			},
			{
				pagePath: "pages/mine/index",
				text: "我的",
				iconPath: "/static/mine.png",
				selectedIconPath: "/static/mine_active.png"
			}
		], //tabbar循环数据集
	},
	attached() {},
	methods: {
		
		switchTab(e) {
			console.log(e)
			const data = e.currentTarget.dataset;
			const url = data.path
			this.setData({
				selected: data.index
			})

				wx.switchTab({
					url: "/" + url
				})
		},
	
	},
})

main.js中添加,解决点击两次才能选择icon

Vue.mixin({
    methods:{
		
        setTabBarIndex(index) {
            if (typeof this.$mp.page.getTabBar === 'function' &&
            this.$mp.page.getTabBar()) {
                this.$mp.page.getTabBar().setData({
                    selected: index
                })
            }
        }
    }
})

在当前页下,onShow中添加

	onShow() {
		 if (typeof this.$mp.page.getTabBar === 'function' &&
				        this.$mp.page.getTabBar()) {
				        this.$mp.page.getTabBar().setData({
				          selected: 0
				        })
				      } 
		}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

uni-app自定义底部tabbar 的相关文章

随机推荐

  • MySQL异常:TIMESTAMP with implicit DEFAULT value is deprecated

    问题 D software mysql mysql 5 7 17 winx64 mysql 5 7 17 winx64 bin gt mysqld initialize 2017 12 13T07 08 35 613357Z 0 Warni
  • 51单片机:TLC549测量电压,并将测量值显示在数码管上

    51单片机 TLC549测量电压 并将测量值显示在数码管上 要求 在51单片机上利用TLC549这个A D转换器测量电压 并将测量值显示在数码管上 电源范围是0 5V 可以实时测量出电压大小并显示出来 仿真电路图 代码如下 TLC549测量
  • 资源分配与调度

    1 资源管理概述 1 1 资源管理的目的和任务 目的 1 保证资源的高利用率 2 在 合理 时间内使所有顾客有获得所需资源的机会 3 对不可共享的资源实施互斥使用 4 防止由资源分配不当而引起的死锁 对资源的管理应包括以下几个方面 1 资源
  • Boost练习程序(program_options)

    include
  • MFC 单文档调用对话框

    1 插入新的Dialog 如下图 2 修改ID位 IDD XMB 3 在单文件的Menu 中选中需要链接的按键 右键添加处理程序 如下图所示 添加完成后 在项目的xxxview cpp中会生成如下函数 4 对新添加的IDD XMB的Dial
  • VS在编译后.obj文件出现错误 error LNK2019: 无法解析的外部符号 的一种可能

    若有包含其他库 且规模较大 在写自己的代码时尽量避免把代码放在如小写 common 这种常见名字的文件夹内 否则容易出现编译成功 但 obj文件找不到某个函数导致错误LNK2019
  • GBase 8a视频配套联系

    1 以下关于粗粒度智能牵引描述正确的是 A 免维护 自动建立 B 每一列数据都会生成一个粗粒度智能牵引 C 牵引的建立和维护对资源的消耗可以忽略不计 D 记录DC内的最大值 最小值 空值 求和值等 答案ACD 2 GBase 8a集群数据库
  • UART和SPI简介

    UART 即通用异步收发器 是一种通用的串行 异步通信总线 该总线有两种数据线 可以实现数据的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信 通信基础 并行和串行 并行通信 串行通信 单工通信 双工通信 半双工 发送和接收不可以同
  • c++观察者模式

    观察者模式 1 观察者模式简介 观察者模式也叫发布 订阅模式 模型 视图模式 源 监听器模式以及从属者模式 观察者模式定义了对象之间的一对多依赖关系 使得每当一个对象状态发生改变时 其相关依赖对象皆得到通知并被自动更新 2 实例讲解 假如张
  • wsl linux 安装

    1 首先确保windwos的操作系统 win 10 我的系统版本Microsoft Windows 版本 10 0 17134 285 2 开启 适用于linux的windows子系统 在 控制面板 程序 程序和功能 中 3 下载linux
  • 刚刚微软的3月安全更新中,这几个安全漏洞值得注意

    近日 安全专家建议IT团队应优先修补两个零日漏洞 一个是微软Outlook的认证机制 另一个是web标记的绕过 这两个漏洞是微软在其3月补丁星期二安全更新中披露的74个安全漏洞的一部分 在一篇博文中 Automox的研究人员建议企业在24小
  • 获取map的长度、map与list的区别

    获取map的长度 map与list的区别 1 首先看一下map和list有何区别 List 是存储单列数据的集合 存储的数据是有序并且是可以重复的 Map 存储双列数据的集合 通过键值对存储数据 存储 的数据是无序的 Key值不能重复 va
  • TCP协议三次握手,四次挥手

    TCP建立连接的过程叫做握手 握手需要在客户端和服务器端之间交换三个TCP报文段 称之为三次握手 TCP断开连接的过程叫做挥手 即在客户端和服务器端之间交换四个TCP报文段 称之为四次挥手 下面是一次完整的TCP连接过程 上图中对于发送SY
  • echart 点击事件

    以柱状图为例 点击单个柱形上 myChart off click 在渲染点击事件之前先清除点击事件 一定要加上否则会重复加载先前的点击事件 myChart on click function params console log 获取点击的
  • 内核dma_cache_maint介绍

    搞idm internal DMA 模块时 看到数据从主芯片传输到WiFi芯片之前 会有一个idm invalid cache的动作 该函数里封装着dma cache maint 这也就是我们平时经常说的刷cache 那这个内核函数作用是怎
  • Python随机生成企业及统一社会信用代码

    import random import string 随机生成企业名称 def generate company name prefix ABC XYZ ACME BEST TOP suffix Corp Inc Ltd LLC retu
  • 免费AI视频换脸工具-roop安装教程

    工具介绍 roop是一款使用python开发的深度AI视频换脸工具 不过目前工具没有开箱即用 需要一点点的python开发命令知识 不过官方也提供文档步骤 建议使用python 3 10 安装完必须的包即可 安装步骤 1 必备的工具环境 自
  • 【深度学习】手写数字识别及神经网络基本模型

    2021 10 7 学习日记 手写数字识别及神经网络基本模型 1 概述 张量 tensor 是数字的容器 是矩阵向任意维度的推广 其维度称为轴 axis 深度学习的本质是对张量做各种运算处理 其分层几乎总是通过神经网络 neural net
  • 【k8s】Kubernetes存储之 StatefulSet 控制器通过 Headless Service 管理Pod

    一 StatefulSet 控制器简介 官方网址 StatefulSet 是用来管理有状态应用的工作负载 API 对象 StatefulSet 用来管理 Deployment 和扩展一组 Pod 并且能为这些 Pod 提供序号和唯一性保证
  • uni-app自定义底部tabbar

    1 新建custom tab bar目录 并分别创建 js json wxml wxss index json component true index wxml