样式 Class 和 Style

传统class写法可以跟其它两种共存

<div class="test-class" v-bind:class="{ active: isActive }"></div>

对象语法

<div v-bind:class="{ active: isActive }"></div>

如果 ​​isActive​​​ 是 ​​true​​ 上面的将输出:

<div class="active"></div>
<div v-bind:class="classObject"></div>
data: {
isActive: true,
error: null
},
computed: {
classObject: function () {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}

数组语法

<div v-bind:class="[activeClass, errorClass]"></div>
data: {
activeClass: 'active',
errorClass: 'text-danger'
}

输出为

<div class="active text-danger"></div>

数组语法中可以使用三元运算符

<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

数组中也可以调动对象语法

<div v-bind:class="[{ active: isActive }, errorClass]"></div>

输出为

<!-- 如果 isActive = false  -->
<div class="text-danger"></div>

自定义组件

用在自定义组件上的时候会在原有 ​​class​​​ 的基础上添加后来写入的 ​​class​

<!--模板-->
Vue.component('my-component', {
template: '<p class="foo bar">Hi</p>'
})

<!--声明-->
<my-component class="baz boo"></my-component>

<!--得到-->
<p class="foo bar baz boo">Hi</p>

绑定内联样式

v-bind:style 的对象语法十分直观——看着非常像 CSS,但其实是一个 JavaScript 对象。CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用单引号括起来) 来命名:

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

自动添加前缀