vue2实现switch组件开关
时间: 2023-06-25 15:05:54 浏览: 195
在 Vue2 中实现 switch 组件开关可以使用 v-model 来绑定一个 Boolean 类型的值,然后在组件内部通过计算属性或者监听器来设置开关状态。下面是一个简单的示例:
```html
<template>
<div class="switch" :class="{ on: value }" @click="toggle">
<div class="handle"></div>
</div>
</template>
<script>
export default {
props: {
value: {
type: Boolean,
default: false
}
},
methods: {
toggle() {
this.$emit('input', !this.value)
}
}
}
</script>
<style>
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
border-radius: 17px;
background-color: #ccc;
transition: background-color 0.3s;
cursor: pointer;
}
.switch.on {
background-color: #4CAF50;
}
.handle {
position: absolute;
top: 2px;
left: 2px;
width: 30px;
height: 30px;
border-radius: 15px;
background-color: #fff;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
transition: transform 0.3s;
}
.switch.on .handle {
transform: translateX(26px);
}
</style>
```
在父组件中使用时,可以使用 v-model 来绑定一个 Boolean 类型的值:
```html
<template>
<div>
<my-switch v-model="isChecked"></my-switch>
<p>isChecked: {{ isChecked }}</p>
</div>
</template>
<script>
import MySwitch from './MySwitch.vue'
export default {
components: {
MySwitch
},
data() {
return {
isChecked: false
}
}
}
</script>
```
这样,当开关被切换时,isChecked 的值也会随之改变。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)