Vue實戰--v-bind以及動態綁定Class和style(轉)


本文鏈接: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項中或者是計算屬性中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM