VUE中如何動態(tài)綁定類名和樣式
VUE動態(tài)綁定類名和樣式
1、使用v-bind屬性綁定class和style屬性
2、動態(tài)類名兩種方式:
- 對象形式:給對象屬性賦boolean類型值
- 數組配合三元運算符,通過改變條件的真假實現類名的添加和刪除
<template>
? <div>
? ? <div :class="classObj">動態(tài)綁定對象</div>
? ? <div :class="['namebox', activeStatus ? 'activeNamebox' : '']">
? ? ? 動態(tài)綁定數組
? ? </div>
? </div>
</template>
<script>
export default {
? data() {
? ? return {
? ? ? classObj: {
? ? ? ? namebox: true,
? ? ? ? activeNamebox: false
? ? ? },
? ? ? activeStatus: false
? ? }
? }
}
</script>
<style>
.namebox {
? color: #777;
}
.activeNamebox {
? background-color: aquamarine;
}
</style>3、動態(tài)樣式的兩種方式
- 對象形式
- 數組(包含樣式對象)形式:可以同時添加多個樣式對象
<template>
? <div>
? ? <div :style="styleObj1">對象形式</div>
? ? <div :style="[styleObj1, styleObj2]">數組形式</div>
? </div>
</template>
<script>
export default {
? data() {
? ? return {
? ? ? styleObj1: {
? ? ? ? color: '#eee'
? ? ? },
? ? ? styleObj2: {
? ? ? ? textAlign: center
? ? ? }
? ? }
? }
}
</script>
<style></style>動態(tài)綁定樣式——動態(tài)綁定style寫法 & 動態(tài)class寫法
1、動態(tài)綁定style寫法
注意:
凡是有-的style屬性名都要變成駝峰式,比如font-size要變成fontSize
除了綁定值,其他的屬性名的值要用引號括起來,比如backgroundColor:'#00a2ff'而不是 backgroundColor:#00a2ff
1.1、對象
<div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
<div :style="{color:(index == 1 ? conFontColor:'#000')}"></div>1.2、數組
<div :style="[baseStyles, overridingStyles]"></div>
<div :style="[{color:(index == 1 ? conFontColor:'#000')},{fontSize:'18px'}]"></div>1.3、三元運算符
<div :style="{color:(index == 1 ? conFontColor:'#000')}"></div>
<div :style="[{color:(index == 1 ? conFontColor:'#000')},{fontSize:'18px'}]"></div>
<div :style="item.layerName === activeLayerName?'font-weight:700' : 'font-weight:400'"></div>
<!-- 寫法一 -->
<div :style="[{float: id === '12' ? 'left:'right}]"></div>
<!-- 寫法二 -->
<div :style="float: nameList.length === 20 ? 'height:64px' : 'height:32px' "></div>
<!-- 寫法三 -->
<div :style="{border:( nameId ===item.id ?'2px solid #4C78FF': 'red')}"></div>1.4、綁定data對象
<div :style="styleObject"></div>
<script>
? ? data() {
? ? ? ? return{
? ? ? ? ? styleObject: {
? ? ? ? ? ? color: 'red',
? ? ? ? ? ? fontSize: '14px'
? ? ? ? ? } ?
? ? ? ? }
? ? }
</scrip>2、動態(tài)class寫法
2.1、對象方法
<!-- isActive —— true/false -->
<div :class="{ 'active': isActive ?}">{{name}}</div>?2.2、判斷是否綁定一個active
<div :class="{'active' : isActive == -2}" ?>{{name}}</div>
<div :class="{'active' : isActive == item.nameId}" ?>{{item.name}}</div>2.3、綁定并判斷多個
2.31、第一種:用逗號隔開
<div :class="{ 'active': isActive, 'user': isUser }"></div>2.32、放在data里面
<div :class="classObject">{{name}}</div>
<script>
data() {
? return {
? ? classObject:{ active: true, user:false }
? }
}
</script>2.33、使用computed屬性
<div :class="classObject">{{name}}</div>
<script>
data() {
? return {
? ? isActive: true,
? ? isUser: false
? }
},
computed: {
? classObject: function () {
? ? return {
? ? ? active: this.isActive,
? ? ? user:this.isUser
? ? }
? }
}
</script>2.4、數組方法
2.41、單純數組
<div :class="[isActive,isUser]">{{name}}</div>
<script>
data() {
? return{
? ? isActive:'active',
? ? isUser:'user'
?}
}
</script>2.42、數組與三元運算符結合判斷選擇需要的class
注意:三元運算符后面的“:”兩邊的class需要加上單引號,否則不能正確渲染
:class="[isActive?‘active':'']" 或者 :class="[isActive1?‘active':'']" 或者 :class="[isActiveindex?‘active':'']" 或者 :class="[isActive==index?‘active':‘otherActiveClass']"
2.43、數組對象結合動態(tài)判斷
//前面這個active在對象里面可以不加單引號,后面這個sort要加單引號
:class="[{ active: isActive }, ‘sort']"
或者
:class="[{ active: isActive1 }, ‘sort']"
或者
:class="[{ active: isActiveindex }, ‘sort']"總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Vue+ElementUI創(chuàng)建一個帶有進度顯示的文件下載和打包組件功能
如何使用 Vue 創(chuàng)建一個帶有進度顯示和打包功能的文件下載組件,我們探討了如何導入必要的包,構建組件的基礎結構,實現文件下載與進度顯示,以及如何將文件打包為 ZIP 格式供用戶下載2024-08-08
vant-ui框架的一個bug(解決切換后onload不觸發(fā))
這篇文章主要介紹了vant-ui框架的一個bug(解決切換后onload不觸發(fā)),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11

