容器
ScrollArea
一个会滚动的盒子,滚动条在哪都长一样。
什么时候用它
有边界的面板——很长的选项列表、一段日志。页面级或正文滚动用 scroll-slim 工具类更轻,也不需要组件。
示例
default
说明
一个会滚动的盒子,滚动条在每个平台上长得一样。
选它而不选 overflow-auto 的理由不是那根滚动条——而是 Radix 让视口可聚焦、让滚动条可操作,光秃秃的 overflow 容器做不到。一个内容本身不可聚焦的滚动区域,键盘是够不着的:没有东西可以 Tab 过去,于是没有鼠标时,折线以下的一切都不存在。
页面级或正文的滚动用 scroll-slim 工具类更轻,也不需要组件。这个是给有边界的面板用的:很长的选项列表、一段日志、一条长过自己那一栏的侧栏。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| label必填 | string | 给这个区域命名。必填,而且不是装饰:滚动容器是一个键盘停靠点,而一个没有名字的停靠点只会被念成“分组”,别的什么都没有。 | |
| orientation | 'vertical' | 'horizontal' | 'both' | 'vertical' | — |
同时接受 ComponentProps<typeof ScrollAreaPrimitive.Root> 里的全部属性,它们会直接透传给底层元素,不再逐条列出。
键盘操作
| 按键 | 作用 |
|---|---|
| Tab | 把焦点移进这个区域——没有鼠标时,这一步才让它能滚。 |
| ↑↓Page UpPage Down | 滚动它。 |
无障碍
- 视口保持可聚焦。一个内容本身不可聚焦的滚动区域没有 Tab 停靠点,折线之外的一切对没有鼠标的人等于不存在。
- label 必填,因为一个没有名字的键盘停靠点只会播报“group”。