要求:第一個按鈕是選中的狀態,點擊按鈕變背景色
效果圖:
點擊前:

點擊后:

先寫一個簡單的按鈕樣式
<template>
<div>
<button class="btn1">按鈕1</button>
<button class="btn2">按鈕2</button>
</div>
</template>
<script>
export default {
data() {
return {};
},
methods: {}
};
</script>
<style scoped>
.btn1 {
width: 72px;
height: 20px;
border: 1px solid #d9d9d9;
border: 0;
outline: none;
}
.btn2 {
width: 72px;
height: 20px;
border: 1px solid #d9d9d9;
border: 0;
outline: none;
}
</style>
然后在需要寫點擊之后的樣式和邏輯代碼:
加一個三元表達式和樣式,以及點擊事件
<button class="btn1" @click="btn1data()" :class="showmode ? 'active' : 'btn1'" > 按鈕1 </button> <button class="btn2" @click="btn2data()" :class="!showmode ? 'active' : 'btn1'" > 按鈕2 </button> return { showmode: true }; methods: { btn1data() { this.showmode = true; }, btn2data() { this.showmode = false; } .btn2.active { background: red; } }
完整代碼:
html:
<template>
<div>
<button
class="btn1"
@click="btn1data()"
:class="showmode ? 'active' : 'btn1'"
>
按鈕1
</button>
<button
class="btn2"
@click="btn2data()"
:class="!showmode ? 'active' : 'btn1'"
>
按鈕2
</button>
</div>
</template>
css:
.btn1.active,
.btn2.active {
background: red;
}
js:
<script> export default { data() { return { showmode: true }; }, methods: { btn1data() { this.showmode = true; }, btn2data() { this.showmode = false; } } }; </script>
然后就大功告成啦!
