Vue動(dòng)態(tài)樣式方法實(shí)例總結(jié)
前言
本文主要針對(duì)
Vue2.x
來(lái)展開vue的動(dòng)態(tài)css樣式方法歸納。
如果親愛的讀者們需要,后續(xù)會(huì)更新Vue3的動(dòng)態(tài)樣式方法或者使用TypeScript來(lái)實(shí)現(xiàn)。CSS動(dòng)態(tài)樣式
一般用于設(shè)置某個(gè)字段根據(jù)狀態(tài)顯示不同的樣式。
比如 字段A,平時(shí)返回0,正常顯示字段黑色;返回1時(shí),顯示異常,文字顏色為紅色
Vue動(dòng)態(tài)樣式實(shí)現(xiàn)方式
:style
動(dòng)態(tài)設(shè)置style行內(nèi)樣式,優(yōu)先級(jí)最高:class
動(dòng)態(tài)設(shè)置class類名method:{}
調(diào)用方法return返回- v-if/v-else + 復(fù)合類名
:style
// 1、三元表達(dá)式 對(duì)象形式 <div class="name" :style="{color:state == true ? 'red' : 'black'}">麻辣香鍋</div> <div class="name" :style="state == true ? 'color:red' : 'color:black'">麻辣牛鍋</div> // 2、直接對(duì)象形式 <div class="name" :style="{fontSize:`${size}px`}">麻辣火鍋</div> // 3、數(shù)組形式 <div class="name" :style="[styleObj1,styleObj2]">麻辣香鍋</div> // 4、復(fù)合型 <div class="name" :style="[{color:state ? 'red' : 'black'},styleObj2]">麻辣香鍋</div> // 4、調(diào)用方法形式 <div class="name" :style="setStyle()">麻辣雞煲</div> export default { data(){ return{ state:1, size:14, Obj1:{ color:red }, Obj2:{ fontSize:12px } } }, method:{ setStyle(){ let obj = { color:'red', fontSize:'14px' } return obj } } } <style> .name{ color:yellow; font-size:12px; } </style>
注意:
- HTML上調(diào)用的所有東西,最好是該vue實(shí)例的data、method、watch、computed等本身的變量和函數(shù),一般不要直接調(diào)用外部的函數(shù),比如是工具類untils的方法,有需要可以在data中新建變量綁定在HTML上,在data方法或其他方式去調(diào)用。
- js的樣式屬性名注意用駝峰命名法,比如font-size —— fontSize
:class
// 1、三元表達(dá)式,對(duì)象/數(shù)組形式,單個(gè)條件 <div class="name" :class="{'success-text':state == true}">廣式煲仔飯</div> <div :class="['name', state == true ? 'success' : '']">廣式煲仔飯</div> // 相當(dāng)于 <div class="name" :class="state == true ? 'success-text : ''">廣式煲仔飯</div> // 2、對(duì)象形式,多個(gè)條件 <div class="name" :class="{'success-text':state == true,'success-text2':state2 == true}">廣式煲仔飯</div> // 3、data形式或者computed形式 (缺點(diǎn)就是類名一定只能是一個(gè)單詞) <div class="name" :class="classObject">廣式煲仔飯</div> <div class="name" :class="classObject_cp">廣式煲仔飯</div> // 4、mothod方法 <div class="name" :class="setClass()">廣式煲仔飯</div> <button @click="state = state ? false : true">改變state狀態(tài)</button> export default { data () { return { state:true, state2:true, styleObj1:{ color:'red' }, styleObj2:{ fontSize:'14px' }, classObject:{ success_text:true, // 因?yàn)樽兞棵荒苡?來(lái)隔開,所以只能匹配到_或只有一個(gè)單詞的類名 success_text2:true } } }, computed:{ classObject_cp:function(){ return{ success:this.state, success2:this.state2 } } }, methods: { setClass(){ return { success_text:this.state, success_text2:this.state2 } }, changeState(){ this.state = this.state ? false : true } } } <style> .name{ color:yellow; font-size:12px; } .error-text{ color:red; } .success-text{ color:greenyellow; } .success-text2{ font-size:16px; font-weight: 600; } .success{ color:greenyellow; } .success2{ font-size:16px; font-weight: 600; } </style>
:class
目標(biāo)就是通過(guò)判斷找到對(duì)應(yīng)的css類名
方法3或4,注意類名只能是單個(gè)單詞或
_
連接等,此外的,都不行,因?yàn)閖s變量名是以單個(gè)單詞組成的。
比如這里success-text,變量無(wú)法表達(dá)出來(lái),就算了駝峰命名也不行,因?yàn)閟uccessText是類名,不像:style行內(nèi)式,是作為css屬性名。
:style優(yōu)先級(jí)高,無(wú)需考慮本標(biāo)簽元素class的屬性,因?yàn)橐欢〞?huì)被style相同的屬性所覆蓋;
v-if/v-else + 復(fù)合類名
<div class="father"> <div class="child success-text">child</div> <div class="child"> <div v-if="state == true" class="success-text">child</div> <div v-else-if="state == false" class="error-text">child</div> <div v-else>--</div> </div> <div class="child">child</div> </div> <style> .father{ color:black } .child{ fotn-size:16px } .success-text:{ color:green } .error-text{ color:red } </style>
結(jié)尾
到此這篇關(guān)于Vue動(dòng)態(tài)樣式方法的文章就介紹到這了,更多相關(guān)Vue動(dòng)態(tài)樣式方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)全選組件封裝實(shí)例詳解
這篇文章主要介紹了vue?全選組件封裝,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02ant design vue 清空upload組件圖片緩存的問(wèn)題
這篇文章主要介紹了ant design vue 清空upload組件圖片緩存的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10vue-cli結(jié)合Element-ui基于cropper.js封裝vue實(shí)現(xiàn)圖片裁剪組件功能
這篇文章主要介紹了vue-cli結(jié)合Element-ui基于cropper.js封裝vue實(shí)現(xiàn)圖片裁剪組件功能,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-03-03Vue模擬實(shí)現(xiàn)購(gòu)物車結(jié)算功能
這篇文章主要為大家詳細(xì)介紹了Vue模擬實(shí)現(xiàn)購(gòu)物車結(jié)算功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09vue實(shí)現(xiàn)動(dòng)態(tài)面包屑導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)動(dòng)態(tài)面包屑導(dǎo)航的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Vue項(xiàng)目查看當(dāng)前使用的elementUI版本的方法
今天小編就為大家分享一篇Vue項(xiàng)目查看當(dāng)前使用的elementUI版本的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue 搭建后臺(tái)系統(tǒng)模塊化開發(fā)詳解
這篇文章主要介紹了vue 搭建后臺(tái)系統(tǒng)模塊化開發(fā)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05