Switch 开关

表示两种相互对立的状态间的切换,多用于触发「开/关」。

基础用法

绑定 v-model 到一个 Boolean 类型的变量。 可以使用 --el-switch-on-color 属性与 --el-switch-off-color 属性来设置开关的背景色。

Switch 开关 - 图1

  1. <template>
  2. <el-switch v-model="value1" />
  3. <el-switch
  4. v-model="value2"
  5. class="ml-2"
  6. style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
  7. />
  8. </template>
  9. <script lang="ts" setup>
  10. import { ref } from 'vue'
  11. const value1 = ref(true)
  12. const value2 = ref(true)
  13. </script>

尺寸

Switch 开关 - 图2

  1. <template>
  2. <el-switch
  3. v-model="value"
  4. size="large"
  5. active-text="Open"
  6. inactive-text="Close"
  7. />
  8. <br />
  9. <el-switch v-model="value" active-text="Open" inactive-text="Close" />
  10. <br />
  11. <el-switch
  12. v-model="value"
  13. size="small"
  14. active-text="Open"
  15. inactive-text="Close"
  16. />
  17. </template>
  18. <script lang="ts" setup>
  19. import { ref } from 'vue'
  20. const value = ref(true)
  21. </script>

文字描述

使用active-text属性与inactive-text属性来设置开关的文字描述。 使用 inline-prompt 属性来控制文本是否显示在点内。

使用active-text属性与inactive-text属性来设置开关的文字描述。

Switch 开关 - 图3

  1. <template>
  2. <el-switch
  3. v-model="value1"
  4. class="mb-2"
  5. active-text="Pay by month"
  6. inactive-text="Pay by year"
  7. />
  8. <br />
  9. <el-switch
  10. v-model="value2"
  11. class="mb-2"
  12. style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
  13. active-text="Pay by month"
  14. inactive-text="Pay by year"
  15. />
  16. <br />
  17. <el-switch
  18. v-model="value3"
  19. inline-prompt
  20. active-text="是"
  21. inactive-text="否"
  22. />
  23. <el-switch
  24. v-model="value4"
  25. class="ml-2"
  26. inline-prompt
  27. style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
  28. active-text="Y"
  29. inactive-text="N"
  30. />
  31. </template>
  32. <script lang="ts" setup>
  33. import { ref } from 'vue'
  34. const value1 = ref(true)
  35. const value2 = ref(true)
  36. const value3 = ref(true)
  37. const value4 = ref(true)
  38. </script>

显示自定义图标

TIP

使用 inactive-iconactive-icon 属性来添加图标。 您可以传递组件名称的字符串(提前注册)或组件本身是一个 SVG Vue 组件。 Element Plus 提供了一组图标,您可以在 icon component 查看。

使用 inactive-iconactive-icon 属性来添加图标。 使用 inline-prompt 属性来控制图标显示在点内。

Switch 开关 - 图4

  1. <template>
  2. <el-switch v-model="value1" :active-icon="Check" :inactive-icon="Close" />
  3. <br />
  4. <el-switch
  5. v-model="value2"
  6. class="mt-2"
  7. style="margin-left: 24px"
  8. inline-prompt
  9. :active-icon="Check"
  10. :inactive-icon="Close"
  11. />
  12. </template>
  13. <script setup lang="ts">
  14. import { ref } from 'vue'
  15. import { Check, Close } from '@element-plus/icons-vue'
  16. const value1 = ref(true)
  17. const value2 = ref(true)
  18. </script>

扩展的 value 类型

你可以设置 active-valueinactive-value 属性, 它们接受 BooleanStringNumber 类型的值。

Switch 开关 - 图5

  1. <template>
  2. <el-tooltip :content="'Switch value: ' + value" placement="top">
  3. <el-switch
  4. v-model="value"
  5. style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949"
  6. active-value="100"
  7. inactive-value="0"
  8. />
  9. </el-tooltip>
  10. </template>
  11. <script lang="ts" setup>
  12. import { ref } from 'vue'
  13. const value = ref('100')
  14. </script>

禁用状态

设置disabled属性,接受一个Boolean,设置true即可禁用。

Switch 开关 - 图6

  1. <template>
  2. <el-switch v-model="value1" disabled />
  3. <el-switch v-model="value2" class="ml-2" />
  4. </template>
  5. <script lang="ts" setup>
  6. import { ref } from 'vue'
  7. const value1 = ref(true)
  8. const value2 = ref(true)
  9. </script>

加载状态

设置loading属性,接受一个Boolean,设置true即加载中状态。

