Vue.js每天必學(xué)之Class與樣式綁定
數(shù)據(jù)綁定一個(gè)常見需求是操作元素的 class 列表和它的內(nèi)聯(lián)樣式。因?yàn)樗鼈兌际?attribute,我們可以用 v-bind 處理它們:只需要計(jì)算出表達(dá)式最終的字符串。不過,字符串拼接麻煩又易錯(cuò)。因此,在 v-bind 用于 class 和 style 時(shí),Vue.js 專門增強(qiáng)了它。表達(dá)式的結(jié)果類型除了字符串之外,還可以是對(duì)象或數(shù)組。
綁定 HTML Class
盡管可以用 Mustache 標(biāo)簽綁定 class,比如 `{% raw %}class=”{{ className }}”{% endraw %}`,但是我們不推薦這種寫法和 `v-bind:class` 混用。兩者只能選其一!
對(duì)象語(yǔ)法
我們可以傳給 v-bind:class 一個(gè)對(duì)象,以動(dòng)態(tài)地切換 class。注意 v-bind:class 指令可以與普通的 class 特性共存:
<div class="static" v-bind:class="{ 'class-a': isA, 'class-b': isB }"></div> data: { isA: true, isB: false }
渲染為:
<div class="static class-a"></div>
當(dāng) isA 和 isB 變化時(shí),class 列表將相應(yīng)地更新。例如,如果 isB 變?yōu)?true,class 列表將變?yōu)?"static class-a class-b"。
你也可以直接綁定數(shù)據(jù)里的一個(gè)對(duì)象:
<div v-bind:class="classObject"></div> data: { classObject: { 'class-a': true, 'class-b': false } }
我們也可以在這里綁定一個(gè)返回對(duì)象的計(jì)算屬性。這是一個(gè)常用且強(qiáng)大的模式。
數(shù)組語(yǔ)法
我們可以把一個(gè)數(shù)組傳給 v-bind:class,以應(yīng)用一個(gè) class 列表:
<div v-bind:class="[classA, classB]"> data: { classA: 'class-a', classB: 'class-b' }
渲染為:
<div class="class-a class-b"></div>
如果你也想根據(jù)條件切換列表中的 class,可以用三元表達(dá)式:
<div v-bind:class="[classA, isB ? classB : '']">
此例始終添加 classA,但是只有在 isB 是 true 時(shí)添加 classB 。
不過,當(dāng)有多個(gè)條件 class 時(shí)這樣寫有些繁瑣。在 1.0.19+ 中,可以在數(shù)組語(yǔ)法中使用對(duì)象語(yǔ)法:
<div v-bind:class="[classA, { classB: isB, classC: isC }]">
綁定內(nèi)聯(lián)樣式
對(duì)象語(yǔ)法
v-bind:style 的對(duì)象語(yǔ)法十分直觀——看著非常像 CSS,其實(shí)它是一個(gè) JavaScript 對(duì)象。CSS 屬性名可以用駝峰式(camelCase)或短橫分隔命名(kebab-case):
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div> data: { activeColor: 'red', fontSize: 30 }
直接綁定到一個(gè)樣式對(duì)象通常更好,讓模板更清晰:
<div v-bind:style="styleObject"></div> data: { styleObject: { color: 'red', fontSize: '13px' } }
同樣的,對(duì)象語(yǔ)法常常結(jié)合返回對(duì)象的計(jì)算屬性使用。
數(shù)組語(yǔ)法
v-bind:style 的數(shù)組語(yǔ)法可以將多個(gè)樣式對(duì)象應(yīng)用到一個(gè)元素上:
<div v-bind:style="[styleObjectA, styleObjectB]">
自動(dòng)添加前綴
當(dāng) v-bind:style 使用需要廠商前綴的 CSS 屬性時(shí),如 transform,Vue.js 會(huì)自動(dòng)偵測(cè)并添加相應(yīng)的前綴。
本文已被整理到了《Vue.js前端組件學(xué)習(xí)教程》,歡迎大家學(xué)習(xí)閱讀。
關(guān)于vue.js組件的教程,請(qǐng)大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。
更多vue學(xué)習(xí)教程請(qǐng)閱讀專題《vue實(shí)戰(zhàn)教程》
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)閉eslint檢查和ts檢查的簡(jiǎn)單步驟記錄
這篇文章主要給大家介紹了關(guān)于關(guān)閉eslint檢查和ts檢查的相關(guān)資料,eslint是一個(gè)JavaScript的校驗(yàn)插件,通常用來(lái)校驗(yàn)語(yǔ)法或代碼的書寫風(fēng)格,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02vue+Element-ui實(shí)現(xiàn)分頁(yè)效果實(shí)例代碼詳解
這篇文章主要介紹了vue+Element-ui實(shí)現(xiàn)分頁(yè)效果 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12element中table操作按鈕展示與折疊的實(shí)現(xiàn)示例
因?yàn)殡S著功能的增多,table操作欄中的功能按鈕增多,這時(shí)候就需要折疊,本文主要介紹了element中table操作按鈕展示與折疊的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04vue雙向綁定數(shù)據(jù)限制長(zhǎng)度的方法
這篇文章主要為大家詳細(xì)介紹了vue雙向綁定數(shù)據(jù)限制長(zhǎng)度的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11