Scroll Area
Scroll Area
네이티브 스크롤 기능을 보강해 커스텀·크로스 브라우저 스타일링을 지원하는 컴포넌트예요.
출처: 문서
본문
스크롤 영역을 감싸서 커스텀 스크롤바를 만들 수 있게 해 주는 컴포넌트예요. 스크롤바가 콘텐츠 위에 떠서 공간을 차지하지 않고, 스크롤 자체는 네이티브로 동작하며 키보드 스크롤 같은 접근성 기능을 유지해요.
Features
- 스크롤바가 스크롤 가능한 콘텐츠 위에 떠서 공간을 차지하지 않아요.
- 스크롤은 네이티브; CSS 변환으로 기본 위치를 움직이지 않아요.
- 컨트롤과 상호작용할 때만 포인터 동작을 셔밍(보정)해서 키보드 컨트롤에 영향이 없어요.
- 오른쪽에서 왼쪽(RTL) 방향 지원.
Anatomy
모든 파트를 임포트해 조립해요.
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 Reference
Root
스크롤 영역의 모든 파트를 담아요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
type |
enum |
"hover" |
scrollHideDelay |
number |
600 |
dir |
enum |
No default value |
nonce |
string |
No default value |
Viewport
스크롤 영역의 뷰포트 영역이에요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
Scrollbar
세로 스크롤바예요. orientation prop을 가진 두 번째 Scrollbar를 추가하면 가로 스크롤을 켤 수 있어요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
forceMount |
boolean |
No default value |
orientation |
enum |
vertical |
| Data attribute | Values |
|---|---|
[data-state] |
"visible" | "hidden" |
[data-orientation] |
"vertical" | "horizontal" |
Thumb
ScrollArea.Scrollbar에 사용할 썸(thumb)이에요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
| Data attribute | Values |
|---|---|
[data-state] |
"visible" | "hidden" |
Corner
세로/가로 스크롤바가 만나는 모서리예요.
| Prop | Type | Default |
|---|---|---|
asChild |
boolean |
false |
Accessibility
대부분의 경우 네이티브 스크롤을 사용하고 CSS에서 제공되는 커스터마이즈 옵션에 의존하는 것이 가장 좋아요. 그것만으로 충분하지 않을 때 ScrollArea는 브라우저의 네이티브 스크롤 동작(그리고 키보드 스크롤 같은 접근성 기능)을 유지하면서 추가적인 커스터마이즈를 제공해요.
키보드 상호작용
컴포넌트가 네이티브 스크롤에 의존하므로 키보드 스크롤이 기본적으로 지원돼요. 특정 키보드 상호작용은 플랫폼마다 다를 수 있어 여기에서 명시하지 않고, 키 이벤트로 스크롤을 처리하는 특정 이벤트 리스너도 추가하지 않아요.
더 알아보기 (Learn more)
type="hover"가 기본이라 호버/스크롤 시에만 스크롤바가 보이고scrollHideDelay로 숨김 지연을 조절할 수 있어요.- Select 같은 다른 primitive 안에서 커스텀 스크롤바를 조합할 때도 사용할 수 있어요.