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

Scrollbar

@hua-labs/hua
v1.0.0

Custom scrollbar styling component with multiple variants. Supports auto-hide, smooth scrolling, and orientation control.

설치

bash
npm install @hua-labs/hua
Import
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"스크롤 방향
autoHidebooleantrue스크롤하지 않을 때 스크롤바 자동 숨김
smoothbooleantrue부드러운 스크롤 동작 활성화
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을 준수