我們可以將一個物件傳遞給 v-bind:class 來動態切換類別:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| //html <div id="app"> <div class="static" :class="{ active: isActive }" >Class</div> <button @click="changeClass">改變Class</button>
<div class="style" v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">Style</div> <button class="green" @click="changeStyle">改變style</button> </div> </div>
//script var app = new Vue({ el: '#app', data: { //class isActive: false, //style activeColor: 'red', fontSize: 30 }, methods: { changeClass: function () { const vm=this; vm.isActive=!vm.isActive; }, changeStyle: function () { const vm=this; vm.activeColor='blue'; vm.fontSize=18; }, } })
|
Vue 菜單active
點擊 獲取 Menu index索引後 讓 menuActive=index時;
判斷 menuActive == index時 li 塞入isActive;
isActive 是Class 的樣式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| //Html <div id="app"> <ul> <li v-for="(item,index,id) in menus" :key="id" :class="menuActive == index ? 'isActive' : ''" @click="menuClickActive(index)" > {{ item.title }} </li> </ul> </div>
//Style var app = new Vue({ el: '#app', data: { menus: [ { id:'',title: '首頁' }, { id:'',title: '關於我們' }, { id:'',title: '聯絡我們' } ], menuActive:0, }, methods: { menuClickActive : function (index) { const vm =this; vm.menuActive =index; } } }) //Style ul{ display:flex; li{ display:flex; margin:auto 10px; &.isActive{ border-bottom:1px solid #333; } } }
|