uniapp 封装 navbar tabbar

news2024/11/15 22:32:39

最近换了一家公司工作

因为上家公司老板给的钱不多 还特别会压榨员工

好了好了,不扯皮了

1、封装navbar:

首先需要在pages.json中将对应页面的原生navbar给取消

举例:

{
	"pages": [
		{
		    "path" : "pages/home/index/index",
			"style" :
			{
			    "navigationBarTitleText": "",
				"navigationBarBackgroundColor": "#2EC461",
				"navigationBarTextStyle": "white",
				"navigationStyle": "custom" //取消原生的navbar,即自定义navbar
			}
		}
    ]
}

然后新建一个vue页面文件,进行编写:

<template>
	<uni-nav-bar shadow fixed status-bar background-color="#2EC461" color="#FFF" leftWidth="180rpx" right-width="180rpx">
		<template #left>
			<view>
				<location></location> <!--封装的另一个组件不用管它-->
			</view>
		</template>
		<template #default>
			<view class="navTitle flex-row-centerAll PingFangFont">
				<slot name="title"></slot>
			</view>
		</template>
	</uni-nav-bar>
</template>

<script setup>
	import location from "../location/location"
</script>

<style lang="scss" scoped>
	.navTitle{
		width: 100%;
		height: 100%;
		font-size: 36rpx;
		text-align: center;
		font-weight: bolder;
	}
</style>

然后在需要用到的页面中进行引入:

<template>
	<view>
		<navbar>
            <!--对应封装的navbar组件中的title slot插槽-->
			<template slot="title">
				<view>
					页面标题
				</view>
			</template>
		</navbar>
	</view>
</template>

<script setup>
	import navbar from "../../../components/navbar/navbar"
</script>

<style>
</style>

效果如下: 

 2.封装tabbar组件,新建tabbar.vue组件

<template>
	<view class="tab">
		<view class="navView" @tap="switc('/pages/home/index/index')">
			<image :src="tabname ==='home'?'/static/tabbar/home_selected.png':'/static/tabbar/home.png'" class="navView-img"/>
			<view :class="tabname ==='home'?'tabTextActive':'tabText'">棣栭〉</view>
		</view>
		<view class="navView" @tap="switc('/pages/my/my')">
			<image :src="tabname ==='my'?'/static/tabbar/my_selected.png':'/static/tabbar/my.png'" class="navView-img"/>
			<view :class="tabname ==='my'?'tabTextActive':'tabText'">鎴戠殑</view>
		</view>
	</view>
</template>

<script setup>
import { onMounted } from "vue";
	defineProps({
		tabname:{
			type:String,
			default:'home'
		}
	})
	const switc = (val) => {
		if(!val)return;
		uni.switchTab({url:val})
	}
	onMounted(() => {
		uni.hideTabBar() //隐藏原生的tabbar
	})
</script>

<style lang="scss" scoped>
	.tab{
		position: fixed;
		bottom: 0;
		left: 0;
		display: flex;
		z-index: 1;
		align-items: center;
		width: 100%;
		height: 120rpx;
		background: #fff;
		box-shadow: 0rpx 0rpx 16rpx #999;
		.navView{
			flex: 1;
			text-align: center;
			font-size: 0;
			.navView-img{
				width: 48rpx;
				height: 48rpx;
				margin-bottom: 6rpx;
			}
			.tabText{
				font-size: 26rpx;
				color: #999;
			}
			.tabTextActive{
				font-size: 26rpx;
				color: #333333;
			}
		}
	}
</style>





然后在tabbar页面进行引入

<template>
	<view>
		<navbar>
			<template slot="title">
				<view>
					善星球
				</view>
			</template>
		</navbar>
		<tabbar tabname="home"></tabbar>
	</view>
</template>

<script setup>
	import navbar from "../../../components/navbar/navbar"
	import tabbar from "../../../components/tabbar/tabbar"
</script>

<style>
</style>

