Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

Slider

지정된 범위 안에서 하나 또는 두 개의 값을 선택해 입력할 수 있는 컴포넌트예요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/slider.json

Anatomy

Slider는 Track(Active, Inactive), Handle(Thumb), Steps(Tick Mark), Marker로 이뤄져 있어요. 핸들을 누르고 있는 Active 상태에서는 핸들 위에 현재 값을 보여주는 Value Indicator가 나타나요.

  • Track: 핸들이 움직이는 경로예요. 핸들이 지나온 구간은 Active Track, 나머지는 Inactive Track이에요.
  • Handle: 값을 조절하기 위해 누르고 드래그하는 컨트롤러예요.
  • Tick Mark: 트랙 위에 표시되는 눈금이에요.
  • Marker: 트랙 아래에 표시되는 값 라벨이에요.
  • Value Indicator (Optional): 핸들 위에 현재 값을 보여주는 툴팁이에요.

Properties

Value

Slider는 선택하는 Value에 따라 핸들 개수가 바뀌어요. defaultValues 또는 values 에 값을 하나 넘기면 Single, 두 개 넘기면 Range 슬라이더가 돼요.

Value 타입설명
Single하나의 값을 선택할 수 있어요.
Range두 개의 값을 선택할 수 있어요.

State

State설명
EnabledSlider가 작동할 준비가 된 표준 상태예요.
Active사용자가 핸들을 클릭(터치)하고 있거나 드래그하는 순간이에요. 핸들이 커지고 Value Indicator가 나타나요.
DisabledSlider가 화면에 보이지만 상호작용이 완전히 불가능한 상태예요.

Tick Mark

Tick Mark는 사용성에 따라 두 모드 중 하나를 사용할 수 있어요. ticks 에 눈금을 표시할 값을, tickWeight 에 두께를 지정해요.

  • 연속형(Continuous) 모드 — thin: 사용자가 값의 위치를 쉽게 파악할 수 있도록 참조점(Reference point)으로 눈금을 제공해요. step이 연속적이라고 느껴질 만큼 충분히 작을 때 사용해요.
  • 이산형(Discrete) 모드 — thick: 눈금이 사용자가 선택할 수 있는 유일한 값(Step)을 의미해요. 이를 시각적으로 보여줄 수 있도록 연속형보다 훨씬 두꺼운 눈금을 사용해요.

Tick Mark는 총 2~5개의 스텝을 표현할 수 있어요.

Markers

Markers는 Tick Mark의 정보를 전달해요. step에 맞게 개수를 설정할 수 있으며, 최솟값과 최댓값만 표시하는 경우 두 개로 표현해요. 최솟값과 최댓값 마커는 트랙 양 끝에 맞춰 정렬돼요.

주의

스크린 리더는 마커를 읽지 않아요. 특정 값을 선택했을 때 의미를 알려야 한다면 getAriaValuetext 로 현재 값을 설명하는 문구를 함께 제공해요.

Active Track

핸들이 시작점부터 현재 위치까지 지나온 경로를 보여주는 Active Track은 표시(Show)하거나 숨길(Hide) 수 있어요.

기본적으로 선택된 값의 크기나 진행 정도를 명확하게 전달할 수 있도록 Active Track이 보여요. 특정한 값 자체를 선택하는 것이 중요할 때는 hideRange 로 Active Track을 숨겨 선택된 값을 강조할 수 있어요.

Value Indicator

getValueIndicatorLabel 로 핸들 위에 표시되는 내용을 바꿀 수 있고, hideValueIndicator 로 숨길 수 있어요.

valueIndicatorTrigger 기본값은 "auto" 로, 마우스 환경에서는 핸들에 hover할 때, 터치 환경에서는 핸들을 누르고 있을 때 Value Indicator가 나타나요. "hover" 또는 "active" 로 고정할 수도 있어요. 키보드로 핸들에 포커스하면 설정과 관계없이 항상 표시돼요.

주의

Value Indicator는 스크린 리더가 읽지 않아요. 의미 있는 내용을 담는다면 getAriaValuetext 를 함께 사용해요.

Field

label, description, errorMessage, invalid 로 라벨과 설명, 오류 메시지를 함께 표시할 수 있어요.

Guidelines

Slider touch target

Touch Target설명
Handle(핸들)가장 기본이 되는 터치 대상이에요. 사용자가 값을 미세하게 조절하기 위해 누르고 드래그하는 주된 컨트롤러예요.
Track(트랙)핸들이 움직이는 트랙 전체도 터치 대상이에요. 트랙을 터치하면 Tap jump로 터치한 위치로 이동해요.

Drag

Slider에서는 다양한 행동으로 값을 선택할 수 있어요. 기본적으로 핸들을 드래그해서 값을 선택해요.

Tap jump

트랙의 원하는 지점을 탭하면 핸들이 해당 위치로 바로 이동하며 값이 선택돼요.

모드동작
연속적인 경우0부터 100까지의 Slider에서 트랙의 73% 지점을 클릭하면 핸들은 정확히 73으로 이동해요.
움직임이 제한적인 경우클릭한 위치에서 가장 가까운 단계(Step)로 자동 보정(반올림)되어 '스냅'돼요.

상황에 맞게 단계 제공하기

Slider는 기본적으로 연속적인(Continuous) 값을 다루지만, 선택해야 하는 값의 성격에 따라 의도적으로 움직임을 제한하는(Discrete) 단계를 제공할지 결정해야 해요.

모드설명사용 예시
연속적인 경우트랙 위를 부드럽게 움직이는 표준 Slider예요.볼륨, 밝기 등 주관적이고 연속적인 값
움직임이 제한적인 경우정해진 단위로만 늘고 줄며, 정해진 단계 밖의 값은 선택할 수 없어요.별점(1~5), 수량(10, 20, 30), 할인율(5% 단위)

합리적인 기본값 제공하기

합리적인 기본값(Reasonable Default)은 사용자가 페이지에 들어오거나 컴포넌트를 처음 마주했을 때 미리 설정돼 있는 초기값이에요. 추가 조작 없이도 가장 안전하거나, 가장 일반적이거나, 가장 권장되는 상태를 제공해 사용자의 수고를 덜고 실수를 막아요.

현재 값을 명확히 표시하기

현재 값을 명확히 보여주는 것은 시스템이 의도한 대로 작동하고 있음을 알리는 데 중요해요. Active 상태에서 현재 값을 보여주는 Value Indicator를 활용하는 것이 좋아요.

30,000원
Do· 단위가 있는 값은 단위와 함께

Value Indicator에 단위를 함께 보여주면 값을 바로 이해할 수 있어요.

30000
Don't· 의미를 알기 어려운 숫자

단위 없는 큰 숫자는 무엇을 뜻하는지 알기 어려워요.

Value Indicator 오버플로우 방지하기

핸들이 트랙 양 끝에 가까워지면 Value Indicator가 화면 밖으로 넘치지 않도록 Slider 좌우에 충분한 여백을 확보해요.

접근성

스크린 리더는 기본적으로 각 핸들이 가리키는 숫자 값을 읽어요. 숫자만으로 충분하지 않다면 getAriaValuetext 로 단위나 의미를 덧붙여요. label 이 없다면 getAriaLabel 또는 getAriaLabelledby 로 각 핸들의 이름을 제공하고, 특히 Range 슬라이더는 각 핸들의 역할(최소-최대, 시작-종료 등)을 구분해요.

Props

Prop

Type

On this page