注意在自定义组件上绑定class会添加到该组件的根元素上面
1.对象语法
- 传入class对象
- v-bind:class 指令也可以与普通的 class attribute 共存
- 可以动态修改class的值
- 可以绑定一个计算数据来实现
1.传入class对象
<script src="./vue.js"></script>
<div id="app" v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
<script>
new Vue({
el:"#app",
data(){
return {
isActive:true,
hasError:true
}
}
});
2. v-bind:class 指令也可以与普通的 class attribute 共存
<div id="app" class="checked" v-bind:class="{ active: isActive, 'text-danger': hasError }"></div>
3.可以动态修改class的值
<script src="./vue.js"></script>
<div id="app" class="checked" @click="changeClass" v-bind:class="{ active: isActive, 'text-danger': hasError }">这是测试div</div>
<script>
new Vue({
el:"#app",
data(){
return {
isActive:true,
hasError:true
}
},
methods:{
changeClass(){
this.isActive = !this.isActive;
}
}
});
4.可以绑定一个计算数据来实现
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}
2.数组语法
- 传入一个数组
- 可以使用三元表达式
- 数组中也可以使用对象语法
传入一个数组
div v-bind:class="[activeClass, errorClass]"></div>
可以使用三元表达式
<div v-bind:class="[isActive ? 'active' : '', 'text-danger']"></div>
数组中也可以使用对象语法
<div v-bind:class="[{ active: isActive }, 'text-danger']"></div>
3.绑定内联样式
v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS property 名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用引号括起来) 来命名:
<div v-bind:style="{ color: red, fontSize: 30 + 'px' }"></div>