v-bind 用于 class 和 style 时,表达式结果的类型除了字符串之外,还可以是对象或数组。
v-bind绑定class类名
一、字符串语法
如果想根据条件切换列表中的 class,可以用三元表达式:
<div :class="is?'active':' '"></div>
二、对象语法
我们可以传给 v-bind:class 一个对象,以动态地切换 class:
1.数据对象内联定义在模板里:
<div class="static" v-bind:class="{ active: isActive, text-danger: hasError }"> </div>
上面的语法表示 active 这个 class 存在与否将取决于数据属性 isActive 的 真假,text-danger这个 class 存在与否将取决于数据属性 text-danger 的 真假.
data如下:
data: { isActive: true, hasError: false }
结果渲染为
<div class="static active"></div>
2.数据对象定义在data里:
<div v-bind:class="classObject"></div>
data: { classObject: { active: true, 'text-danger': false } }
渲染的结果和上面一样。
三、数组语法
我们可以把一个数组传给 v-bind:class,以应用一个 class 列表:
<div v-bind:class="[activeClass, errorClass]"></div>
data: { activeClass: 'active', errorClass: 'text-danger' }
渲染为:
<div class="active text-danger"></div>
v-bind绑定内联样式
一、对象语法
1.样式对象内联定义在模板里:
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: { activeColor: 'red', fontSize: 30 }
2.样式对象定义在data里:这会让模板更清晰:
<div v-bind:style="styleObject"></div>
data: { styleObject: { color: 'red', fontSize: '13px' } }
二、数组语法
v-bind:style 的数组语法可以将多个样式对象应用到同一个元素上
<div v-bind:style="[baseStyles, overridingStyles]"></div>