vue中循环给元素加class属性

使用vue动态给元素添加不同的class属性,经常采用的方法很多,但经常只是添加两个class属性,如果是循环中添加2个以上的class呢?

<p v-for='(item,index) in list'>
	<span :class='setClass(item.code)'>不同class不同颜色</span>
</p>

与之前的方法不同,这里给class设置一个方法--setClass

	methods: {
		setClass(item){
			let obj = {};
			obj[this.colorList[item]]=true;
			return obj;
		}
	}

这个this.colorList是定义在data里面的,

colorList:{
	1:'class-a',
	2:'class-b',
	3:'class-c'
}

最后在style里面分别设置class-a,class-b,class-c的属性即可。

完整代码:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<!-- import Vue.js -->
<script src="//vuejs.org/js/vue.min.js"></script>
<!-- import stylesheet -->
<link rel="stylesheet" href="//unpkg.com/iview/dist/styles/iview.css">
<!-- import iView -->
<script src="//unpkg.com/iview/dist/iview.min.js"></script>

</head>

<body>
<div id="app">
	<p v-for='(item,index) in list'>
		<span :class='setClass(item.code)'>不同class不同颜色</span>
	</p>
</div>
</body>
<script>
new Vue({
	el: "#app",
	data: {
		list:[
			{
				code:1
			},
			{
				code:2
			},
			{
				code:3
			}
		],
		colorList:{
			1:'class-a',
			2:'class-b',
			3:'class-c'
		}
	},
	methods: {
		setClass(item){
			let obj = {};
			obj[this.colorList[item]]=true;
			return obj;
		}
	}
})
</script>
<style type="text/css">
.class-a{
color:orangered
}
.class-b{
color:greenyellow
}
.class-c{
color: #2D8CF0;
}
</style>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_38384967/article/details/88572895
今日推荐