Vue躬行记(3)——样式和表单
Vue对DOM元素的class和style两个特性做了专门的增强,即对CSS类和内联样式做了一层封装,通过v-bind指令来处理它们,而接收的表达式既可以是简单的字符串、对象或数组,也可以是复杂的计算属性。不仅如此,Vue还为表单设计了一些语法糖,让表单处理变得尤为简单。
一、CSS类
v-bind指令与class参数配合,就能处理CSS类,并且能接收多种类型的值。
1)对象
v-bind:class可以接收一个对象,对象的属性名就是CSS类名,只有当其值是真值时,才能添加到DOM元素上,否则会被忽略。下面的<p>元素会接收数据对象中的classList,它包含两个属性warning和cur,其中cur属性保存了一个假值。
<p v-bind:class="classList">strick</p><script> var vm = new Vue({ data: { classList: { warning: true, cur: "" } } }); </script>
渲染出的<p>元素如下所示,不包含cur类。
<p class="warning">strick</p>
此外,v-bind:class可简写成:class,并且能与普通的class特性共存,如下所示。
<p :class="classList" class="size">strick</p>
2)数组
当v-bind:class接收一个数组时,其元素既可以是CSS类名,也可以是对象,格式与之前相同,如下所示。
<p :class="[classList, cur]">strick</p><script> var vm = new Vue({ data: { classList: { warning: true }, cur: "cur" } }); </script>
二、内联样式
v-bind指令与style参数配合,就能避免通过字符串拼接的方式来处理内联样式,并且也能接收多种类型的值。
1)对象
v-bind:style可以接收一个对象,对象的属性名有两种命名方式:驼峰式和连字符分隔式,第二种就是层叠样式表中的CSS属性的命名方式。下面的<p>元素会接收数据对象中的cssObj,其属性采用了两种命名方式。
<p :style="cssObj">strick</p><script> var vm = new Vue({ data: { cssObj: { "fontSize": "30px", "line-height": 2 } } }); </script>
渲染出的<p>元素如下所示。
<p style="font-size: 30px; line-height: 2;">strick</p>
Vue允许为属性赋一个包含多个值的数组(即多重值),可让浏览器选择支持的属性,例如定义不同阶段的伸缩盒样式,如下所示。
<p :style="{display: ['-webkit-box', '-ms-flexbox', 'flex']}"