当前位置:首页 > VUE

vue实现switch

2026-03-27 11:22:36VUE

Vue 实现 Switch 组件

在 Vue 中实现一个 Switch(开关)组件可以通过自定义组件或使用第三方库完成。以下是两种常见方法:

使用原生 HTML 和 Vue 数据绑定

通过 <input type="checkbox"> 结合 Vue 的 v-model 实现基础功能:

vue实现switch

<template>
  <label class="switch">
    <input type="checkbox" v-model="isChecked">
    <span class="slider"></span>
  </label>
</template>

<script>
export default {
  data() {
    return {
      isChecked: false
    }
  }
}
</script>

<style>
.switch {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 34px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  transition: .4s;
  border-radius: 34px;
}

.slider:before {
  position: absolute;
  content: "";
  height: 26px;
  width: 26px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  transition: .4s;
  border-radius: 50%;
}

input:checked + .slider {
  background-color: #2196F3;
}

input:checked + .slider:before {
  transform: translateX(26px);
}
</style>

使用第三方组件库

主流 UI 库如 Element Plus、Ant Design Vue 等已提供现成 Switch 组件:

Element Plus 示例

vue实现switch

<template>
  <el-switch v-model="value" active-color="#13ce66" inactive-color="#ff4949"/>
</template>

<script>
import { ref } from 'vue'
export default {
  setup() {
    const value = ref(false)
    return { value }
  }
}
</script>

Ant Design Vue 示例

<template>
  <a-switch v-model:checked="checked" />
</template>

<script>
import { ref } from 'vue'
export default {
  setup() {
    const checked = ref(false)
    return { checked }
  }
}
</script>

自定义事件扩展

原生实现时可添加 @change 事件处理:

<input 
  type="checkbox" 
  v-model="isChecked"
  @change="handleSwitchChange"
>
methods: {
  handleSwitchChange() {
    console.log('当前状态:', this.isChecked)
    this.$emit('change', this.isChecked)
  }
}

标签: vueswitch
分享给朋友:

相关文章

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现bootstrap

vue实现bootstrap

Vue 中集成 Bootstrap 的方法 在 Vue 项目中集成 Bootstrap 可以通过以下方式实现,涵盖样式、组件和交互功能。 安装 Bootstrap 依赖 通过 npm 或 yarn…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templat…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…

vue 全景实现

vue 全景实现

Vue 全景实现方案 在Vue中实现全景效果,通常需要结合WebGL或第三方库来处理3D场景渲染。以下是几种常见方法: 使用Three.js库 Three.js是一个强大的WebGL库,适合创建3D…

vue实现曲线

vue实现曲线

Vue 实现曲线的方法 在 Vue 中实现曲线可以通过多种方式,包括使用 SVG、Canvas 或第三方库如 D3.js、ECharts 等。以下是几种常见的方法: 使用 SVG 绘制曲线 SVG…