uniapp小程序手写tab导航栏切换(点击切换样式,动态样式绑定)

这篇具有很好参考价值的文章主要介绍了uniapp小程序手写tab导航栏切换(点击切换样式,动态样式绑定)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近写uniapp,ui里面有一个导航栏切换的逻辑,因为要跟UI保持一致,对于组件库很难实现高度定制,所以这里就自己手写实现一个点击切换的导航栏。先看下图效果:
uniapptab栏切换,uniapp,uni-app,前端,javascript
主要实现的是通过点击切换导航栏,并且样式有一个切换的效果,大家可以根据自己的需求进行样式的DIY

html部分

我这里只给了关键代码,每一个tab使用了动态绑定class,里面的短横线是tab_itembot写的样式

<view class="tab_contant">
	<view class="tab">
		<view :class="active1"  @click="chenked(1)">
			<view class="tab_itemtitle">入职档案</view>
			<view class="tab_itembot"></view>
		</view>
		<view :class="active2"  @click="chenked(2)">
			<view class="tab_itemtitle">晋升档案</view>
			<view class="tab_itembot"></view>
		</view>
		<view :class="active3"  @click="chenked(3)">
			<view class="tab_itemtitle">荣誉档案</view>
			<view class="tab_itembot"></view>
		</view>
	</view>
</view>

js部分点击切换

可以看到上面动态绑定class,我这里用的是计算属性,并且每个tab都绑定了点击事件用来判断谁高亮:
计算属性:如果当前被选中高亮,则class就是active。没被选中则class就是active1

<script>
	export default {
		data() {
			return {
				isActive: 1
			};
		},
		computed: {
			active1() {
				return this.isActive==1?'active':'active1'
			},
			active2() {
				return this.isActive==2?'active':'active1'
			},
			active3() {
				return this.isActive==3?'active':'active1'
			}
		},
		methods: {
			chenked(type) {
							this.isActive = type
						}
			}
		}
	}
</script>

CSS部分

然后需要编写的就是active和active1两个class的样式编写,前者为被选中的样式,后者是未被选中的样式

.tab_contant {
		position: absolute;
		width: 750rpx;
		height: 634px;
		left: 0px;
		top: 602rpx;
		
		background: #FFFFFF;
		border-radius: 28rpx 28rpx 0px 0px;
		display: flex;
		flex-direction: column;
		align-items: center;
		
		.tab {
			width: 480rpx;
			height: 100rpx;
			display: flex;
			flex-direction: row;
			justify-content: space-between;
			margin-top: 26px;
			// 选中的样式
			.active {
				width: 64px;
				height:50px ;
				display: flex;
				flex-direction: column;
				align-items: center;
				.tab_itemtitle {
					font-family: 'PingFang SC';
					font-style: normal;
					font-weight: 400;
					font-size: 16px;
					line-height: 155%;
					/* identical to box height, or 25px */
					
					text-align: center;
					color: #000000;
				}
				.tab_itembot {
					width: 36px;
					height: 0px;
					
					/* 五分钟蓝 */
					margin-top:5px;
					border: 2px solid #1F6AB5;
					border-radius: 50px;
				}
			}
			// 未选中的样式
			.active1{
				width: 64px;
				height:50px ;
				display: flex;
				flex-direction: column;
				align-items: center;
				.tab_itemtitle {
					font-family: 'PingFang SC';
					font-style: normal;
					font-weight: 400;
					font-size: 12px;
					line-height: 155%;
					/* identical to box height, or 19px */
					
					text-align: center;
					color: #000000;
					opacity: 0.6;
				}
				.tab_itembot {
					width: 15.02px;
					height: 0px;
					margin-top: 10px;
					border: 2px solid #B9B9B9;
					border-radius: 50px;
				}
			}
			
		}
	}

v-if判断

然后下面的内容只需要通过v-if判断isActive的值就行了,就是控制下面内容的显示。我这第二第三个页面是单独写的组件


	<view v-if="isActive==1">入职档案</view>
	<myHonorFile v-if="isActive==2"></myHonorFile>
	<myPromotionFile v-if="isActive==3"></myPromotionFile>

这样就完成了效果的实现,大家可以根据自己的需求修改对应的样式文章来源地址https://www.toymoban.com/news/detail-530449.html

到了这里,关于uniapp小程序手写tab导航栏切换(点击切换样式,动态样式绑定)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包