<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>active-menu-list</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<script src="https://cdn.jsdelivr.net/npm/vue@2.6/dist/vue.min.js"></script>
<style>
* {
list-style: none;
}
.process-list-item {
border: 1px solid black;
width: 100px;
height: 50px;
line-height: 50px;
margin: 10px auto;
text-align: center;
}
.active {
border: 1px solid #eeeeee;
background: skyblue;
color: white;
}
</style>
</head>
<body>
<div id="app">
<ul>
多选
<li v-for="item in processOptions" :key="item.id"
:class="['process-list-item', {active: crtActiveIds.includes(item.id)}]" @click="toActiveId(item)">
{{ item.label }}
</li>
</ul>
<ul>
单选
<li class="process-list-item"
v-for="(item, index) in processOptions2"
:class="{'active':isActive==index}"
@click="toActive(index)"
:key="index">
{{item}}
</li>
</ul>
</div>
<script>
new Vue({
el: '#app',
data: {
processOptions: [
{ id: 22, label: '小张' },
{ id: 332, label: '里斯' },
{ id: 988, label: '王武' },
],
processOptions2: [
'1', '2', '3'
],
isActive: -1,//默认不选中,为0时选中第一个
crtActiveIds: []
},
methods: {
toActiveId(item) {
let index = this.crtActiveIds.indexOf(item.id)
index > -1 ? this.crtActiveIds.splice(index, 1) : this.crtActiveIds.push(item.id)
console.log(this.crtActiveIds)
},
toActive(index) {
this.isActive = index;
}
},
})
</script>
</body>
</html>
vue动态绑定class
最新推荐文章于 2022-09-30 14:55:14 发布