uniapp tabBar 中设置“custom“: true 在H5和app中无效解决办法

news2025/7/18 10:44:00

uniapp小程序自定义底部tabbar,但是在转成H5和app时发现"custom": true 无效,原生tabbar会显示出来
在这里插入图片描述
解决办法如下
在tabbar的list中设置 “visible”:false


代码如下:

"tabBar": {
		"custom": true,
		//"custom"仅对小程序生效
		"color": "#333",
		"fontSize": "12",
		"selectedColor": "#3F8CFF",
		"borderStyle": "black",
		"backgroundColor": "#fff",
		"list": [{
				"pagePath": "pages/index/index",
				"iconPath": "/static/tabbar/index.png",
				"selectedIconPath": "/static/tabbar/index-active.png",
				"text": "首页",
				"visible":false
				//"visible"仅对H5
			}, {
				"pagePath": "pages/workbench/index",
				"iconPath": "/static/tabbar/workbench.png",
				"selectedIconPath": "/static/tabbar/workbench-active.png",
				"text": "工作台",
				"visible":false
			},
			{
				"pagePath": "pages/mine/index",
				"iconPath": "/static/tabbar/mine.png",
				"selectedIconPath": "/static/tabbar/mine-active.png",
				"text": "我的",
				"visible":false
			}
		]
	}


注意:在App.vue里一定要加上这段代码 uni.hideTabBar,否则在app打包后,会有原生tabbar的样式

<script>
	export default {
		onLaunch: function() {
			//一定要加上这段
			// #ifdef APP-PLUS || H5
			uni.hideTabBar({
			  animation: false // 是否使用动画效果
			});
			// #endif
		},
		onShow: function() {
			console.log('App Show')
		},
		onHide: function() {
			console.log('App Hide')
		}
	}
</script>

tabbar组件样式代码如下:


<template>
	<!-- Tabbar 组件  -->
	<view>
		<view class="cu-bar" :style="{
			backgroundColor:tabBarObj.backgroundColor?tabBarObj.backgroundColor:'#fff'
		}">
			<view @click="cubarClick(item)" class="cu-bar-box" v-for="(item,index) in tabBarList" :key="index">
				<view v-if="item.text !='工作台'">
					<!-- 有站内消息在我的右上角提示 -->
					<!-- <view v-if="item.text =='我的'" class="tishiBox">
					</view> -->
					<view class="">
						<image v-if="pageCur ==item.pagePath" class="cu-bar-icon" :src="item.selectedIconPath" mode="">
						</image>
						<image v-else class="cu-bar-icon" :src="item.iconPath" mode=""></image>
					</view>
					<view :style="{
					color:pageCur ==item.pagePath?tabBarObj.selectedColor:tabBarObj.color,
					fontSize:tabBarObj.fontSize+'px'
				}">
						{{item.text||'-'}}
					</view>
				</view>
				<view class="yuanBox" v-else>
					<view class="yuanTop"></view>
					<view class="yuanjuli"></view>
					<view class="yuan" :class="{yuanActive:pageCur ==item.pagePath}">
						<image v-if="pageCur ==item.pagePath" class="cu-bar-icon yuan-cu-bar-icon"
							:src="item.selectedIconPath" mode="">
						</image>
						<image v-else class="cu-bar-icon yuan-cu-bar-icon" :src="item.iconPath" mode="">
						</image>
					</view>
				</view>
			</view>
		</view>
		<view :style="{
			height:cardHeight+'px'
		}">
			<!-- 底部占位使用,内容超出页面高度产生滚动条时,tabbar不会遮盖引用页面内容 -->
		</view>
	</view>
</template>
<script>
	import pagesJson from '@/pages.json'; // 引用配置文件的tabbar配置信息
	export default {
		props: {
			pageCur: {
				type: String,
				default: 'pages/index/index' //默认为首页
			}, //  tabbar当前页面
		},
		data() {
			return {
				tabBarObj: pagesJson.tabBar, //tabbar全部配置
				tabBarList: pagesJson.tabBar.list, //tabbar列表
				cardHeight: 0, //tabbar高度
			}
		},
		onLoad() {
		},
		onShow: function() {},
		mounted() {
			let than = this
			this.createIntersectionObserver().relativeToViewport().observe('.cu-bar', (res) => {
				than.cardHeight = res.intersectionRect.height || 0
				// console.log("元素高度信息",res.intersectionRect.height)
				// res.id // 目标节点 id
				// res.dataset // 目标节点 dataset
				// res.intersectionRatio // 相交区域占目标节点的布局区域的比例
				// res.intersectionRect // 相交区域
				// res.intersectionRect.left // 相交区域的左边界坐标
				// res.intersectionRect.top // 相交区域的上边界坐标
				// res.intersectionRect.width // 相交区域的宽度
				// res.intersectionRect.height // 相交区域的高度
			})
		},
		methods: {
			cubarClick(item) {
				// console.log("点击的元素",item)
				uni.switchTab({
					url: '/' + item.pagePath
				});
			}
		}
	}
