Vue 學(xué)習(xí)筆記入門篇: v--bind以及class與style的綁定

Vue 學(xué)習(xí)筆記入門篇: v--bind以及class與style的綁定

應(yīng)用場景: DOM 元素經(jīng)常會(huì)動(dòng)態(tài)地綁定一些 class 類名或 style 樣式

4.1 了解bind指令

v--bind的復(fù)習(xí)
鏈接的 href 屬性和圖片的 src 屬性都被動(dòng)態(tài)設(shè)置了,當(dāng)數(shù)據(jù)變化時(shí),就會(huì)重新渲
染。

在數(shù)據(jù)綁定中,最常見的兩個(gè)需求就是元素的樣式名稱 class 和內(nèi)聯(lián)樣式 style 的動(dòng)
態(tài)綁定,它們也是 HTML的屬性,因此可以使用 v--bind 指令。我們只需要用 v--bind
計(jì)算出表達(dá)式最終的字符串就可以,不過有時(shí)候表達(dá)式的邏輯較復(fù)雜,使用字符串
拼接方法較難閱讀和維護(hù),所以 Vue.js 增強(qiáng)了對(duì) class 和 style 的綁定。

4.2 綁定 class 的幾種方式

4.2.1 對(duì)象語法

我們可以傳給 v-bind:class 一個(gè)對(duì)象,以動(dòng)態(tài)地切換 class:

<div v-bind:class="{ active: isActive }"></div>

上面的語法表示 active 這個(gè) class 存在與否將取決于數(shù)據(jù)屬性 isActive 的 truthiness。

isActive 值為true / false
當(dāng) class 的表達(dá)式過長或邏輯復(fù)雜時(shí),還可以綁定一個(gè)計(jì)算屬性,這是一種很友好和常見的
用法,一般當(dāng)條件多于兩個(gè)時(shí), 都可以使用 data 或 computed

<div v-bind:class="classObject"></div>
data: {
  isActive: true,
  error: null
},
computed: {
  classObject: function () {
    return {
      active: this.isActive && !this.error,
      'text-danger': this.error && this.error.type === 'fatal'
    }
  }
}

4.2.2 數(shù)組語法

當(dāng)需要應(yīng)用多個(gè) class 時(shí), 可以使用數(shù)組語法 , 給:class 綁定一個(gè)數(shù)組,應(yīng)用一個(gè) class
列表:

<div v-bind:class="[activeClass, errorClass]"></div>
data: {
  activeClass: 'active',
  errorClass: 'text-danger'
}

渲染成

<div class="active text-danger"></div>

數(shù)組成員直接對(duì)應(yīng)className--類名

可以用三目運(yùn)算實(shí)現(xiàn),對(duì)象和數(shù)組混用

<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

4.2.3 在組件上使用

4.3 綁定內(nèi)聯(lián)樣式

使用 v--bind:style (即:style ) 可以給元素綁定內(nèi)聯(lián)樣式,方法與 :class 類似,
也有對(duì)象語法和
數(shù)組語法,看起來很像直接在元素上寫 CSS:
注意 : css 屬性名稱使用駝峰命名( came!Case )或短橫分隔命名( kebab-case
,

<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
data: {
  activeColor: 'red',
  fontSize: 30
}

直接綁定到一個(gè)樣式對(duì)象通常更好,這會(huì)讓模板更清晰:

<div v-bind:style="styleObject"></div>
data: {
  styleObject: {
    color: 'red',
    fontSize: '13px'
  }
}
  • 應(yīng)用多個(gè)樣式對(duì)象時(shí) , 可以使用數(shù)組語法 :在實(shí)際業(yè)務(wù) 中,style 的數(shù)組語法并不常
    用 , 因?yàn)橥梢詫懺谝粋€(gè)對(duì)象里面 : 而較為常用 的應(yīng)當(dāng)是計(jì)算屬性
  • 使用 :style 時(shí), Vue .js 會(huì)自動(dòng)給特殊的 css 屬性名稱增加前綴, 比如 transform 。
  • 無需再加前綴屬性?。。?!

復(fù)習(xí):

  • v-bind通常用來綁定屬性的,格式是v-bind:屬性名 = "值",簡寫:屬性名 = "值"

  • 變量語法:v-bind:class = "變量",變量形式 ,這里的變量的值,通常是在css定義好的類名;

  • 數(shù)組語法:v-bind:class= "[變量1,變量2]" ,數(shù)組形式,其實(shí)跟上面差不多,只不過可以同時(shí)綁定多個(gè)class名;

  • 對(duì)象語法:v-bind:class = {classname1:boolean,classname2:boolean},對(duì)象形式,這里的classname1(2)其實(shí)就是樣式表中的類名,這里的boolean通常是一個(gè)變量,也可以是常量、計(jì)算屬性等,這種方法也是綁定class最常用的方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容