在Vue中,样式绑定是通过 v-bind:style
或简写 :style
来实现的,它允许你将多种样式动态地绑定到元素上,样式绑定非常灵活,它接受字符串、对象,或对象和数组混合的形式。
class绑定
使用方式:v-bind:,expression的类型:字符串、数组、对象
style绑定
v-bind:style="expression", expression的类型:字符串、数组、对象
示例:
<--定义示例样式-->
<style>
.fontClass {
font-size: 40px;
}
.colorClass {
color: red;
}
</style>
<!--使用-->
<p>
<span v-bind:class="fc">fafa</span>
</p>
<p>
<!--简写-->
<span :class="ac">fafa</span>
</p>
<p>
<!--直接使用style样式单-->
<span style="font-size: 40px; color:blue;">aaa</span>
<br/>
<!-- 使用vue,样式名称为驼峰风格 。花括号,多个属性逗号分隔-->
<span :style="{fontSize:fontSize+'px',color: color}">bbb</span>
<br/>
<span :style="myStyle">test</span>
</p>
var vm = new Vue({
el: "#app",
data: {
fc: 'fontClass',
ac: ['fontClass', 'colorClass'],
fontSize: 40,
color: 'green',
//样式对象,注意:样式名使用驼峰命名,如:fontSize
myStyle: {
fontSize: '50px',
color:'red',
fontWeight: 'bold'
}
}
});
最直接的方式是绑定一个样式字符串,这和直接写在模板内部是一样的,但这种方式不太灵活。
<div v-bind:style="'color: red;'"></div>
对象语法是最常用的绑定样式的形式,在对象中,CSS属性名可以用驼峰式(camelCase)或短横分隔命名(kebab-case,需要用引号括起来)。
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
你可以在数据属性中定义 activeColor
和 fontSize
,然后Vue会自动把它们绑定到元素的style属性上。
如果样式的属性值可能是null或者undefined,Vue将智能地忽略它们。
new Vue({
data: {
activeColor: 'red',
fontSize: 30
}
});
你也可以直接绑定一个样式对象:
<div :style="styleObject"></div>
data() {
return {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
}
使用数组语法,你可以将多个样式对象应用到同一个元素上:
<div :style="[baseStyles, overridingStyles]"></div>
new Vue({
data: {
baseStyles: {
color: 'red',
fontSize: '12px'
},
overridingStyles: {
fontWeight: 'bold'
}
}
});
当使用DOM样式时,Vue.js 会自动侦测并添加相应的前缀,以适应不同浏览器对某些CSS属性的支持。
从Vue.js 2.3.0+版本开始,可以为 style 属性绑定的数组提供多个(带前缀的)值:
<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>
这样将会只渲染数组中最后一个被浏览器支持的值,在这个例子中,将会渲染为 display: flex
,如果浏览器支持无前缀的flexbox版本。
综合以上,样式绑定是在开发Vue应用时管理元素样式的一个非常强大且灵活的特性,通过合理地使用字符串、对象或数组语法,可以很方便地在不同状态下,更新元素的样式。