怎么在vue中對class進行綁定?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

<div id="app">
<div :class="{'active':isActive}"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
isActive:true
}
})
</script>最終渲染結果:
<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>最終渲染結果(當數(shù)據(jù)isActive或isError變化時,對應的class也會更新):
<div class="static active"></div>
3、當:class的表達式過長或邏輯復雜時,還可以綁定一個計算屬性,這是一種友好和常見的用法,一般當條件多于兩個時,都可以使用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.
<div id="app">
<div :class="[atvieCls,errorCls]"></div>
</div>
<script>
var app = new Vue({
el:'#app',
data:{
atvieCls:'active',
errorCls:'error'
}
})
</script>渲染后的結果為:
<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>渲染后的結果為:
<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>渲染后的結果為:
<div class="btn btn-large btn-disabled"></div>
以上,樣式btn會始終應用,當數(shù)據(jù)size不為空時,會應用樣式前綴btn-,后加size的值;當數(shù)據(jù)disabled為真時,會應用樣式btn-disabled.
使用計算屬性給元素動態(tài)設置類名,在業(yè)務中經(jīng)常用到,尤其是在寫復用的組件時,所以在開發(fā)過程中,如果表達式較長或邏輯復雜,應該盡可能優(yōu)先使用計算屬性。
如果直接在自定義組件上使用class或:class,樣式規(guī)則會直接應用到這個組件的根元素上,例如聲明一個簡單的組件:
<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>最終組件渲染后的結果為:
<p class="article active">一些文本</p>
這種方法僅適用于自定義組件的最外層是一個根元素,否則會無效,當不滿足這種條件或需要給具體的子元素設置類名時,應當使用組件的 props 來傳遞。
關于怎么在vue中對class進行綁定問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。
名稱欄目:怎么在vue中對class進行綁定-創(chuàng)新互聯(lián)
標題網(wǎng)址:http://www.chinadenli.net/article12/decidc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、自適應網(wǎng)站、網(wǎng)站設計、域名注冊、外貿(mào)網(wǎng)站建設、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容