本文鏈接:https://blog.csdn.net/codesWay/article/details/78664148
v-bind通常用來綁定屬性的,格式是v-bind:屬性名 = "值",簡寫:屬性名 = "值"
之前我們知道v-bind主要就是動態更新DOM的屬性的,class作為DOM的屬性當然也不例外,那么v-bind怎么動態更新class呢,分為三種方法:對象語法和數組語法,還有就是變量語法:
變量語法:v-bind:class = "變量",變量形式 ,這里的變量的值,通常是在css定義好的類名;
數組語法:v-bind:class= "[變量1,變量2]" ,數組形式,其實跟上面差不多,只不過可以同時綁定多個class名;
對象語法:v-bind:class = {classname1:boolean,classname2:boolean},對象形式,這里的classname1(2)其實就是樣式表中的類名,這里的boolean通常是一個變量,也可以是常量、計算屬性等,這種方法也是綁定class最常用的方式。
一,在對象語法下:
用v-vind動態設置class名,其值是一個對象(如上例子,當isName為真的時候就會存在類fontCol):
HTML部分
1 <div id="container"> 2 <p :class="{fontCol:isName,setBack:!isAge}" class="weight">{{name}}</p> 3 <i :class="addClass">{{name}}真好看!</i> 4 </div>
JS部分
1 var myApp = new Vue({ 2 el:"#container", 3 // 條件比較少 4 data:{ 5 isName:true, 6 isAge:false, 7 name:"功守道" 8 }, 9 // 條件多的時候 10 computed:{ 11 addClass:function(){ 12 return { 13 checked:this.isName&&!this.isAge 14 } 15 } 16 } 17 })
注意:既然是一個對象,那么該對象內的屬性可能不唯一,但總是每一項為真的時候,對應的類名就會存在。
1.通過v-bind更新的類名和元素本身存在的類名不沖突,可以優雅的共存
2.不過當v-bind:class的表達式過長或者邏輯復雜(一般當條件多於兩個的時候,可以考慮采用計算屬性,返回一個對象)
二,在數組語法下(一般用在當需要綁定多個class名的時候):
1.值是一個數組(不論采用何種方法,最后值是一個數組就行)
2.在數組語法中可以使用對象語法,數組中的某一項可以是一個對象,當然當條件比較多的時候建議使用計算屬性,返回一個數組即可(例子略),
3.數組中的值也可以直接就是class名,也可來源於data項
HTML部分
1 <div id="container1"> 2 <!-- 僅僅數組 --> 3 <div :class="[huClas,heClas]">{{name}}</div> 4 <!-- 三元表達式 --> 5 <div :class="[isAge?huClas:heClas,ju]">{{name}},還行吧!</div> 6 <!-- 該模式下類名huijia一直存在,還有一個類名根據isAge的真假來判斷去留 --> 7 <div :class="arrMethod">{{name}},有點不好看</div> 8 <!-- 計算屬性huijia一直存在,其他的根據情況 --> 9 </div>
JS部分
1 // 數組語法: 2 var myApp1 = new Vue({ 3 el:"#container1", 4 // 當條件比較少的時候 5 data:{ 6 judge1:false, 7 isAge:true, 8 name:"功夫熊貓", 9 huClas:"haha", 10 heClas:"heihei", 11 ju:"huijia" 12 }, 13 // 條件多的時候 14 computed:{ 15 arrMethod:function(){ 16 return [ 17 this.ju, 18 { 19 heClas:this.judge1&&this.isAge, 20 huClas:this.isAge 21 } 22 ] 23 } 24 } 25 }) 26
v-bind綁定style屬性(不常用,僅作了解)
v-bind綁定style,有兩種寫法一種是對象寫法,如下例,一種是數組寫法(不常用,數組中的每一項其實都是一個樣式對象,其實直接寫在一個對象里就行了。);
1 <!-- 直接綁定 --> 2 <div id="container" :style="{color:color,fontSize:fontSize+'px'}"> 3 {{house}} 4 <!-- 計算屬性 --> 5 <h2 :style="style1">{{house}}</h2> 6 <!-- data中的 --> 7 <h3 :style="style">{{house}}</h3> 8 </div> 9 <script type="text/javascript" src="../../dist/vue.min.js"></script> 10 <script type="text/javascript"> 11 var myApp = new Vue({ 12 el:"#container", 13 data:{ 14 house:"世家星城二期", 15 color:"red", 16 fontSize:18, 17 style:{ 18 background:"yellow", 19 fontSize:24+"px" 20 } 21 }, 22 // 計算屬性 23 computed:{ 24 style1:function(){ 25 return { 26 fontSize:this.fontSize+"px", 27 fontWeight:"italic", 28 border:"1px solid #ff0000" 29 } 30 } 31 } 32 })
對於對象語法注意事項:
1.屬性名一般采用駝峰命名法,屬性值可以來源於data項,也可以是自己設置的固定值,
2.不建議直接在DOM中寫對象,因為不容易維護,可以將樣式對象寫在data項中或者是計算屬性中