看效果:

特地在样式里面加入了盒子阴影进行区分

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

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

相关文章

Windows 10 首次RDP提示需要修改密码的处理方式

有一台Windows 10 的机器&#xff0c; 系统管理员给了一个RDP账号和密码&#xff0c; 使用这个账号远程登录这台机器&#xff0c; 在命令行输入 mstsc 命令&#xff0c;输入用户名密码之后却无法正常登入&#xff0c; 提示要修改密码&#xff0c; 提示的信息如下&#xff1a;…

《计算机系统与网络安全》 第三章 网络攻击预防与技术

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

【Android】跨端安全小计

前言 在挖移动端的时候&#xff0c;通常会关注跨端方向的问题&#xff0c;因为我们能直接从webview容器去访问native的代码&#xff0c;从客户端角度&#xff0c;从前端能直接深入到客户端&#xff0c;所以跨端这块比较有研究意义。 本文详细介绍android前端到客户端跨端通信…

用pytorch进行BERT文本分类

BERT 是一个强大的语言模型&#xff0c;至少有两个原因&#xff1a; 它使用从 BooksCorpus &#xff08;有 8 亿字&#xff09;和 Wikipedia&#xff08;有 25 亿字&#xff09;中提取的未标记数据进行预训练。顾名思义&#xff0c;它是通过利用编码器堆栈的双向特性进行预训练…

集合专题----set篇

1、Set 接口和常用方法 &#xff08;1&#xff09;Set 接口基本介绍 ① 无序&#xff08;添加和去除的顺序不一致&#xff09;&#xff0c;没有索引&#xff1b; ② 不允许重复元素&#xff0c;所以最多包含一个null&#xff1b; &#xff08;2&#xff09;Set 接口的常用方…

自动驾驶开源数据集(附下载链接)

自动驾驶是带动新兴产业的一个突破点&#xff0c;也是中国结合新能源汽车&#xff0c;实现汽车产业弯道超车的不二手段&#xff0c;是打破国外燃油车技术壁垒的关键一步&#xff01;它不会停止&#xff0c;只是在蓄势待发&#xff01; 数据集介绍&#xff1a;点击 自动驾驶场…

java进阶—通俗易懂线程池的概念(底层原理)及使用

前言 首先&#xff0c;我们知道创建一个线程 可以直接 使用 new Thread(() ->{}).start();这种形式来创建&#xff0c;当线程的run 方法执行结束&#xff0c;线程就终止了&#xff0c;线程对象就会被垃圾回收机制&#xff08;GC&#xff09;释放 然而在我们 开发工作中&…

智安网络|攻防演练对抗:网络边界自动化防御的关键

在当今高度互联的数字世界中&#xff0c;网络安全的重要性日益凸显。为了应对不断增长的网络威胁&#xff0c;组织和企业需要采取主动的防御策略&#xff0c;其中攻防演练对抗和自动化防御在保护网络边界方面扮演着重要的角色。本文将探讨攻防演练对抗的意义&#xff0c;并介绍…

四、用户管理

云尚办公系统&#xff1a;用户管理 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步&#xff01;&#xff01;&#x…

ImportError: numpy.core.multiarray failed to import

遇到的问题&#xff1a; 解决方法&#xff1a; 根据你的opencv版本&#xff0c;去百度搜索对应的 numpy 版本&#xff0c;卸载掉现有的numpy &#xff0c;安装其他版本: sudo pip install numpy1.19.0或者直接升级到numpy的最新版本&#xff1a; sudo pip install --upgrade…

小程序-真机上接口无法调通,开发者工具上可以

近期在对接小程序&#xff0c;在这里记录一下&#xff0c;我们在对接小程序的时候碰到的一些奇奇怪怪的问题。 其中一个问题如下&#xff1a; 真实效果如下图 开发者工具上可以&#xff0c;访问没有人任何问题。 真机上接口无法调通&#xff0c;也没有报错&#xff0c;也没有…

