当前位置: 首页 > news >正文

基于Uniapp开发tab选项卡/标签栏前端组件

在开发一些业务场景时候,可能需要切换标签栏来展示不同的信息列表。

为此开发了一个Uniapp组件(myTab),下面为组件的展示效果:

案例代码:

<template>
	<view class="content">
		<mytab :list="myList" name="category" :current="current" @change="handleChange"></mytab>
		<view>
			<view v-for="(item,index) in myList[current].picList" style="float:left;width:300rpx;height:200rpx;border-radius:20rpx;margin-left:30rpx;overflow:hidden;margin-top:30rpx">
				<image :src="item" style="width:300rpx;height:200rpx;" mode="aspectFill">
					
				</image>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: 'Hello',
				current:0,
				myList:[
					{
						category:"风景",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142758A072.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142755A071.jpg"
						]
					},
					{
						category:"二次元",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142754A069.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142754A070.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142754A068.jpg",
						]
					},
					{
						category:"电影",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122925A066.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122912A061.jpg"
						]
					},
					{
						category:"唯美",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122854A051.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122854A048.jpg"
						]
					},
					{
						category:"动画",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122853A042.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122853A043.jpg"
						]
					},
					{
						category:"蜡笔小新",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122853A041.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122853A040.jpg"
						]
						
					},
					{
						category:"欧美",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2024/09/26/20240926091801A118.jpg",
							"https://bzadmin.ajiexcx.cn/img/2024/09/07/20240907172005A031.jpg"
						]
						
					},
					{
						category:"IOS"
					}
				]
			}
		},
		onLoad() {

		},
		methods: {
			handleChange(index){
				console.log("选择了:",index)
				this.current = index;
			}
		}
	}
</script>

<style>
	page{
		padding: 30rpx;
		box-sizing: border-box;
	}
	.content {
	}
</style>

案例代码说明:

1、mytab为自己创建的组件,本页面直接使用该组件。

改组件有几个属性和事件动作,分别为name、current、@change事件,其中name代表着集合中对象属性名称,current为当前选中的选项索引(可以默认设置为0),@change事件为item 切换时的回调函数

2、本案例利用mytab组件实现点击不同的标签栏来显示不同的壁纸图片,本页面用myList集合数据来模拟后端传输过来的数据,其中这个集合的每个元素代表着每个标签页的信息,category属性存储标签栏的名称,picList属性存储每个标签页的壁纸图片集合,myList数据如下:

myList:[
				   {
						category:"风景",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142758A072.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142755A071.jpg"
						]
					},
					{
						category:"二次元",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142754A069.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142754A070.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/11/20250311142754A068.jpg",
						]
					},
					{
						category:"电影",
						picList:[
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122925A066.jpg",
							"https://bzadmin.ajiexcx.cn/img/2025/03/08/20250308122912A061.jpg"
						]
					}
]

故此,利用current来获取不同标签栏的壁纸图片集合,current为当前标签页的索引

<view v-for="(item,index) in myList[current].picList" >
		<image :src="item" style="width:300rpx;height:200rpx;" mode="aspectFill">
					
		</image>
</view>

3、本案例的项目结构:

本案例完整源码,可在微信小程序《星梦Blog》免费获取!

欢迎大家点赞、收藏、关注哦!

相关文章:

  • 医院手术麻醉信息系统是如何为医院提质增效的?
  • 【Kubernets】Deployment 和 StatefulSet 有什么区别?什么时候用 StatefulSet?
  • WIN10隐藏文件夹怎么显示?
  • pip install和conda install的区别
  • Vue秘籍:如何动态修改页面 Title(浏览器页签名称)?
  • Shell 脚本实现内存和磁盘监控
  • C语言踩坑题:int8_t类型数据的移位或运算
  • (五)Dart 数据类型
  • 嵌入式人工智能应用- 第十章街景分类
  • 现在有分段、句子数量可能不一致的中英文文本,如何用python实现中英文对照翻译(即每行英文对应相应的中文)
  • C# 建造者模式(Builder Pattern)详细讲解
  • 一文了解CAS
  • 图片标注及流程
  • 如何使用Python的matplotlib.pyplot绘制热图和损失图
  • 二进制数(十进制转二进制)
  • ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?字符串默认编码?
  • 【VUE】day02-vue过滤器、计算属性、vue-cli、vue组件
  • ST电机库电流采样 三电阻单ADC
  • 【论文笔记】FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
  • Powershell如何查询 windows defender是否开启
  • 运动健康|不同能力跑者,跑步前后营养补给差别这么大?
  • 西湖大学独家回应本科招生走出浙江:经过三年试点,条件成熟
  • 恒瑞医药赴港上市获证监会备案,拟发行不超8.15亿股
  • 玉渊谭天丨中方减少美国农产品进口后,舟山港陆续出现巴西大豆船
  • 国家统计局:一季度规模以上工业企业利润延续持续恢复态势
  • 俄罗斯称已收复库尔斯克州,普京发表讲话