Skip to content
Docs
컴포넌트로 돌아가기

ScrollArea

@hua-labs/ui
v1.0.0

커스텀 스크롤바를 가진 스크롤 영역 컴포넌트입니다. 호버 시 스크롤바를 표시하거나 항상 표시할 수 있습니다.

설치

bash
npm install @hua-labs/hua
Import
tsx
import { ScrollArea } from "@hua-labs/hua";

@hua-labs/ui의 UI 컴포넌트를 @hua-labs/hua에서 통합 제공합니다.

UI 컴포넌트, 모션 훅, i18n을 하나의 패키지로 사용할 수 있습니다.

라이브 데모

세로 스크롤 (기본)

Item 1 - 스크롤 영역 내의 콘텐츠입니다
Item 2 - 스크롤 영역 내의 콘텐츠입니다
Item 3 - 스크롤 영역 내의 콘텐츠입니다
Item 4 - 스크롤 영역 내의 콘텐츠입니다
Item 5 - 스크롤 영역 내의 콘텐츠입니다
Item 6 - 스크롤 영역 내의 콘텐츠입니다
Item 7 - 스크롤 영역 내의 콘텐츠입니다
Item 8 - 스크롤 영역 내의 콘텐츠입니다
Item 9 - 스크롤 영역 내의 콘텐츠입니다
Item 10 - 스크롤 영역 내의 콘텐츠입니다
Item 11 - 스크롤 영역 내의 콘텐츠입니다
Item 12 - 스크롤 영역 내의 콘텐츠입니다
Item 13 - 스크롤 영역 내의 콘텐츠입니다
Item 14 - 스크롤 영역 내의 콘텐츠입니다
Item 15 - 스크롤 영역 내의 콘텐츠입니다
Item 16 - 스크롤 영역 내의 콘텐츠입니다
Item 17 - 스크롤 영역 내의 콘텐츠입니다
Item 18 - 스크롤 영역 내의 콘텐츠입니다
Item 19 - 스크롤 영역 내의 콘텐츠입니다
Item 20 - 스크롤 영역 내의 콘텐츠입니다

가로 스크롤

Card 1
Card 2
Card 3
Card 4
Card 5
Card 6
Card 7
Card 8
Card 9
Card 10
Card 11
Card 12
Card 13
Card 14
Card 15

스크롤바 타입

Type: hover - Item 1
Type: hover - Item 2
Type: hover - Item 3
Type: hover - Item 4
Type: hover - Item 5
Type: hover - Item 6
Type: hover - Item 7
Type: hover - Item 8
Type: hover - Item 9
Type: hover - Item 10
Type: hover - Item 11
Type: hover - Item 12
Type: hover - Item 13
Type: hover - Item 14
Type: hover - Item 15

마우스 호버 시 스크롤바 표시

Props

이름타입기본값설명
orientation"vertical" | "horizontal" | "both""vertical"Scroll direction
type"auto" | "always" | "scroll" | "hover""hover"Scrollbar visibility behavior
scrollHideDelaynumber600스크롤바가 숨겨지기까지의 지연 시간 (ms)
classNamestring-추가 CSS 클래스
children*ReactNode-스크롤할 콘텐츠

타입 옵션

hover마우스 오버 시 스크롤바 표시 (기본값)
always스크롤바 항상 표시
auto콘텐츠가 넘칠 때만 스크롤바 표시
scroll스크롤 중에만 스크롤바 표시

코드 예시

기본 사용법tsx
1import { ScrollArea } from '@hua-labs/ui';
2 
3function Example() {
4 return (
5 <ScrollArea className="h-48 w-full rounded-md border p-4">
6 <div className="space-y-4">
7 {Array.from({ length: 20 }).map((_, i) => (
8 <div key={i} className="text-sm">
9 Item {i + 1} - Lorem ipsum dolor sit amet
10 </div>
11 ))}
12 </div>
13 </ScrollArea>
14 );
15}
가로 방향tsx
1<ScrollArea orientation="horizontal" className="w-full rounded-md border">
2 <div className="flex gap-4 p-4">
3 {Array.from({ length: 15 }).map((_, i) => (
4 <div
5 key={i}
6 className="w-32 h-24 shrink-0 rounded-md bg-primary/20 flex items-center justify-center"
7 >
8 Card {i + 1}
9 </div>
10 ))}
11 </div>
12</ScrollArea>
항상 표시tsx
1<ScrollArea type="always" className="h-48 w-full rounded-md border p-4">
2 <div className="space-y-4">
3 {Array.from({ length: 10 }).map((_, i) => (
4 <div key={i} className="text-sm">
5 Scrollbar is always visible - Item {i + 1}
6 </div>
7 ))}
8 </div>
9</ScrollArea>

관련 컴포넌트

  • ScrollBar - 커스텀 스크롤바 (고급 사용)

접근성

  • 키보드 탐색: 화살표 키 및 Page Up/Down으로 스크롤
  • 터치 지원: 모바일 기기에서 네이티브 터치 스크롤 지원
  • 포커스 관리: 포커스 가능한 콘텐츠가 스크롤 영역 안에서도 접근 가능