vue綁定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è)屬性,來動(dòng)態(tài)切換class。另外,:class可以與普通class共存,例如:
<div id='app'> <div :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也會(huì)更新):
<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才會(huì)被應(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會(huì)始終應(yīng)用,當(dāng)數(shù)據(jù)size不為空時(shí),會(huì)應(yīng)用樣式前綴btn-,后加size的值;當(dāng)數(shù)據(jù)disabled為真時(shí),會(huì)應(yīng)用樣式btn-disabled.
使用計(jì)算屬性給元素動(dòng)態(tài)設(shè)置類名,在業(yè)務(wù)中經(jīng)常用到,尤其是在寫復(fù)用的組件時(shí),所以在開發(fā)過程中,如果表達(dá)式較長或邏輯復(fù)雜,應(yīng)該盡可能優(yōu)先使用計(jì)算屬性。
三、在組件上使用如果直接在自定義組件上使用class或:class,樣式規(guī)則會(huì)直接應(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è)根元素,否則會(huì)無效,當(dāng)不滿足這種條件或需要給具體的子元素設(shè)置類名時(shí),應(yīng)當(dāng)使用組件的 props 來傳遞。
以上就是vue綁定class的三種方法的詳細(xì)內(nèi)容,更多關(guān)于vue綁定class的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. 以PHP代碼為實(shí)例詳解RabbitMQ消息隊(duì)列中間件的6種模式2. html小技巧之td,div標(biāo)簽里內(nèi)容不換行3. PHP字符串前后字符或空格刪除方法介紹4. 將properties文件的配置設(shè)置為整個(gè)Web應(yīng)用的全局變量實(shí)現(xiàn)方法5. nestjs實(shí)現(xiàn)圖形校驗(yàn)和單點(diǎn)登錄的示例代碼6. AspNetCore&MassTransit Courier實(shí)現(xiàn)分布式事務(wù)的詳細(xì)過程7. XML入門的常見問題(一)8. jsp cookie+session實(shí)現(xiàn)簡易自動(dòng)登錄9. css進(jìn)階學(xué)習(xí) 選擇符10. Echarts通過dataset數(shù)據(jù)集實(shí)現(xiàn)創(chuàng)建單軸散點(diǎn)圖
