Slider

손잡이를 움직여 수치나 범위를 직관적으로 조절합니다.

Live preview
컴포넌트를 조작하면 여기에 결과가 표시됩니다.
코드 보기
HTML
<sy-slider
  value="40"
  min="0"
  max="100"
  step="5"
  showtooltip="always"
  label="값 조절"
  id="sample"
  style="width:100%"
></sy-slider>

사용 가이드

#

음량·밝기처럼 대략적인 값을 빠르게 조절할 때 사용합니다. 정확한 숫자를 입력해야 한다면 Input Number가 알맞습니다.

하나의 값

min·max로 범위를, step으로 이동 간격을 정합니다.

두 값 사이의 범위

range를 켜고 rangeValue에 두 값의 배열을 전달해 시작과 끝을 조절합니다.

예제

#

눈금과 지정값

marks로 눈금을 표시하고 snapToMarks로 지정한 위치에 맞춥니다.

코드 보기
HTML
<sy-slider
  value="25"
  snaptomarks
  showtooltip="always"
  label="온도"
  id="sample"
></sy-slider>

<script type="module">
  const component1 = document.querySelector("#sample");
  Object.assign(component1, {
    "marks": {
      "0": "낮음",
      "25": "보통",
      "50": "높음",
      "100": "최대"
    }
  });
</script>

범위 선택

두 손잡이를 각각 움직여 시작과 끝을 정합니다.

코드 보기
HTML
<sy-slider
  range
  showtooltip="always"
  label="가격 범위"
  id="sample"
></sy-slider>
<div class="demo-actions"
  style="display:flex;flex-wrap:wrap;gap:8px;margin-top:16px"
>
  <sy-button id="action-0" size="small">범위 읽기</sy-button>
</div>
<output id="demo-result" aria-live="polite"></output>

<script type="module">
  const describeResult = value => JSON.stringify(value, (_key, item) => {
    if (item instanceof File) return {
      name: item.name,
      size: item.size,
      type: item.type
    };
    if (item instanceof Element) return `<${item.localName}>`;
    return item;
  }) ?? '완료';
  const component1 = document.querySelector("#sample");
  Object.assign(component1, {
    "rangeValue": [
      20,
      80
    ]
  });
  const actionTarget0 = document.querySelector("#sample");
  document.querySelector('#action-0').addEventListener('click', async () => {
    const result = await actionTarget0.getValue();
    document.querySelector('#demo-result').textContent = describeResult(result);
  });
</script>

세로 방향

부모와 컴포넌트에 충분한 높이를 확보하세요.

코드 보기
HTML
<sy-slider
  vertical
  value="60"
  label="음량"
  showtooltip="always"
  tooltipplacement="right"
  style="height:160px"
></sy-slider>

비활성화

값을 보여주면서 조작을 제한합니다.

코드 보기
HTML
<sy-slider
  value="40"
  disabled
  label="잠긴 값"
></sy-slider>

이벤트와 전달 값

컴포넌트를 조작하고 최근 이벤트의 이름과 detail 값을 확인하세요. 코드에는 이 컴포넌트와 하위 구성 요소가 보내는 이벤트의 구독 방법이 모두 포함되어 있습니다.

코드 보기
HTML
<sy-slider
  value="40"
  min="0"
  max="100"
  step="5"
  showtooltip="always"
  label="값 조절"
  id="sample"
  style="width:100%"
></sy-slider>
<output id="demo-events" aria-live="polite">컴포넌트를 조작하면 최근 이벤트와 전달 값이 표시됩니다.
</output>

<script type="module">
  const describeResult = value => JSON.stringify(value, (_key, item) => {
    if (item instanceof File) return {
      name: item.name,
      size: item.size,
      type: item.type
    };
    if (item instanceof Element) return `<${item.localName}>`;
    return item;
  }) ?? '완료';
  for (const name of ["changed"]) {
    document.addEventListener(name, event => {
      document.querySelector('#demo-events').textContent =
        `${event.target.localName} · ${name}: ${describeResult(event.detail)}`;
    });
  }
</script>

눈금과 채움 표시

hideMarks는 눈금 문구를 숨기고 hideTrackFill은 선택 구간의 색 채움을 숨깁니다. 드래그와 키보드 값 조절은 유지됩니다.

코드 보기
HTML
<sy-slider
  value="40"
  min="0"
  max="100"
  step="5"
  showtooltip="always"
  hidemarks
  hidetrackfill
  label="값 조절"
  id="sample"
  style="width:100%"
></sy-slider>

<script type="module">
  const component1 = document.querySelector("#sample");
  Object.assign(component1, {
    "hideMarks": true,
    "hideTrackFill": true
  });
</script>

API reference

#

이름에 마우스를 올리거나 키보드로 선택하면 적용 코드를 확인할 수 있습니다. 터치 화면에서는 이름을 누르세요.

<sy-slider>

Properties

Attribute / PropertyTypeDefaultDescription
number0슬라이더의 최솟값입니다.
number100슬라이더의 최댓값입니다.
number1값을 증가·감소시키는 간격입니다.
number0현재 값 또는 항목의 식별 값입니다.
booleanfalse사용자 조작과 키보드 포커스를 차단합니다.
booleanfalse현재 값을 보여주면서 사용자 수정을 막습니다.
'default' | 'always' | 'never''default'default는 조작 중, always는 항상, never는 값을 표시하지 않습니다.
'top' | 'bottom' | 'right' | 'left''top'값 툴팁의 표시 방향입니다.
{ [key: number]: string }{}눈금 값과 표시 문구를 연결한 객체입니다.

객체·배열 값은 JavaScript 프로퍼티로 전달합니다.

booleanfalse눈금 문구를 숨깁니다.
booleanfalse두 손잡이로 범위를 선택합니다.
number[][]범위의 시작값과 끝값 배열입니다. range를 함께 지정해야 두 손잡이에 적용됩니다.

객체·배열 값은 JavaScript 프로퍼티로 전달합니다.

booleanfalse슬라이더 진행 방향을 반전합니다.
string''항목을 설명하는 레이블입니다.
booleanfalse선택 구간의 채움 색을 숨깁니다.
booleanfalse손잡이를 지정된 눈금 위치에 맞춥니다.
booleanfalse세로 방향으로 배치합니다.

Events

EventDetailDescription
CustomEvent<{ value?: number; min?: number; max?: number }>Fires whenever the slider value changes (drag, click, keyboard). detail = { value } for single mode, { min, max } for range mode.

Methods

MethodReturnsDescription
Promise<number | { min: number; max: number }>현재 값 또는 선택 범위를 반환합니다.