</script>

<style scoped>
	.cu-bar {
		display: flex;
		width: 100vw;
		padding-bottom: 40rpx;
		padding-top: 10rpx;
		position: fixed;
		bottom: 0px;
		left: 0px;
		right: 0px;
		box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1);
	}

	.cu-bar .cu-bar-box {
		flex: 1;
		text-align: center;
		position: relative;
	}

	.cu-bar .cu-bar-icon {
		width: 50rpx;
		height: 50rpx;
		display: inline-block;
	}

	.yuanBox {
		position: relative;
		background: pink;
		text-align: center;
	}

	.yuanTop {
		height: 80rpx;
		background-color: #fff;
		border-radius: 78rpx 78rpx 0rpx 0rpx;
		border-bottom: 0rpx;
		width: 160rpx;
		margin: 0 auto;
		box-shadow: 0 -1rpx 6rpx rgba(0, 0, 0, 0.1);
		position: absolute;
		top: -35rpx;
		left: 50%;
		margin-left: -80rpx;
	}

	.yuanjuli {
		height: 60rpx;
		margin-top: 0rpx;
		background: #fff;
		position: absolute;
		width: 100%;
		top: -10rpx;
	}

	.yuan {
		display: inline-flex;
		background: #fff;
		border: 2rpx solid #ccc;
		width: 96rpx;
		height: 96rpx;
		padding: 14rpx;
		box-sizing: border-box;
		border-radius: 50%;
		align-items: center;
		justify-content: center;
		overflow: hidden;
		position: absolute;
		left: 50%;
		margin-left: -48rpx;
		top: -14rpx;

	}

	.yuan .yuan-cu-bar-icon {
		width: 100%;
		height: 100%;
	}

	.yuanActive {
		background: #3F8CFF;
		border: 2rpx solid #3F8CFF;
	}

	.tishiBox {
		width: 20rpx;
		height: 20rpx;
		border-radius: 50%;
		background-color: #ff3737;
		position: absolute;
		left: 60%;
		top: 0rpx;
	}
</style>

引用页面代码如下:

<tabbarBox pageCur="pages/index/index" />
//注意:pageCur  引用tabbar页面地址是什么,这里就传什么   tabbar组件跳转时使用

<script>
	import tabBox from '@/components/tabBox.vue';
	export default {
		components: {
			tabbarBox
		},
		
	}
</script>

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

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

相关文章

ABP-Book Store Application中文讲解 - 前期准备 - Part 2:创建Acme.BookStore + Angular

ABP-Book Store Application中文讲解-汇总-CSDN博客 因为本系列文章使用的.NET8 SDK&#xff0c;此处仅介绍如何使用abp cli .NET 8 SDK SQL sevrer 2014创建Angular模板的Acme.BookStore。 目录 1. ABP cli创建项目 1.1 打开cmd.exe 1.2 创建项目 2. ABP Studio创建项…

基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署

基于k8s的Jenkins CI/CD平台部署实践&#xff08;三&#xff09;&#xff1a;集成ArgoCD实现持续部署 文章目录 基于k8s的Jenkins CI/CD平台部署实践&#xff08;三&#xff09;&#xff1a;集成ArgoCD实现持续部署一、Argocd简介二、安装Helm三、Helm安装ArgoCD实战1. 添加Arg…

控制台打印带格式内容

1. 场景 很多软件会在控制台打印带颜色和格式的文字&#xff0c;需要使用转义符实现这个功能。 2. 详细说明 2.1.转义符说明 样式开始&#xff1a;\033[参数1;参数2;参数3m 可以多个参数叠加&#xff0c;若同一类型的参数&#xff08;如字体颜色&#xff09;设置了多个&…

外网访问内网海康威视监控视频的方案:WebRTC + Coturn 搭建

外网访问内网海康威视监控视频的方案&#xff1a;WebRTC Coturn 需求背景 在仓库中有海康威视的监控摄像头&#xff0c;内网中是可以直接访问到监控摄像的画面&#xff0c;由于项目的需求&#xff0c;需要在外网中也能看到监控画面。 实现这个功能的意义在于远程操控设备的…

Linux系统下的延迟任务及定时任务

1、延迟任务 概念&#xff1a; 在系统中我们的维护工作大多数时在服务器行对闲置时进行 我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的&#xff0c;不会重复执行 当延迟任务产生输出后&#xff0c;这些输出会以邮件的形式发送给延迟任务发起者 在 RH…

【网络原理】数据链路层

目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术&#xff0c;定义了物理层和数据链路层的协议&#xff0c;用于在局域网中传输数据帧。 二. 以太网数据帧 1&#xff09;目标地址 …

相或为K(位运算)蓝桥杯(JAVA)

