vue綁定class的三種方法
一、對象語法
1、給v-bind:class 設(shè)置一個對象,可以動態(tài)地切換class,例如:
<div id="app">
<div :class="{'active':isActive}"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
isActive:true
}
})
</script>
最終渲染結(jié)果:
<div class="active"></div>
2、對象中也可以傳入多個屬性,來動態(tài)切換class。另外,:class可以與普通class共存,例如:
<div id="app">
<div class="static" :class="{'active':isActive,'error':isError}"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
isActive:true,
isError:false
}
})
</script>
最終渲染結(jié)果(當數(shù)據(jù)isActive或isError變化時,對應(yīng)的class也會更新):
<div class="static active"></div>
3、當:class的表達式過長或邏輯復(fù)雜時,還可以綁定一個計算屬性,這是一種友好和常見的用法,一般當條件多于兩個時,都可以使用data或者computed,例如:
<div id="app">
<div :class="classes"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
isActive:true,
isError:null
},
computed:{
classes(){
return {
active:this.isActive && !this.error,
'text-fail':this.error && this.error.type ==='fail'
}
}
}
})
</script>
除了計算屬性,也可以直接綁定一個Object類型的數(shù)據(jù),或者使用類似計算屬性的methods.
二、數(shù)組語法
1、當需要應(yīng)用多個class時,可以使用數(shù)組語法,給:class綁定一個數(shù)組,應(yīng)用一個class列表:
<div id="app">
<div :class="[atvieCls,errorCls]"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
atvieCls:'active',
errorCls:'error'
}
})
</script>
渲染后的結(jié)果為:
<div class="active error"></div>
2、使用三元表達式,根據(jù)條件切換class(當數(shù)據(jù)isActive為真時,樣式active才會被應(yīng)用):
<div id="app">
<div :class="[isActive ? activeCls : '',errorCls]"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
isActive:true,
atvieCls:'active',
errorCls:'error'
}
})
</script>
渲染后的結(jié)果為:
<div class="active error"></div>
3、class有多個條件時,這樣寫較為煩瑣,可以在數(shù)組語法中使用對象語法:
<div id="app">
<div :class="[{'active':isActive},errorCls]"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
isActive:true,
errorCls:'error'
}
})
</script>
4、與對象語法一樣,也可以使用data、computed、method三種方法,以計算屬性為例:
<div id="app">
<button :class="classes"></button>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
size: 'large',
disabled: true
},
computed: {
classes: function () {
return [
'btn',
{
['btn-'+this.size]: this.size!=='',
['btn-disabled']: this.disabled,
}
]
}
}
})
</script>
渲染后的結(jié)果為:
<div class="btn btn-large btn-disabled"></div>
以上,樣式btn會始終應(yīng)用,當數(shù)據(jù)size不為空時,會應(yīng)用樣式前綴btn-,后加size的值;當數(shù)據(jù)disabled為真時,會應(yīng)用樣式btn-disabled.
使用計算屬性給元素動態(tài)設(shè)置類名,在業(yè)務(wù)中經(jīng)常用到,尤其是在寫復(fù)用的組件時,所以在開發(fā)過程中,如果表達式較長或邏輯復(fù)雜,應(yīng)該盡可能優(yōu)先使用計算屬性。
三、在組件上使用
如果直接在自定義組件上使用class或:class,樣式規(guī)則會直接應(yīng)用到這個組件的根元素上,例如聲明一個簡單的組件:
<script>
Vue.component('my-component', {
template: '<p class="article">一些文本</p>'
})
</script>
然后在調(diào)用該組件時,使用對象語法或數(shù)組語法給組件綁定class,以對象語法為例:
<div id="app">
<my-component :class="'active':isActive"></my-component>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
isActive: true
}
})
</script>
最終組件渲染后的結(jié)果為:
<p class="article active">一些文本</p>
這種方法僅適用于自定義組件的最外層是一個根元素,否則會無效,當不滿足這種條件或需要給具體的子元素設(shè)置類名時,應(yīng)當使用組件的 props 來傳遞。
以上就是vue綁定class的三種方法的詳細內(nèi)容,更多關(guān)于vue綁定class的資料請關(guān)注腳本之家其它相關(guān)文章!
- vue中使用帶隱藏文本信息的圖片、圖片水印的方法
- Vue實現(xiàn)頁面添加水印功能
- vue 動態(tài)添加class,三個以上的條件做判斷方式
- vue添加錨點,實現(xiàn)滾動頁面時錨點添加相應(yīng)的class操作
- Vue 實現(xiàn)v-for循環(huán)的時候更改 class的樣式名稱
- 在vue中動態(tài)添加class類進行顯示隱藏實例
- vue動態(tài)綁定class的幾種常用方式小結(jié)
- 詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)
- vue中v-for通過動態(tài)綁定class實現(xiàn)觸發(fā)效果
- vue通過style或者class改變樣式的實例代碼
- vue 使用class創(chuàng)建和清除水印的示例代碼
相關(guān)文章
關(guān)于Element-UI Table 表格指定列添加點擊事件
這篇文章主要介紹了關(guān)于Element-UI Table 表格指定列添加點擊事件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
vue-quill-editor二次封裝,實現(xiàn)自定義文件上傳方式
這篇文章主要介紹了vue-quill-editor二次封裝,實現(xiàn)自定義文件上傳方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
詳解Vue基于vue-quill-editor富文本編輯器使用心得
這篇文章主要介紹了Vue基于vue-quill-editor富文本編輯器使用心得,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
VUE3+vite項目中動態(tài)引入組件與異步組件的詳細實例
在做vue3項目中時,每次使用都需要先進行引入,下面這篇文章主要給大家介紹了關(guān)于VUE3+vite項目中動態(tài)引入組件與異步組件的相關(guān)資料,需要的朋友可以參考下2022-09-09
Vue + Echarts頁面內(nèi)存占用高的問題解決方案
點擊左側(cè)的菜單可以切換不同的看板,有些看板頁面中的報表比較多,用戶多次切換后頁面的內(nèi)存占用可以上升為GB級,嚴重時導(dǎo)致頁面內(nèi)存溢出,使得頁面崩潰,極大影響了用戶體驗,本文給大家介紹Vue + Echarts頁面內(nèi)存占用高的問題解決方案,感興趣的朋友一起看看吧2024-02-02
解決VUE中document.body.scrollTop為0的問題
今天小編就為大家分享一篇解決VUE中document.body.scrollTop為0的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue-cli+iview項目打包上線之后圖標不顯示問題及解決方法
這篇文章主要介紹了解決vue-cli+iview項目打包上線之后圖標不顯示問題,本文通過兩種方法給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10

