先將等等會用到的 CSS 寫好
1 | .box { |
Class 樣式
行內物件實體
這個方式是我自己最常使用的,直接將物件寫在 :class
內,物件屬性為 class 名稱
,值為條件判斷的參數。
1 | <div class="box" :class="{'rotate' : box.isTransform, 'bg-danger': box.isColor}"></div> |
還需要有條件判斷的參數
1 | let app = new Vue({ |
可以透過 點擊事件
或是 checkbox
來簡單操作條件判斷參數
這邊要注意在 HTML 內使用
-
是會報錯的,特殊情況(符號)時不可使用.
,而需使用[]
的物件寫法代替。
1 | <input type="checkbox" v-model="box.isTransform"> |
將 Class 列表以物件型態宣告在 Vue data 內
這個方式雖然個人不常使用,但是寫起來更為簡潔好管理,可以讓 HTML 程式碼保持乾淨。
1 | <div class="box" :class="classList"></div> |
宣告 Class 列表物件
1 | let app = new Vue({ |
同樣可以來簡單操作條件判斷參數,不同的是這次是物件所以我們也用物件的方式來操作條件的布林值參數
1 | <input type="checkbox" v-model="classList.rotate"> |
我們還可以寫一些函式,透過操作物件實踐動態新增 Class 樣式
1 | methods: { |
使用
1 | <input type="button" value="addClass!" @click="addSomeNewClass('radius')"> |
陣列
和剛剛的物件例子很相似,同樣可以直接將 Class 清單的陣列寫在行內,或是宣告在 Vue 應用程式的 data 中。寫在行內的情況較少,這邊只舉第二個例子。
1 | <div class="box" :class="classArr"></div> |
1 | let app = new Vue({ |
透過 checkbox
來操作 Class 開關
1 | <input type="checkbox" v-model="classArr" value="rotate"> |
一樣可以寫一些函式,透過操作陣列來動態新增 Class 樣式
1 | methods: { |
Style 樣式
行內物件實體
1 | <div class="box" :style="{ backgroundColor: 'red', outline: '1px solid blue' }"></div> |
1 | <div class="box" :style="[{ backgroundColor: 'red' }, { borderWidth: '5px' }]"></div> |
將行內 Style 列表以物件型態宣告在 Vue data 內
1 | <div class="box" :style="styleObject"></div> |
1 | <div class="box" :style="[styleObject, styleObject2]"></div> |
1 | var app = new Vue({ |
透過 JavaScript 操作物件來動態新增樣式
1 | methods: { |
Codepen Demo
See the Pen 4-28 動態切換 ClassName 及 Style 多種方法 by Dylan (@Dylan_Liu) on CodePen.