컴포넌트로 돌아가기
Custom scrollbar styling component with multiple variants. Supports auto-hide, smooth scrolling, and orientation control.
설치
bash
npm install @hua-labs/huaImport
tsx
import { Scrollbar } from "@hua-labs/hua";@hua-labs/ui의 UI 컴포넌트를 @hua-labs/hua에서 통합 제공합니다.
UI 컴포넌트, 모션 훅, i18n을 하나의 패키지로 사용할 수 있습니다.
라이브 데모
변형
default / glass / minimal / neon
default
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
glass
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
minimal
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
neon
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 9
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 10
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 11
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 12
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 13
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 14
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 15
Lorem ipsum dolor sit amet consectetur adipisicing elit.
크기
sm / md / lg / xl
sm
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
md
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
lg
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
xl
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Orientation
vertical / horizontal / both
vertical
Item 1
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 2
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 3
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 4
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 5
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 6
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 7
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Item 8
Lorem ipsum dolor sit amet consectetur adipisicing elit.
horizontal
Item 1
Item 2
Item 3
Item 4
Item 5
Item 6
Item 7
Item 8
Item 9
Item 10
both
1-1
1-2
1-3
1-4
1-5
2-1
2-2
2-3
2-4
2-5
3-1
3-2
3-3
3-4
3-5
4-1
4-2
4-3
4-4
4-5
5-1
5-2
5-3
5-4
5-5
6-1
6-2
6-3
6-4
6-5
7-1
7-2
7-3
7-4
7-5
8-1
8-2
8-3
8-4
8-5
Props
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
variant | "default" | "glass" | "colorful" | "minimal" | "neon" | "default" | 스크롤바 시각적 스타일 |
size | "sm" | "md" | "lg" | "xl" | "md" | 스크롤바 thumb 너비 |
orientation | "vertical" | "horizontal" | "both" | "both" | 스크롤 방향 |
autoHide | boolean | true | 스크롤하지 않을 때 스크롤바 자동 숨김 |
smooth | boolean | true | 부드러운 스크롤 동작 활성화 |
children* | ReactNode | - | 스크롤 가능한 콘텐츠 |
코드 예시
기본 사용법
tsx
import { Scrollbar } from '@hua-labs/ui';
export function BasicScrollbar() {
return (
<Scrollbar className="h-48">
<div className="p-4 space-y-4">
{Array.from({ length: 20 }).map((_, i) => (
<p key={i}>Scrollable content item {i + 1}</p>
))}
</div>
</Scrollbar>
);
}변형
tsx
import { Scrollbar } from '@hua-labs/ui';
export function ScrollbarVariants() {
return (
<div className="grid grid-cols-2 gap-4">
<Scrollbar variant="default" className="h-32 border rounded">
<div className="p-4">Default variant</div>
</Scrollbar>
<Scrollbar variant="glass" className="h-32 border rounded">
<div className="p-4">Glass variant</div>
</Scrollbar>
<Scrollbar variant="minimal" className="h-32 border rounded">
<div className="p-4">Minimal variant</div>
</Scrollbar>
<Scrollbar variant="neon" className="h-32 border rounded">
<div className="p-4">Neon variant</div>
</Scrollbar>
</div>
);
}크기
tsx
import { Scrollbar } from '@hua-labs/ui';
export function ScrollbarSizes() {
return (
<div className="grid grid-cols-4 gap-4">
<Scrollbar size="sm" className="h-32 border rounded">
<div className="p-4">Small</div>
</Scrollbar>
<Scrollbar size="md" className="h-32 border rounded">
<div className="p-4">Medium</div>
</Scrollbar>
<Scrollbar size="lg" className="h-32 border rounded">
<div className="p-4">Large</div>
</Scrollbar>
<Scrollbar size="xl" className="h-32 border rounded">
<div className="p-4">XL</div>
</Scrollbar>
</div>
);
}접근성
- •키보드: 화살표 키, Page Up/Down, Home/End로 표준 키보드 스크롤 지원
- •포커스: 키보드 사용자를 위해 스크롤 영역이 포커스 가능
- •부드러운 스크롤: 모션을 줄이길 선호하는 사용자를 위해 prefers-reduced-motion을 준수