Components

滚动区域

增强自定义跨浏览器样式的本地滚动功能。

import * as React from "react";
import { ScrollArea } from "radix-ui";
import "./styles.css";
const TAGS = Array.from({ length: 50 }).map(
(_, i, a) => `v1.2.0-beta.${a.length - i}`,
);
const ScrollAreaDemo = () => (
<ScrollArea.Root className="ScrollAreaRoot">
<ScrollArea.Viewport className="ScrollAreaViewport">
<div style={{ padding: "15px 20px" }}>
<div className="Text">Tags</div>
{TAGS.map((tag) => (
<div className="Tag" key={tag}>
{tag}
</div>
))}
</div>
</ScrollArea.Viewport>
<ScrollArea.Scrollbar className="ScrollAreaScrollbar" orientation="vertical" >
<ScrollArea.Thumb className="ScrollAreaThumb" />
</ScrollArea.Scrollbar>
<ScrollArea.Scrollbar className="ScrollAreaScrollbar" orientation="horizontal" >
<ScrollArea.Thumb className="ScrollAreaThumb" />
</ScrollArea.Scrollbar>
<ScrollArea.Corner className="ScrollAreaCorner" />
</ScrollArea.Root>
);
export default ScrollAreaDemo;

Features

    滚动条位于可滚动内容之上,不占用空间。

    滚动是原生的;没有通过 CSS 变换导致的底层位置移动。

    仅在与控件交互时调整指针行为,因此键盘控制不受影响。

    支持从右到左的方向。

安装

从命令行安装组件。

npm install @radix-ui/react-scroll-area

解剖结构

导入所有部分并组装在一起。

import { ScrollArea } from "radix-ui";
export default () => (
<ScrollArea.Root>
<ScrollArea.Viewport />
<ScrollArea.Scrollbar orientation="horizontal">
<ScrollArea.Thumb />
</ScrollArea.Scrollbar>
<ScrollArea.Scrollbar orientation="vertical">
<ScrollArea.Thumb />
</ScrollArea.Scrollbar>
<ScrollArea.Corner />
</ScrollArea.Root>
);

API 参考

包含滚动区域的所有部分。

PropTypeDefault
asChild
boolean
false
type
enum
"hover"
scrollHideDelay
number
600
dir
enum
No default value
nonce
string
No default value

视口

滚动区域的视口区域。

PropTypeDefault
asChild
boolean
false

滚动条

垂直滚动条。添加第二个 Scrollbar 并设置 orientation 属性以启用水平滚动。

PropTypeDefault
asChild
boolean
false
forceMount
boolean
No default value
orientation
enum
vertical
Data attributeValues
[data-state]"visible" | "hidden"
[data-orientation]"vertical" | "horizontal"

拇指

ScrollArea.Scrollbar 中使用的拇指。

PropTypeDefault
asChild
boolean
false
Data attributeValues
[data-state]"visible" | "hidden"

角落

垂直和水平滚动条交汇的角落。

PropTypeDefault
asChild
boolean
false

可访问性

在大多数情况下,最好依靠原生滚动并使用 CSS 中的自定义选项。当这些不足够时,ScrollArea 提供了额外的可定制性,同时保持浏览器的原生滚动行为(以及可访问性功能,如键盘滚动)。

键盘交互

通过键盘滚动默认受到支持,因为该组件依赖于原生滚动。特定的键盘交互可能因平台而异,因此我们在这里不具体说明它们或添加特定的事件监听器来处理键盘事件的滚动。