介绍
操作元素的 class 列表和内联样式是数据绑定的一个常见需求。
因为它们都是 属性,所以我们可以用 v-bind
处理它们:只需要通过表达式计算出字符串结果即可。
不过,字符串拼接麻烦且易错。因此,在将 v-bind
用于 class
和 style
时,Vue.js 做了专门的增强。表达式结果的类型除了字符串之外,还可以是对象或数组。
实例演示
<template>
<div>
<h1 :class="fontColor">hello world!!!</h1>
<button @click="cutover">切换</button>
</div>
</template>
<script>
export default {
data () {
return {
fontColor: 'fontColorRed'
}
},
methods: {
cutover () {
this.fontColor = 'fontColorBlue'
}
}
}
</script>
<style scoped>
.fontColorRed {
color: red;
}
.fontColorBlue {
color: blue;
}
</style>
对象语法
前面说到了Vue.js对class和style拓展了对象语法和数组语法,下面我们就介绍以下对象语法。
我们可以传给 v-bind:class
一个对象,以动态地切换 class:
<template>
<div>
<h1 :class="{fontColorRed:isFontColorRed, fontSize: isFontSize}">hello world!!!</h1>
</div>
</template>
<script>
export default {
data () {
return {
isFontColorRed: true,
isFontSize: true
}
}
}
</script>
<style scoped>
.fontColorRed {
color: red;
}
.fontSize {
font-size: 50px;
}
</style>
数组语法
我们可以把一个数组传给 v-bind:class
,以应用这个 class 列表:
<template>
<div>
<h1 :class="[fontColorRed, fontSize]">hello world!!!</h1>
</div>
</template>
<script>
export default {
data () {
return {
fontColorRed: 'fontColorRed',
fontSize: 'fontSize'
}
}
}
</script>
<style scoped>
.fontColorRed {
color: red;
}
.fontSize {
font-size: 50px;
}
</style>