利用vue2.0 实现tab标签切换效果 比较实用

初学vue,练习写了一个demo 网上有很多同样的例子,但都只是改text数据,如果我想加入图片或者复杂的dom结构就不实用,今天这个就刚好可以。

先上代码:

html部分 【记得引入vue文件哦】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<style type="text/css">
		.tab{width: 100px;height: 30px;text-align: center;border: 1px solid #ccc;float: left;line-height: 30px;}
		.on{background: red; color: #fff;}
	</style>
	
	 <script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
 <script src="js/vue2.0.js" type="text/javascript" charset="utf-8"></script>
	<body>
		<div id="app" v-cloak> 
		  <!-- 我这判断 下标,是测试使用的,建议大家判断的时候  改成  tab1... 这种-->
		  	  <!-- 而且 我分别用不同的class类名来区别内容是否已更新,大家看的时候,可以查看代码变化-->
			 	<div class="aa" v-if="avlist==0">aaa内容可以自行修改</div>
			 	<div class="bb" v-else-if="avlist==1">内容可以自行修改bbb</div>
			 	<div class="cc" v-else-if="avlist==2">内容可以自行修改ccc</div>
			 	<div class="dd" v-else-if="avlist==3">内容可以自行修改ddd</div>
			 <template v-for="(key,index) in list">
			 	<div class="tab" :class="{'on':isclass[index]}" @click="handal(index)">{{key}}</div>
			 </template>
		</div>
			</body>

js部分


<script> 
		var vm = new Vue({ 
		 	el:"#app",
		 	data:{
		 		list:['tab1','tab2','tab3','tab4'],
		 		isclass:[true,false,false,false],//用来表示状态,这个可以修改 也可以优化掉
		 		avlist :0,
		 		
		 	},
		 	methods:{
		 		handal:function(a){
		 			this.avlist=a;
					for(var i=0; i<this.isclass.length; i++){
				 		   this.isclass[i]=false;
				 		   this.isclass[a]=true;
					}
		 		}
		 	},
		})
		
		
	</script>

这样写的好处就是,可以在dom结构中自行定义内容,if判断只是规定了某些内容要不要显示

Logo

前往低代码交流专区

更多推荐