Switch 开关 - 图7

  1. <template>
  2. <el-switch v-model="value1" loading />
  3. <el-switch v-model="value2" loading class="ml-2" />
  4. </template>
  5. <script lang="ts" setup>
  6. import { ref } from 'vue'
  7. const value1 = ref(true)
  8. const value2 = ref(false)
  9. </script>

阻止切换

设置beforeChange属性,若返回 false 或者返回 Promise 且被 reject,则停止切换。

Switch 开关 - 图8

  1. <template>
  2. <el-switch
  3. v-model="value1"
  4. :loading="loading1"
  5. :before-change="beforeChange1"
  6. />
  7. <el-switch
  8. v-model="value2"
  9. class="ml-2"
  10. :loading="loading2"
  11. :before-change="beforeChange2"
  12. />
  13. </template>
  14. <script lang="ts" setup>
  15. import { ref } from 'vue'
  16. import { ElMessage } from 'element-plus'
  17. const value1 = ref(false)
  18. const value2 = ref(false)
  19. const loading1 = ref(false)
  20. const loading2 = ref(false)
  21. const beforeChange1 = () => {
  22. loading1.value = true
  23. return new Promise((resolve) => {
  24. setTimeout(() => {
  25. loading1.value = false
  26. ElMessage.success('Switch success')
  27. return resolve(true)
  28. }, 1000)
  29. })
  30. }
  31. const beforeChange2 = () => {
  32. loading2.value = true
  33. return new Promise((_, reject) => {
  34. setTimeout(() => {
  35. loading2.value = false
  36. ElMessage.error('Switch failed')
  37. return reject(new Error('Error'))
  38. }, 1000)
  39. })
  40. }
  41. </script>

属性

属性说明类型可选值默认值
model-value / v-model绑定值,必须等于 active-valueinactive-value,默认为 Boolean 类型boolean / string / number
disabled是否禁用booleanfalse
loading是否显示加载中booleanfalse
sizeswitch 的大小stringlarge / default / smalldefault
widthswitch 的宽度number / string
inline-prompt无论图标或文本是否显示在点内,只会呈现文本的第一个字符booleanfalse
active-iconswitch 状态为 on 时所显示图标,设置此项会忽略 active-textstring | Component
inactive-iconswitch 状态为 off 时所显示图标,设置此项会忽略 inactive-textstring | Component
active-textswitch 打开时的文字描述string
inactive-textswitch 的状态为 off 时的文字描述string
active-valueswitch 状态为 on 时的值boolean / string / numbertrue
inactive-valueswitch的状态为 off 时的值boolean / string / numberfalse
active-color当在 on 状态时的背景颜色(已废弃,请使用 CSS var —el-switch-on-color )string
inactive-coloroff 状态时的背景颜色(已废弃,使用 CSS var —el-switch-of-color )string
border-color开关的边框颜色 ( 已废弃,使用 CSS var —el-switch-border-color )string
nameswitch 对应的 name 属性string
validate-event改变 switch 状态时是否触发表单的校验booleantrue
before-changeswitch 状态改变前的钩子, 返回 false 或者返回 Promise 且被 reject 则停止切换() => Promise<boolean> | boolean

事件

事件名说明回调参数
changeswitch 状态发生变化时的回调函数val,新状态的值

方法

方法说明参数
focus使 Switch 获取焦点

源代码

组件 Switch 开关 - 图9 文档 Switch 开关 - 图10

贡献者

Switch 开关 - 图11 三咲智子

Switch 开关 - 图12 云游君

Switch 开关 - 图13 jeremywu

Switch 开关 - 图14 Aex

Switch 开关 - 图15 zz

Switch 开关 - 图16 LIUCHAO

Switch 开关 - 图17 Delyan Haralanov

Switch 开关 - 图18 kooriookami

Switch 开关 - 图19 C.Y.Kun

Switch 开关 - 图20 Xc

Switch 开关 - 图21 Carter Li

Switch 开关 - 图22 류한경

Switch 开关 - 图23 opengraphica

Switch 开关 - 图24 joson

Switch 开关 - 图25 Herrington Darkholme

Switch 开关 - 图26 Alan Wang

Switch 开关 - 图27 啝裳

Switch 开关 - 图28 deepthan

Switch 开关 - 图29 Sleepy Five

Switch 开关 - 图30 on the field of hope

Switch 开关 - 图31 Weiqi Wu

Switch 开关 - 图32 zazzaz

Switch 开关 - 图33 Ther-su

Switch 开关 - 图34 Hades-li

Switch 开关 - 图35 0song