程式狂想筆記

一個攻城師奮鬥史

0%

Vue 使用綁定 class 筆記

在使用 Bootstrap 會用到 Navbar 選單,做到動態選單時候會用到 isActive,要怎麼透過 Vue 綁定到 class 上面?照官方實作可以簡單完成。

需求解法

1
2
3
4
5
6
<li class="nav-item">
<a class="nav-link" :class="{active: mode === 'edit'}" aria-current="page" href="javascript:;" @click="mode = 'edit'">編輯</a>
</li>
<li class="nav-item">
<a class="nav-link" :class="{active: mode === 'result'}" href="javascript:;" @click="mode = 'result'">結果</a>
</li>
1
2
3
4
5
6
export default {
data(){
return {
mode: 'edit',
}
},

綁定 HTML Class

物件語法

1
<div :class="{ active: isActive }"></div>

靜態與動態 Class 結合

1
2
3
4
<div
class="static"
:class="{ active: isActive, 'text-danger': hasError }"
></div>
1
2
3
4
5
6
data() {
return {
isActive: true,
hasError: false
}
}

結果

1
<div class="static active"></div>

搭配 computed

1
<div :class="classObject"></div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
data() {
return {
isActive: true,
error: null
}
},
computed: {
classObject() {
return {
active: this.isActive && !this.error,
'text-danger': this.error && this.error.type === 'fatal'
}
}
}

陣列語法

1
<div :class="[activeClass, errorClass]"></div>
1
2
3
4
5
6
data() {
return {
activeClass: 'active',
errorClass: 'text-danger'
}
}

result:

1
<div class="active text-danger"></div>

在組件上使用

還滿特別的,建議去看官方文件範例:Class 与 Style 绑定 - 在組件上使用 | Vue.js