UI 组件 · 表单输入
开关
Switch
也叫:开关按钮、切换开关、Toggle、拨动开关
像电灯开关一样的滑动小控件,表示某个功能开启或关闭,拨动后通常立即生效。
点「标注」看每个部分叫什么。
怎么跟 AI 说
改成你的业务内容再发设置页每一行左边是设置名称和一行灰色说明,右边是开关,比如「接收邮件通知」。打开时轨道为深色、滑块在右,关闭时轨道浅灰、滑块在左;拨动后立即调用接口保存,请求中滑块显示转圈,失败则弹回原状态并用轻提示报错。
发给
01判断
你的内容是这样吗?
对照两列,确认开关是不是你要找的。
02避坑
常见坏用法
看起来能用,其实会给用户添麻烦。
- 01
放在需要点保存的表单里,用户拨动后以为已经生效,没保存就离开了
- 02
开和关两种状态颜色差别太小,看不出当前是开还是关
- 03
旁边文字写成「开启通知」这种动作描述,用户分不清现在到底是开还是关
03识别
怎么认出它
先看整体结构,再对照几个一眼能认出的特征。
结构
由胶囊形轨道和可左右滑动的圆形滑块组成,旁边通常有设置名称,有的设计在轨道内显示开、关文字。
组成部分点一下,在上面的线框里标出来
识别特征
- 1胶囊形的小轨道,里面有一个圆形滑块
- 2滑块在右侧且轨道有填充色表示开,在左侧且轨道灰色表示关
- 3常出现在设置列表每一行的最右侧
04解释
详细解释
开关是一个胶囊形轨道加一个圆形滑块:滑块在右边、轨道填色表示开,滑块在左边、轨道变灰表示关。它只有两种状态,而且和现实中的电灯开关一样,拨动后设置马上生效,不需要再点保存,比如「消息通知」「深色模式」「自动续费」。
它和 复选框 的区别主要在生效时机:开关立即生效,复选框通常在表单里等提交后才生效,所以需要点保存的表单里,「是否同意」这类项用复选框更合适。和 单选框 相比,开关只能表达开和关,不能表达三种以上的选择。切换需要请求服务器时,滑块上要显示加载中,失败了要自动弹回原状态并提示。
开发者信息术语 ID、DOM 线索、识别优先级
- 术语 ID
component-switch- DOM 选择器
插件在本地识别时匹配这些 CSS 选择器(标签、ARIA role、常见组件库 class)。
[role="switch"].ant-switch.el-switch[class*="MuiSwitch-root"].arco-switch.t-switch.n-switch[data-slot="switch"].form-switchlabel.switch.switch:has(input[type="checkbox"]).toggle:has(> input[type="checkbox"]).toggle-switchlabel:has(> input[type="checkbox"] + .slider)
- 类名关键词
类名、id、data-testid 拆成单词后连续匹配,例如 page-header、PageHeader_root__x7a、pageHeader 都拆成 page、header。
switchtoggle-switchswitch-toggle
- 组件名
React / Vue 开发模式下读到的组件名,不区分大小写,会去掉 El、Ant、Mui 这类组件库前缀。
SwitchToggle
- 优先级
- 1 · 同一层有多条命中时,优先级高的胜出
- 版本
- v2 · 更新于 2026/09/30