怎么在vue中對(duì)class進(jìn)行綁定?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
<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>
<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í),對(duì)應(yīng)的class也會(huì)更新):
<div class="static active"></div>
3、當(dāng):class的表達(dá)式過(guò)長(zhǎng)或邏輯復(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.
<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>
<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>
<div id="app"> <div :class="[{'active':isActive},errorCls]"></div> </div> <script> var app = new Vue({ el:'#app', data:{ isActive:true, errorCls:'error' } }) </script>
<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ā)過(guò)程中,如果表達(dá)式較長(zhǎng)或邏輯復(fù)雜,應(yīng)該盡可能優(yōu)先使用計(jì)算屬性。
如果直接在自定義組件上使用class或:class,樣式規(guī)則會(huì)直接應(yīng)用到這個(gè)組件的根元素上,例如聲明一個(gè)簡(jiǎn)單的組件:
<script> Vue.component('my-component', { template: '<p class="article">一些文本</p>' }) </script>
然后在調(diào)用該組件時(shí),使用對(duì)象語(yǔ)法或數(shù)組語(yǔ)法給組件綁定class,以對(duì)象語(yǔ)法為例:
<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ì)無(wú)效,當(dāng)不滿足這種條件或需要給具體的子元素設(shè)置類名時(shí),應(yīng)當(dāng)使用組件的 props 來(lái)傳遞。
關(guān)于怎么在vue中對(duì)class進(jìn)行綁定問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
名稱欄目:怎么在vue中對(duì)class進(jìn)行綁定-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://chinadenli.net/article12/decidc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計(jì)、域名注冊(cè)、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容