Vue動態(tài)樣式方法實(shí)例總結(jié)
前言
本文主要針對
Vue2.x來展開vue的動態(tài)css樣式方法歸納。
如果親愛的讀者們需要,后續(xù)會更新Vue3的動態(tài)樣式方法或者使用TypeScript來實(shí)現(xiàn)。CSS動態(tài)樣式一般用于設(shè)置某個字段根據(jù)狀態(tài)顯示不同的樣式。
比如 字段A,平時返回0,正常顯示字段黑色;返回1時,顯示異常,文字顏色為紅色
Vue動態(tài)樣式實(shí)現(xiàn)方式
:style動態(tài)設(shè)置style行內(nèi)樣式,優(yōu)先級最高:class動態(tài)設(shè)置class類名method:{}調(diào)用方法return返回- v-if/v-else + 復(fù)合類名
:style
// 1、三元表達(dá)式 對象形式
<div class="name" :style="{color:state == true ? 'red' : 'black'}">麻辣香鍋</div>
<div class="name" :style="state == true ? 'color:red' : 'color:black'">麻辣牛鍋</div>
// 2、直接對象形式
<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á)式,對象/數(shù)組形式,單個條件
<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、對象形式,多個條件
<div class="name" :class="{'success-text':state == true,'success-text2':state2 == true}">廣式煲仔飯</div>
// 3、data形式或者computed形式 (缺點(diǎn)就是類名一定只能是一個單詞)
<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)樽兞棵荒苡?來隔開,所以只能匹配到_或只有一個單詞的類名
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)就是通過判斷找到對應(yīng)的css類名方法3或4,注意類名只能是單個單詞或
_連接等,此外的,都不行,因?yàn)閖s變量名是以單個單詞組成的。
比如這里success-text,變量無法表達(dá)出來,就算了駝峰命名也不行,因?yàn)閟uccessText是類名,不像:style行內(nèi)式,是作為css屬性名。
:style優(yōu)先級高,無需考慮本標(biāo)簽元素class的屬性,因?yàn)橐欢〞籹tyle相同的屬性所覆蓋;
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動態(tài)樣式方法的文章就介紹到這了,更多相關(guān)Vue動態(tài)樣式方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用vue3+threejs仿iView官網(wǎng)大波浪特效實(shí)例
最近好幾個vue項(xiàng)目都是用ivew作為UI框架,所以下面這篇文章主要給大家介紹了關(guān)于如何利用vue3?+?threejs仿iView官網(wǎng)大波浪特效的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
vue3?setup語法糖下父組件如何調(diào)用子組件
這篇文章主要介紹了vue3?setup語法糖下父組件如何調(diào)用子組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
Electron+vue從零開始打造一個本地播放器的方法示例
這篇文章主要介紹了Electron+vue從零開始打造一個本地播放器的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
vue實(shí)現(xiàn)子路由調(diào)用父路由的方法
這篇文章主要介紹了vue實(shí)現(xiàn)子路由調(diào)用父路由的方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Vue 頁面狀態(tài)保持頁面間數(shù)據(jù)傳輸?shù)囊环N方法(推薦)
vue router給我們提供了兩種頁面間傳遞參數(shù)的方式,一種是動態(tài)路由匹配,一種是編程式導(dǎo)航,接下來通過本文給大家介紹Vue 頁面狀態(tài)保持頁面間數(shù)據(jù)傳輸?shù)囊环N方法,需要的朋友可以參考下2018-11-11
vue+element實(shí)現(xiàn)表單校驗(yàn)功能
這篇文章主要介紹了vue+element表單校驗(yàn)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05