idea中git的使用详细说明

一.克隆项目 1. 打开File>New>Project from Version Control... 2. 打开gitLab&#xff0c;复制项目地址 3. 粘贴到第1步中的URL中&#xff0c;点击“Clone” 二.代码提交 1. 修改文件后需要提交时&#xff0c;可以在git-Local Changes中看到你修改的文件及修改内容 2. 选…

netty学习(1):多个客户端与服务器通信

1. 基于前面一节netty学习&#xff08;1&#xff09;:1个客户端与服务器通信 只需要把服务器的handler改造一下即可&#xff0c;通过ChannelGroup 找到所有的客户端channel&#xff0c;发送消息即可。 package server;import io.netty.channel.*; import io.netty.channel.gr…

MS1826 HDMI 多功能视频处理器 4*4矩阵切换器

基本介绍 MS1826 是一款多功能视频处理器&#xff0c;包含 4 路独立 HDMI 音视频输入通道、4 路独立 HDMI 音视频输出通道以及四路独立可配置为输入或者输出的 SPDIF、I2S 音频信号。支持 4 个独立的字 库定制型 OSD&#xff1b;可处理隔行和逐行视频或者图形输入信号&#xff…

Spring Boot 中的 @ComponentScan 注解是什么,原理,如何使用

Spring Boot 中的 ComponentScan 注解是什么&#xff0c;原理&#xff0c;如何使用 在 Spring Boot 中&#xff0c;ComponentScan 是一种注解&#xff0c;它可以让 Spring 自动扫描指定的包及其子包中的组件&#xff0c;并将这些组件自动装配到 Spring 容器中。本文将介绍 Com…

UML14种图

UML14种图 UML是Unified Modeling Language的缩写&#xff0c;译为统一建模语言。 UML是软件行业的建模规范&#xff0c;可以对软件项目建立需求模型、设计模型、实现模型、测试模型。 UML2.0包含的14种图&#xff1a; UML各种图例&#xff08;常用图形&#xff09; 1. 类图&…

状态机编程实例-状态表法

上篇文章&#xff0c;使用嵌套switch-case法的状态机编程&#xff0c;实现了一个炸弹拆除小游戏。 本篇&#xff0c;继续介绍状态机编程的第二种方法&#xff1a;状态表法&#xff0c;来实现炸弹拆除小游戏的状态机编程。 1 状态表法 状态表法&#xff0c;顾名思义&#xff0…

YOLOv8的目标对象的分类,分割,跟踪和姿态估计的多任务检测实践(Netron模型可视化)

YOLOv8是目前最新版本&#xff0c;在以前YOLO版本基础上建立并加入了一些新的功能&#xff0c;以进一步提高性能和灵活性&#xff0c;是目前最先进的模型。YOLOv8旨在快速&#xff0c;准确&#xff0c;易于使用&#xff0c;使其成为广泛的目标检测和跟踪&#xff0c;实例分割&a…

MATLAB 之 Simulink 操作基础和系统仿真模型的建立

这里写目录标题 一、Simulink 操作基础1. Simulink 的启动与退出1.1 Simulink 的启动1.2 模型文件的打开1.3 Simulink 的退出 2. Simulink 仿真初步2.1 模型元素2.2 仿真步骤2.3 简单实例 二、系统仿真模型的建立1. Simulink 的基本模块2. 模块操作2.1 添加与删除模块2.2 选取模…

快速训练自己的大语言模型:基于LLAMA-7B的lora指令微调

目录 1. 选用工程&#xff1a;lit-llama2. 下载工程3. 安装环境4. 下载LLAMA-7B模型5. 做模型转换6. 初步测试7. 为什么要进行指令微调&#xff1f;8. 开始进行指令微调8.1. 数据准备8.2 开始模型训练8.3 模型测试 前言&#xff1a; 系统&#xff1a;ubuntu 18.04显卡&#xff…