vue綁定class的三種方法
一、對象語法
1、給v-bind:class 設(shè)置一個(gè)對象,可以動態(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、對象中也可以傳入多個(gè)屬性,來動態(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é)果(當(dāng)數(shù)據(jù)isActive或isError變化時(shí),對應(yīng)的class也會更新):
<div class="static active"></div>
3、當(dāng):class的表達(dá)式過長或邏輯復(fù)雜時(shí),還可以綁定一個(gè)計(jì)算屬性,這是一種友好和常見的用法,一般當(dāng)條件多于兩個(gè)時(shí),都可以使用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>
除了計(jì)算屬性,也可以直接綁定一個(gè)Object類型的數(shù)據(jù),或者使用類似計(jì)算屬性的methods.
二、數(shù)組語法
1、當(dāng)需要應(yīng)用多個(gè)class時(shí),可以使用數(shù)組語法,給:class綁定一個(gè)數(shù)組,應(yīng)用一個(gè)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、使用三元表達(dá)式,根據(jù)條件切換class(當(dāng)數(shù)據(jù)isActive為真時(shí),樣式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有多個(gè)條件時(shí),這樣寫較為煩瑣,可以在數(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三種方法,以計(jì)算屬性為例:
<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)用,當(dāng)數(shù)據(jù)size不為空時(shí),會應(yīng)用樣式前綴btn-,后加size的值;當(dāng)數(shù)據(jù)disabled為真時(shí),會應(yīng)用樣式btn-disabled.
使用計(jì)算屬性給元素動態(tài)設(shè)置類名,在業(yè)務(wù)中經(jīng)常用到,尤其是在寫復(fù)用的組件時(shí),所以在開發(fā)過程中,如果表達(dá)式較長或邏輯復(fù)雜,應(yīng)該盡可能優(yōu)先使用計(jì)算屬性。
三、在組件上使用
如果直接在自定義組件上使用class或:class,樣式規(guī)則會直接應(yīng)用到這個(gè)組件的根元素上,例如聲明一個(gè)簡單的組件:
<script> Vue.component('my-component', { template: '<p class="article">一些文本</p>' }) </script>
然后在調(diào)用該組件時(shí),使用對象語法或數(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>
這種方法僅適用于自定義組件的最外層是一個(gè)根元素,否則會無效,當(dāng)不滿足這種條件或需要給具體的子元素設(shè)置類名時(shí),應(yīng)當(dāng)使用組件的 props 來傳遞。
以上就是vue綁定class的三種方法的詳細(xì)內(nèi)容,更多關(guān)于vue綁定class的資料請關(guān)注腳本之家其它相關(guān)文章!
- vue中使用帶隱藏文本信息的圖片、圖片水印的方法
- Vue實(shí)現(xiàn)頁面添加水印功能
- vue 動態(tài)添加class,三個(gè)以上的條件做判斷方式
- vue添加錨點(diǎn),實(shí)現(xiàn)滾動頁面時(shí)錨點(diǎn)添加相應(yīng)的class操作
- Vue 實(shí)現(xiàn)v-for循環(huán)的時(shí)候更改 class的樣式名稱
- 在vue中動態(tài)添加class類進(jìn)行顯示隱藏實(shí)例
- vue動態(tài)綁定class的幾種常用方式小結(jié)
- 詳解TypeScript+Vue 插件 vue-class-component的使用總結(jié)
- vue中v-for通過動態(tài)綁定class實(shí)現(xiàn)觸發(fā)效果
- vue通過style或者class改變樣式的實(shí)例代碼
- vue 使用class創(chuàng)建和清除水印的示例代碼
相關(guān)文章
Vue實(shí)現(xiàn)選項(xiàng)卡tab切換制作
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)選項(xiàng)卡tab切換制作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue2.0如何實(shí)現(xiàn)echarts餅圖(pie)效果展示
這篇文章主要介紹了vue2.0如何實(shí)現(xiàn)echarts餅圖(pie)效果展示,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10Vue淺析axios二次封裝與節(jié)流及防抖的實(shí)現(xiàn)
axios是基于promise的HTTP庫,可以使用在瀏覽器和node.js中,它不是vue的第三方插件,vue-axios是axios集成到Vue.js的小包裝器,可以像插件一樣安裝使用:Vue.use(VueAxios,?axios),本文給大家介紹axios的二次封裝和節(jié)流與防抖2022-08-08el-tree設(shè)置選中高亮/焦點(diǎn)高亮、選中節(jié)點(diǎn)加深背景及更改字體顏色等的方法
el-tree默認(rèn)有較淺的背景色,這里業(yè)務(wù)需要,選中節(jié)點(diǎn)的字體高亮,更改顏色,下面這篇文章主要給大家介紹了關(guān)于el-tree選中高亮/焦點(diǎn)高亮、選中節(jié)點(diǎn)加深背景及更改字體顏色等的設(shè)置方法,需要的朋友可以參考下2022-12-12vue解決Not?allowed?to?load?local?resource問題的全過程
這篇文章主要給大家介紹了關(guān)于vue解決Not?allowed?to?load?local?resource問題的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10Vue+ElementUI?封裝簡易PaginationSelect組件的詳細(xì)步驟
這篇文章主要介紹了Vue+ElementUI?封裝簡易PaginationSelect組件,這里簡單介紹封裝的一個(gè)Pagination-Select組件幾個(gè)步驟,結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08