uniapp常用组件——顶部导航选项栏(可滑动)

UniApp常用组件——顶部导航标签栏(可滑动)

使用UniApp开发项目时,顶部导航栏是经常会有的功能需求,然而UniApp官网的导航栏组件有时并不那么尽人意,于是我自定义了一个组件,将其封装了起来,并将背景颜色选中文字颜色底部横条颜色等外抛,以便使用者根据需求来选择,完整代码在文章最后已给出

引用方式

  1. 在script中导入并在component中注册
import topTabbar from '@/components/top-tabbar/top-tabbar.vue'
export default {
		components: {topTabbar},
		data() {
			return {
				//将选中标签的索引绑定为tabIndex,以便后续的调用
				tabIndex: 0,
				//导航栏标签列表数组数据结构示例,name为必须属性
				tabBars: [{
					name: "全部",
					id: 0
				}, {
					name: "报名中",
					id: 1
				}, {
					name: "待审核",
					id: 2
				}, {
					name: "预备中",
					id: 3
				}, {
					name: "进行中",
					id: 4
				}, {
					name: "已结束",
					id: 5
				}]
			};
		},
		methods:{
			//点击导航栏标签改变当前索引
			toggleTab(index) {
				this.tabIndex = index
			},
		}
  1. 在template模板中引用
<top-tabbar :tabIndex="tabIndex" :tabBars="tabBars" @toggleToptab="toggleTab" 
		selectedBottomColor="#30c58d" selectedTextColor="#343434" textColor="#7d7e80" 
		bgColor="#ffffff"></top-tabbar>

属性(事件)说明

属性(事件)名类型默认值说明
tabIndexNumber0选中标签栏的索引
tabBarsArray-导航栏标签内容
selectedBottomColorString‘#30c58d’选中时底部横条颜色
bgColorString‘#ffffff’导航区背景颜色
selectedTextColorString‘#343434’选中时文字颜色
textColorString‘#7d7e80’默认文本颜色
@toggleToptabFunction-点击导航栏标签触发

代码示例

  • < template >
<template>
	<view>
		<!--顶部导航栏-->
		<view class="uni-top-tabbar">
			<scroll-view scroll-x class="uni-swiper-tab" :style="{backgroundColor:bgColor}">
				<block v-for="(tabBar,index) in tabBars" :key="index">
					<view class="swiper-tab-list" :class="{'active': tabIndex==index}" :style="{color:tabIndex==index?selectedTextColor:textColor}" @tap="toggleTab(index)">
						{{tabBar.name}}
						<view class="swiper-tab-line" :style="{backgroundColor:tabIndex==index?selectedBottomColor:bgColor}"></view>
					</view>
				</block>
			</scroll-view>
		</view>
	</view>
</template>
  • < script >
<script>
	export default {
		name: "topTabbar",
		props: {
			//选中标签栏的索引
			tabIndex: {
				type: Number,
				default: 0
			},

			//导航栏标签内容
			tabBars: {
				type: Array,
				default: [{
						name: '标签1',
						id: 1
					},
					{
						name: '标签2',
						id: 2
					},
					{
						name: '标签3',
						id: 3
					},
					{
						name: '标签4',
						id: 4
					},
					{
						name: '标签5',
						id: 5
					},
					{
						name: '标签6',
						id: 6
					}
				]
			},
			
			//选中时底部横条颜色
			selectedBottomColor:{
				type:String,
				default:'#30c58d'
			},
			
			//导航区背景颜色
			bgColor:{
				type:String,
				default:'#ffffff'
			},
			
			//选中时文字颜色
			selectedTextColor:{
				type:String,
				default:'#343434'
			},
			
			//默认文本颜色
			textColor:{
				type:String,
				default:'#7d7e80'
			}
		},
		data() {
			return {

			}
		},
		methods: {
			//点击导航栏标签触发
			toggleTab(index) {
				this.$emit("toggleToptab", index)
			}
		}
	}
</script>
  • < style >
<style lang="scss">	
	.uni-top-tabbar {
		/* 以下3项设置用于开启底部阴影显示 */
		/* position: relative;
		z-index: 1;
		overflow: visible; */
	
		.uni-swiper-tab {
			height: 100rpx;
			//设置底部阴影
			//box-shadow: rgba(170, 170, 170, 0.5) 0 2rpx 8rpx 0;
	
			.swiper-tab-list {
				font-size: 28rpx;
				font-weight: normal;
				line-height: 82rpx;
				//设置标签宽度
				width: 22%;
			}
	
			.active {
				.swiper-tab-line {
					height: 6rpx;
					width: 82rpx;
					margin: auto;
				}
			}
		}
	}
</style>

该组件支持开启导航栏底部阴影,需使用者自行在组件内部CSS中开启设置,对于每个标签栏下的具体内容设置,可结合UniApp中Swiper组件搭配使用,效果更佳

UniApp中,通过使用Swiper组件可以实现头部导航滑动效果。首先,在app.vue文件中引入全局样式,可以在其中设置导航的样式和布局。可以通过设置组件内部CSS开启导航底部阴影效果。接下来,可以结合Swiper组件来实现头部导航滑动切换效果。Swiper组件可以用于创建可滑动的视图容器,可以配合导航标签页的切换,实现用户在页面之间的滑动切换。这样可以实现更好的效果。所以,通过设置导航的样式和布局以及使用Swiper组件,可以实现UniApp头部导航滑动效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [uniapp常用组件——顶部导航选项(可滑动)](https://blog.csdn.net/poppingJ/article/details/108361892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [uni-app顶部导航(可滑动)](https://blog.csdn.net/maoge_666/article/details/129952640)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [TCPView 是一个 Windows 程序,它将显示系统上所有 TCP 和 UDP 终结点的详细列表,包括 tcp 连接](https://download.csdn.net/download/fyq158797/88280042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值