这个题是相或为k&#xff0c;考察相或的性质&#xff0c;用俩个数举例子&#xff0c;011001和011101后面的数不管和哪个数相或都不可能变成前面的数&#xff0c;所以利用这个性质我们可以用相与运算来把和k对应位置的1都积累起来&#xff0c;看最后能不能拼起来k如果能拼起来k那…

AI汽车时代的全面赋能者:德赛西威全栈能力再升级

AI汽车未来智慧出行场景正在描绘出巨大的商业图景&#xff0c;德赛西威已经抢先入局。 在2025年上海车展开幕前夕&#xff0c;德赛西威发布2030年全新使命愿景——“创领安全、愉悦和绿色的出行生活”&#xff0c;并推出全栈式智慧出行解决方案Smart Solution3.0、车路云一体式…

学习Python的第四天之网络爬虫

30岁程序员学习Python的第四天之网络爬虫的Scrapy库 Scrapy库的基本信息 Scrapy库的安装 在windows系统中通过管理员权限打开cmd。运行pip install scrapy即可安装。 通过命令scrapy -h可查看scrapy库是否安装成功. Scrapy库的基础信息 scrapy库是一种爬虫框架库 爬虫框…

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming

76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件&#xff0c;提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计&#xff0c;支持多厂商PLC硬件&#xff0c;具有直观的界面和丰富的功能。 功能特点 多语…

linux中常用的命令(三)

目录 1- ls(查看当前目录下的内容) 2- pwd (查看当前所在的文件夹) 3- cd [目录名]&#xff08;切换文件夹&#xff09; 4- touch [文件名] &#xff08;如果文件不存在&#xff0c;新建文件&#xff09; 5- mkdir[目录名] &#xff08;创建目录&#xff09; 6-rm[文件名]&…

Java 中 AQS 的实现原理

AQS 简介 AQS(全称AbstractQueuedSynchronizer)即抽象同步队列&#xff0c;它是实现同步器的基础组件&#xff0c;并发包中锁的底层就是使用AQS实现的。 由类图可以看到&#xff0c;AQS是一个FIFO的双向队列&#xff0c;其内部通过节点head和tail记录队首和队尾元素&#xff0…

『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!

ubuntu解决matplotlit中文乱码的问题&#xff01; 文章目录 simhei.ttf字体下载链接&#xff1a;http://xiazaiziti.com/210356.html将字体放到合适的地方 sudo cp SimHei.ttf /usr/share/fonts/(base) zkfzkf:~$ fc-list | grep -i "SimHei" /usr/local/share/font…

鸿蒙知识总结

判断题 1、 在http模块中&#xff0c;多个请求可以使用同一个httpRequest对象&#xff0c;httpRequest对象可以复用。&#xff08;错误&#xff09; 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。&#xff08;错误&#xff09; 3、ArkTS中变量声明时不需要…

C++23 新特性:深入解析 std::views::join_with(P2441R2)

文章目录 std::views::join_with 基本用法处理字符串集合std::views::join_with 与其他视图的结合使用总结 随着C23标准的逐步推进&#xff0c;我们迎来了许多令人兴奋的新特性&#xff0c;其中之一就是 std::views::join_with。这个新特性是C23中引入的视图适配器&#xff0c…

数据可视化大屏——智慧社区内网比对平台

综述分析&#xff1a; 智慧社区内网数据比对信息系统 这段代码实现了一个智慧社区内网数据比对信息系统的前端界面&#xff0c;采用三栏式布局展示各类社区安全相关数据。界面主要由左侧数据统计、中间地图展示和右侧数据分析三部分组成&#xff0c;使用了多种图表可视化技术…

Jenkins企业级实战

目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包&#xff08;JDK&#xff09; Jenkins是基于Java的应用程序&#xff0c;因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…

uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)

1、概述 已经通过好几个篇幅来说明商家信息&#xff0c;包括logo、商家名称&#xff0c;地址&#xff0c;电话以及商家简介。通过表单组件和标签&#xff0c;以及我们的文件上传标签&#xff0c;都做了说明。&#xff08;logo上传&#xff0c;用的文件上传组件是上传到公共的数…

MySQL 索引设计宝典:原理、原则与实战案例深度解析

目录 前言第一章&#xff1a;索引设计的基础原则 (知其然&#xff0c;更要知其所以然)第二章&#xff1a;实战案例&#xff1a;电商订单系统的索引设计第三章&#xff1a;索引设计的实践流程总结结语 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜…

C#上传文件到腾讯云的COS

测试环境&#xff1a; vs2022 .net 6控制台应用程序 测试步骤如下&#xff1a; 1 添加子用户&#xff0c;目前是为了拿到secretId和secretKey&#xff0c;打开添加子用户界面链接&#xff1a;https://console.cloud.tencent.com/cam 并为子用户添加API 密钥 2 通过链接htt…