Switch

开关选择器,表示两种互斥状态的即时切换,支持加载态与自定义文案。

设计文档

如何引入

import { Switch } from '@chenzy-design/svelte';

基本用法

通过 bind:value 双向绑定开关状态。

尺寸

提供 large / default / small 三种尺寸。

带文字

通过 checkedChildren / uncheckedChildren 显示开关文案。

状态

支持禁用与加载中状态。

加载中

loading 锁定交互并展示 spinner。

外部文本(推荐)

相比内嵌文字,更推荐将说明文本放在 Switch 外部。

已关闭

受控

value 完全受控,配合 onChange 使用。

API 参考

Switch

Props

属性说明类型默认值
value受控值;提供则为受控booleanundefined
defaultValue非受控初始值booleanfalse
checkedValue开态映射的实际值(onChange.nativeValue 与表单提交值)string | number | booleantrue
uncheckedValue关态映射的实际值string | number | booleanfalse
size'small'|'default'|'large'default
status'default'|'warning'|'error'default
disabledbooleanfalse
loadingbooleanfalse
checkedChildren开态内嵌文字/图标(size=small 时无效)string | Snippetundefined
uncheckedChildren关态内嵌文字/图标(size=small 时无效)string | Snippetundefined
checkedTextchecked 时显示的文字(checkedChildren 的字符串别名;size=small 时无效)stringundefined
uncheckedTextunchecked 时显示的文字(size=small 时无效)stringundefined
checkedContentchecked 时的 Snippet(checkedChildren 的 Snippet 别名;size=small 时无效)Snippetundefined
uncheckedContentunchecked 时的 Snippet(size=small 时无效)Snippetundefined
namestringundefined
required表单必填校验(须为开态)booleanfalse
ariaLabelstringundefined
ariaLabelledby关联外部可见文本 id(优先于 ariaLabel)stringundefined
announceOnChange切换后用 live region 播报新状态booleanfalse
autofocus挂载后自动聚焦booleanfalse
onChange(v: boolean, detail?: { value: boolean; nativeValue: string|number|boolean; event: Event }) => voidundefined
onFocus获得焦点(event: FocusEvent) => voidundefined
onBlur失去焦点(event: FocusEvent) => voidundefined
onKeydown键盘按下(自定义快捷键扩展)(event: KeyboardEvent) => voidundefined
onMouseEnter鼠标进入(e: MouseEvent) => voidundefined
onMouseLeave鼠标离开(e: MouseEvent) => voidundefined

Accessibility

ARIA roleswitch
键盘交互EnterSpace
  • 原生 button role=switch
  • aria-checked 反映状态
  • loading 时 aria-busy

设计变量

变量默认值用法
--cd-motion-switch-transitionduration var(--cd-motion-duration-mid)开关动画时长
--cd-switch-spinner-duration var(--cd-motion-duration-slow)加载 spinner 旋转时长(组件消费)
--cd-switch-transition-duration var(--cd-motion-switch-transitionduration)开关过渡动画时长(组件消费)
--cd-switch-transition-easing var(--cd-motion-ease-standard)开关过渡动画曲线(组件消费)