Vue样式绑定详细介绍
- 1. 样式绑定
- 2. 字符串语法
- 3. 对象语法
- 4. 数组语法
- 4. 自动添加前缀
- 5. 多重值 (2.x的.9+版本或3.x)
1. 样式绑定
在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',//样式对象,注意:样式名使用驼峰命名,如:fontSizemyStyle: {fontSize: '50px',color:'red',fontWeight: 'bold'}}
});
2. 字符串语法
最直接的方式是绑定一个样式字符串,这和直接写在模板内部是一样的,但这种方式不太灵活。
<div v-bind:style="'color: red;'"></div>
3. 对象语法
对象语法是最常用的绑定样式的形式,在对象中,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'}}
}
4. 数组语法
使用数组语法,你可以将多个样式对象应用到同一个元素上:
<div :style="[baseStyles, overridingStyles]"></div>
new Vue({data: {baseStyles: {color: 'red',fontSize: '12px'},overridingStyles: {fontWeight: 'bold'}}
});
4. 自动添加前缀
当使用DOM样式时,Vue.js 会自动侦测并添加相应的前缀,以适应不同浏览器对某些CSS属性的支持。
5. 多重值 (2.x的.9+版本或3.x)
从Vue.js 2.3.0+版本开始,可以为 style 属性绑定的数组提供多个(带前缀的)值:
<div :style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>
这样将会只渲染数组中最后一个被浏览器支持的值,在这个例子中,将会渲染为 display: flex
,如果浏览器支持无前缀的flexbox版本。
综合以上,样式绑定是在开发Vue应用时管理元素样式的一个非常强大且灵活的特性,通过合理地使用字符串、对象或数组语法,可以很方便地在不同状态下,更新元素的样式。