跳到正文
GitHub

表单

ToggleGroup

分段控件:若干选项,一条。

什么时候用它

它改的是一个值。切换面板的是 Tabs。

示例

default

single — one of these

multiple — any of these

说明

一个分段控件:若干选项,一条。

type="single" 是一次选择——Radix 给它单选语义,视图切换器或密度设置就该是这个形状。type="multiple" 是一组互相独立的开关,那是另一回事,播报方式也不一样;选错了,一个“按标签筛选”的控件就会告诉读屏软件:选中一个标签会取消其他标签。

这两者刻意长得不一样。单值的一条会把一个填充药丸在选项之间移动,眼睛跟着一个在走的东西;多值的一条则各自填充每个按下的选项,因为没有一个“唯一选中”可以移动。两个人看同一张截图,应该能分辨出自己看的是哪一种,而在这之前他们分辨不出来。

Tabs 不同,那个切换的是面板,并且拥有 tabpanel 关系。切换组改变的是一个值。

属性

同时接受 ComponentProps<typeof ToggleGroupPrimitive.Root> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

组成部分

Composed at the call site rather than configured through props, so a layout this component did not anticipate is still expressible.

ToggleGroupItem

一段。

在单值组里,这一项自己不画背景——背后那个移动的药丸在画——所以它只改变墨色。在多值组里它自己填充,因为没有东西在移动。

同时接受 ComponentProps<typeof ToggleGroupPrimitive.Item> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。

键盘操作

ToggleGroup keyboard interactions
按键作用
Tab进入这一条——整组一个停靠点。
在各段之间移动。
EnterSpace切换当前聚焦的那一段。

无障碍

  • type="single" 有 radio 语义,type="multiple" 是彼此独立的开关。选错会告诉读屏用户:选中一个就会取消另一个。