跳到正文
GitHub

容器

ScrollArea

一个会滚动的盒子,滚动条在哪都长一样。

什么时候用它

有边界的面板——很长的选项列表、一段日志。页面级或正文滚动用 scroll-slim 工具类更轻,也不需要组件。

示例

default

  • 1a2b3c4deployed
  • 1a2d2b3deployed
  • 1a2f1a2deployed
  • 1a31091rolled back
  • 1a32f80deployed
  • 1a34e6fdeployed
  • 1a36d5edeployed
  • 1a38c4ddeployed
  • 1a3ab3crolled back
  • 1a3ca2bdeployed
  • 1a3e91adeployed
  • 1a40809deployed
  • 1a426f8deployed
  • 1a445e7rolled back
  • 1a464d6deployed
  • 1a483c5deployed
  • 1a4a2b4deployed
  • 1a4c1a3deployed

说明

一个会滚动的盒子,滚动条在每个平台上长得一样。

选它而不选 overflow-auto 的理由不是那根滚动条——而是 Radix 让视口可聚焦、让滚动条可操作,光秃秃的 overflow 容器做不到。一个内容本身不可聚焦的滚动区域,键盘是够不着的:没有东西可以 Tab 过去,于是没有鼠标时,折线以下的一切都不存在。

页面级或正文的滚动用 scroll-slim 工具类更轻,也不需要组件。这个是给有边界的面板用的:很长的选项列表、一段日志、一条长过自己那一栏的侧栏。

属性

ScrollArea props
属性类型默认值说明
label必填string给这个区域命名。必填,而且不是装饰:滚动容器是一个键盘停靠点,而一个没有名字的停靠点只会被念成“分组”,别的什么都没有。
orientation'vertical' | 'horizontal' | 'both''vertical'

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

键盘操作

ScrollArea keyboard interactions
按键作用
Tab把焦点移进这个区域——没有鼠标时,这一步才让它能滚。
Page UpPage Down滚动它。

无障碍

  • 视口保持可聚焦。一个内容本身不可聚焦的滚动区域没有 Tab 停靠点,折线之外的一切对没有鼠标的人等于不存在。
  • label 必填,因为一个没有名字的键盘停靠点只会播报“group”。