操作元素的class列表和内联样式是数据绑定的一个常见需求。因为它们都是attribute,所以我们可以用v-bind处理它们:只需要通过表达式计算出字符串结果即可。不过,字符串拼接麻烦且容易出错,因此,在将v-bind用于class和style时,Vue.js做了专门的增强,表达式结果的类型除了字符串之外,还可以是或数组。
1绑定HTML Class
1.1对象语法
- 我们可以传给:class一个对象,以动态地切换class
- 可以在对象中传入更多字段来动态切换多个class
- :class指令也可以与普通的class attribute共存
- 绑定的数据对象不必内联定义在模板里,可以在data中定义返回包含class的对象
- 我们也可以绑定一个返回对象的计算属性,这是一个常用且强大的模式
1.2数组语法
- 我们可以把一个数组传给:class,以应用一个class列表
- 如果想根据条件切换列表中的class,可以使用三元表达式
- 但是有多个条件class时有些繁琐,所以在数组语法中也可以使用对象语法
1.3在组件上使用
- 当在带有单个根元素的自定义组件上使用class attribute时,这些class将被添加到该元素中,此元素上的现有class将不会被覆盖。
- 对于带数据绑定class也同样使用,不会被覆盖而是会被添加
- 如果组件有多个根元素,需要定义哪些部分将接收这个类,可以使用$attrs组件属性执行操作
2.绑定内联样式
2.1对象语法
:style的对象语法十分直观,看着非常像CSS,但其实是一个JavaScript对象。CSS property名可以用驼峰式或短横线分隔来命名。
- 直接绑定一个样式对象通常更好,会让模板更清晰
- 同样,对象语法常常结合返回对象的计算属性使用
2.2数组语法
:style的数组语法可以将多个样式对象应用到同一个元素上
2.3自动添加前缀
在:style中使用需要一个vendor prefix的CSS property时,vue将自动侦测并添加相应的前缀,Vue时通过运行时检测来确定哪些样式的property是被当前浏览器支持的,如果浏览器不支持某个property,Vue会进行多次测试以找到支持它的前缀。
2.4多重值
可以为style绑定中的property提供一个包含多个值的数组,常用于提供多个带前缀的值。