Switch 使用手册
v1.2.0 · @snowui-design-system/components
许可阅读:首次阅读组件文档、源码或 npm 使用流程,先读完整 LICENSE;同任务同版本去重。公开 API 配置与内部实现修改分别按许可处理;全部组件使用统一运行包,源码权益以许可为准。
组件介绍
在开启与关闭之间切换,适合需要即时生效的设置和功能开关。
使用选择
用于立即生效的二态设置。表单多选使用 Checkbox,互斥参数组使用 Radio 或 Segmented。
bind:checked 同步开关状态;value 只表示内部输入值,不决定开关状态。
当前 name / form 不转发给内部 input;需要原生表单提交时由表单层显式同步字段。提供可读标签。
快速开始
以下示例展示推荐的基本组合。更多场景与组合限制见后文。
API
未重新声明的继承能力请查所属基础组件文档;本表只列本组件源码具名公开属性。
使用边界与详细说明
布局模型
主布局模型:内联外壳布局。定义见 ../../../specs/maintainers/LayoutProtocol.md §12.4(源码参考:specs/maintainers/LayoutProtocol.md)。
Switch 属于“控件视觉体 + label”的内联外壳子类:
根节点保持
inline-flex,内容整体 Hug。.snowui-switch-track是固定 Hug 的控件视觉体。.snowui-switch-label是可选标签,空间充足时 Hug,受限时允许收缩并单行省略;原始内容及完整原生名称保留。track 与 label 的距离由
--snowui-switch-gap管理,可通过 gap 或--snowui-switch-gap-override设置首选值;有效间距至少 4 CSS px。size表示可见轨道高度;四边透明留白各为size / 14,控件占位高为size × 8 / 7、宽为size × (1.8 + 1 / 7)。例如size={28}轨道为 50.4×28px,四边各留 2px,占位为 54.4×32px。留白与 track / thumb 随 size、根字号和尺寸 Token 等比缩放,留白仍可点击;label 位于留白壳外。
使用示例
状态
unchecked: 未选中状态,灰色轨道
checked: 选中状态,主题色轨道
disabled: 禁用状态,降低透明度
无障碍性
使用原生
<input type="checkbox">确保键盘导航支持 Tab 键聚焦
支持 Space 键切换
禁用状态下
tabindex=-1
Switch 样式覆盖
先阅读 完整 LICENSE;同任务、同版本、同范围去重。
优先用组件公开 Props 匹配合适样式,尽可能保留原有视觉。确需改写时按 样式选择与改写顺序 使用自己的 class(含项目已有 Tailwind)或实例 style。以下名称来自源码实际消费的公开 override;先核对目标作用域,不修改私有 DOM。采用 SnowUI Token 时选择正确类别,外部应用不被要求安装一方 utilities。
Switch 类型与状态
必填属性:无具名必填属性。
可双向绑定:bind:checked。
继承声明:Omit<FrameProps, "size">。继承能力以基类公开文档为准;Omit 中的字段已排除,不能按基类原样使用。
以下为公开属性实际引用的类型声明,来自源码;Svelte Snippet 表示内容片段,ComponentProps 表示对应组件的 Props。
ResourceSize
来源:components/src/context.ts