一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情。
一、对象语法
1.v-bind:class设置一个对象,动态切换class
<div :class="{'active':isActive}">xxx</div>
//样式是否起作用,根据isActive的布尔值是否为true
2.:class可以和class共存
<div class="static" :class="{'active':isActive,'error':isError}">xxx</div>
//当isActive值为true,isError为false,样式为 static和isActive。
//当isActive值为false,isError为true,样式为 static和isError。
//当isActive值为true,isError为true ,样式为 static和isActive、isError
- :class可以绑定数据中的对象
<div class="static" :class="classobj">xxx</div>
export default {
data(){
return{
classobj:{ //可以直接绑定一个对象,对象里面有多个样式
active:true,
error:false
}
}
}
}
二、数组语法
1.v-bind:class设置一个数组
使用了数组就要在data中指定重命名
<div class="static" :class="[activeCls,errorCls]">xxx</div>
export default {
data(){
return{
activeCls:'active', //相当于样式active样式在div中重命名 为activeCls
errorCls:'error'
}
}
}
<style>
.active{xxx}
.error{xxx}
</style>
2.三元表达式
<template>
<div id="app">
<div class="static" :class="[isActive?activeCls:errorCls,baseClass]">xxx</div>
</div>
</template>
<script>
export default {
data(){
return{
isActive:true,
activeCls:'active', //当isActive值为true时,会执行activeCls对应的样式 active 并且执行baseClass对应的样式 baseclass
errorCls:'error', //当isActive值为false时,会执行errorCls对应的样式 error 并且执行baseClass对应的样式 baseclass
baseClass:'baseclass'
}
}
}
</script>
<style scoped>
.active{
background: red;
}
.error{
color: white;
}
.baseclass{
text-align: center;
}
</style>
三元表达式
<div class="coupon-img" :class="[item.ticket_type==1?'thirty-yuan':'fifty-yuan']">
3.数组语法中使用对象语法
<template>
<div id="app">
<div class="static" :class="[{'active':isActive},baseClass]">xxx</div>
</div>
</template>
<script>
export default {
data(){
return{
isActive:true, //因为isActive值为true,样式为active 和 baseClass对应的 baseclass 所以样式为 active、baseclass
activeCls:'active',
baseClass:'baseclass'
}
}
}
</script>
<style scoped>
.active{
background: red;
}
.baseclass{
text-align: center;
}
</style>
4.定义一个数组通过不同索引值获取不同样式
<div class="icon" :class="classMap[support.type]"></div>
created () {
this.classMap = ["decrease", "discount", "guarantee", "invoice", "special"]
},
//根据support.type的数组变化,索引到classMap对应的样式
三、绑定内联样式
1、字符串形式:直接在data()方法里,声明一个CSS样式的字符串,然后在模板中进行绑定
<div id="app">
<div :style="{color:cl,background:bk}">你好吗?</div>
</div>
<script>
new Vue({
el:'#app',
data:{
cl:'red',
bk:'yellow'
}
})
</script>
2、对象形式:直接绑定到一个样式对象,让模板更清晰:在data()方法中,声明一个变量,变量是一个对象。然后在模板中进行绑定。
<div id="app">
<div :style="testObj">你好吗?</div>
</div>
<script>
new Vue({
el:'#app',
data:{
testObj:{
color:red;
background:yellow;
}
}
})
</script>
注意事项:建议在工作中使用对象的形式,来编写模板中的行内样式动态绑定。因为这样更加直观,字符串拼接也不容易出错。