Slider
사용자가 특정 범위 내에서 값을 선택할 수 있게 해주는 수평 또는 수직 슬라이 더 컴포넌트입니다. 슬라이더는 사용자가 볼륨, 밝기, 필터 등 숫자 값을 직관적으로 조절할 수 있게 해줍니다.
기본 사용법
Slider 컴포넌트를 사용하여 기본 슬라이더를 만들 수 있습니다. defaultValue 속성을 사용하여 초기값을 설정할 수 있습니다.
import { Slider } from '@site/src/mock-components';
function Example() {
return <Slider defaultValue={30} />;
}
수직 슬라이더
orientation 속성을 "vertical"로 설정하여 수직 슬라이더를 만들 수 있습니다. 이때 컨테이너에 높이를 지정해주어야 합니다.
import { Slider } from '@site/src/mock-components';
function VerticalExample() {
return (
<div style={{ height: '200px' }}>
<Slider orientation="vertical" defaultValue={50} />
</div>
);
}
커스텀 범위 및 단계
min, max 속성으로 범위를 설정하고 step 속성으로 단계를 설정할 수 있습니다.
import { Slider } from '@site/src/mock-components';
function CustomRangeExample() {
return (
<>
{/* 음수 범위 */}
<Slider
min={-50}
max={50}
defaultValue={0}
/>
{/* 단계 설정 */}
<Slider
min={0}
max={100}
step={10}
defaultValue={30}
/>
{/* 작은 소수점 단계 */}
<Slider
min={0}
max={1}
step={0.01}
defaultValue={0.5}
/>
</>
);
}
제어 컴포넌트로 사용
제어 컴포넌트로 사용하면 슬라이더의 값을 직접 제어할 수 있습니다. 이는 다음과 같은 상황에서 유용합니다:
- 슬라이더 값을 외부 상태와 동기화해야 할 때
- 값 변경에 따른 추가 로직을 실행해야 할 때
- 다른 UI 요소와 값을 연동해야 할 때
- 폼 제출 시 현재 값을 쉽게 접근해야 할 때
import { useState } from 'react';
import { Slider, Button } from '@site/src/mock-components';
function ControlledExample() {
const [sliderValue, setSliderValue] = useState(50);
return (
<div>
<Slider
value={sliderValue}
onChange={setSliderValue}
/>
<div style={{ marginTop: '1rem' }}>
<Button onClick={() => setSliderValue(0)}>초기화</Button>
</div>
</div>
);
}
스타일 커스터마이징
Slider 컴포넌트는 다양한 스타일 옵션을 제공 합니다:
import { Slider } from '@site/src/mock-components';
function StyleExample() {
return (
<>
{/* 크기 변경 */}
<Slider size="sm" defaultValue={30} />
<Slider size="md" defaultValue={50} />
<Slider size="lg" defaultValue={70} />
{/* 색상 변경 */}
<Slider colorScheme="primary" defaultValue={60} />
<Slider colorScheme="secondary" defaultValue={40} />
<Slider colorScheme="success" defaultValue={80} />
{/* 비활성화 상태 */}
<Slider disabled defaultValue={20} />
</>
);
}
접근성
Slider 컴포넌트는 다음과 같은 접근성 기능을 지원합니다:
- 키보드 탐색: 방향키를 사용하여 값을 조절할 수 있습니다
- ARIA 속성: 적절한 aria-label과 role 속성이 적용되어 있습니다
- 고대비 테마: 시각적으로 구분하기 쉬운 디자인을 제공합니다
import { Slider } from '@site/src/mock-components';
function AccessibleExample() {
return (
<>
<label id="volume-label">음량</label>
<Slider
aria-labelledby="volume-label"
defaultValue={70}
/>
<Slider
aria-label="밝기 조절"
defaultValue={50}
/>
</>
);
}
속성
속성 | 타입 | 기본값 | 설명 |
---|---|---|---|
value | number | - | 슬라이더의 현재 값 (제어 컴포넌트로 사용 시) |
defaultValue | number | 50 | 기본 슬라이더 값 (비제어 컴포넌트로 사용 시) |
min | number | 0 | 최소값 |
max | number | 100 | 최대값 |
step | number | 1 | 단계 값 |
onChange | (value: number) => void | - | 값이 변경될 때 호출되는 함수 |
disabled | boolean | false | 비활성화 여부 |
orientation | 'horizontal' | 'vertical' | 'horizontal' | 슬라이더의 방향 |
size | 'sm' | 'md' | 'lg' | 'md' | 슬라이더의 크기 |
colorScheme | 'primary' | 'secondary' | 'success' | 'primary' | 슬라이더의 색상 테마 |
aria-label | string | - | 스크린 리더를 위한 레이블 |
aria-labelledby | string | - | 스크린 리더를 위한 레이블 요소의 ID |