1. 程式人生 > >Vue2.0筆記——屬性綁定和Class與Style綁定

Vue2.0筆記——屬性綁定和Class與Style綁定

Vue

屬性綁定

通過指令v-bind可以綁定屬性,該指令同v-on一樣,也有一個簡寫,“:”冒號。
綁定元素的屬性,並且可與元素的原屬性共存。當原屬性有值時則顯示原屬性的值,無值則使用綁定的值。

<div id="app">
    <img :src="url" :width="width" width="800" :height="height"/>
</div>

data:{
    url:"https://www.baidu.com/img/bd_logo1.png",
    width:300,
    height:300
}

這是屬性綁定的用法。

Class與Style綁定

我們同常綁定class時,直接寫在class中,這是普通的css綁定。

<style>
    .aa{
        color: red;
    }
    .bb{
        color: blue;
    }
</style>

<p class="aa">這是一段文字,用來測試Class與Style綁定</p>

而如果將這種普通綁定應用在Vue中是不行的。不能直接寫:class=‘aa‘

<p :class="aa">這是一段文字,用來測試Class與Style綁定</p>

這樣做它是不會顯示出來的。
我們需要通過Vue數據data來動態實現。

直接通過data選項中變量 的方式

先定義class樣式,然後再:class裏填寫與樣式名綁定的名稱

data:{
    color:‘aa‘
}
<p :class="color">通過Vue中data選項的變量來動態控制</p>

此時color值為aa,那麽麽顏色就是red,如果動態的為color屬性值賦值為bb,那麽字體顏色就為blue了。

通過數組的方式

.line{
        text-decoration: underline;
    }
<p :class="[color,line]">通過數組的方式來控制多個</p>

另外,指令中是可以有表達式的,就如上面的數組,還可以對data選項的某個number類型的屬性進行數據操作,它僅能實現小的操作,而不能去實現語句。

通過json格式的方式綁定

這次可以不與data選項的屬性有牽扯,直接通過設置類樣式的值為true|false
為true則使用這個樣式,為false則不使用這個樣式,通過true|false來判定是否出現樣式。這種方式也是最佳常用的。

    <p :class="{bb:false,line:true}">通過json的方式來綁定class</p>

由於,值為true|false,那麽麽我們也可以通過值大小的方式給定true或false。

data:{
    num:-99
}
<p :class="{bb:false,line:num>0}">通過json的方式來綁定class</p>

此時line的屬性值是返回false,此時不會顯示下劃線。

通過變量引用json形式

就是不把json數據寫在:class中了,而是定義為實例的一個屬性,放在data中。
格式還是這樣,不過是放在一個屬性中。

data:{
    line_blue:{aa:true,line:true}
}
<p :class="line_blue">通過json變量的方式來綁定</p>

另外,在數組和json中都可以使用三元表達式? :的方式。

綁定內聯樣式

即通過綁定style, :style方式

data:{
    color:red,
    fontSize:20,

}
<p :style="{color:color,fontSize:fontSize + ‘px‘}">綁定內聯</p>

因為內聯的style可以直接在元素中寫,所以json中的key都是css屬性,color,textDecoration,fontSize這些內聯的樣式,(內聯的和style文件內的樣式名不一樣,文件裏是橫杠,內聯是駝峰首字母大寫)。
另一個就是直接通過屬性的方式了,把json賦值給屬性。

data:{
    style1:{color:‘blue‘,fontSize:‘15px‘}
}
<p :style="style1">綁定內聯</p>

同樣,數組也是可以的。

多重值

綁定中的屬性提供一個包含多個值的數組,常用於提供多個帶前綴的值

<div :style="{ display: [‘-webkit-box‘, ‘-ms-flexbox‘, ‘flex‘] }"></div>

這樣寫只會渲染數組中最後一個被瀏覽器支持的值。在本例中,如果瀏覽器支持不帶瀏覽器前綴的 flexbox,那麽就只會渲染 display: flex。

Vue2.0筆記——屬性綁定和Class與Style綁定