第一种 对象语法
使用对象语法,可以将一个对象传递给 v-bind:class (简写 :class),对象的键是类名,对象的值是布尔值,决定是否应用该类名。
<template>
<div :class="{ 'active': isActive, 'text-danger': hasError }"></div>
</template>
<script>
export default {
data() {
return {
isActive: true,
hasError: false
}
}
}
</script>
第二种 数组语法
同样是使用 v-bind:class ,你可以传递一个数组来应用一个类名列表。
<div :class="[activeClass, errorClass]"></div>
<script>
export default {
data() {
return {
activeClass: 'active',
errorClass: 'text-danger'
}
}
}
</script>
如果你也想根据条件动态切换这些类名,可以在数组中使用三元表达式或逻辑与( && )操作。
<div :class="[isActive ? activeClass : '', errorClass]"></div>
<!-- 或 -->
<div :class="[isActive && activeClass, isError && errorClass]"></div>
第三种 计算属性
当类名的逻辑变得复杂时,可以使用计算属性。
<div :class="classObject"></div>
<script>
export default {
data() {
return {
isActive: true,
hasError: false
}
},
computed: {
classObject() {
return {
'active': this.isActive && !this.hasError,
'text-danger': !this.isActive && this.hasError
}
}
}
}
</script>