## スライダー

一定の範囲内でスライダーをドラッグします。

### 基本的な使い方

スライダーをドラッグしているときに現在の値が表示されます。

:::demo バインド値を設定してスライダーの初期値をカスタマイズします。

```html
<template>
  <div class="block">
    <span class="demonstration">Default value</span>
    <el-slider v-model="value1"></el-slider>
  </div>
  <div class="block">
    <span class="demonstration">Customized initial value</span>
    <el-slider v-model="value2"></el-slider>
  </div>
  <div class="block">
    <span class="demonstration">Hide Tooltip</span>
    <el-slider v-model="value3" :show-tooltip="false"></el-slider>
  </div>
  <div class="block">
    <span class="demonstration">Format Tooltip</span>
    <el-slider v-model="value4" :format-tooltip="formatTooltip"></el-slider>
  </div>
  <div class="block">
    <span class="demonstration">Disabled</span>
    <el-slider v-model="value5" disabled></el-slider>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value1: 0,
        value2: 50,
        value3: 36,
        value4: 48,
        value5: 42,
      }
    },
    methods: {
      formatTooltip(val) {
        return val / 100
      },
    },
  }
</script>
```

:::

### 離散値

オプションは離散的にすることができます。

:::demo `step` 属性でステップサイズを設定する。`show-stop` 属性を設定することでブレークポイントを表示することができる。

```html
<template>
  <div class="block">
    <span class="demonstration">Breakpoints not displayed</span>
    <el-slider v-model="value1" :step="10"> </el-slider>
  </div>
  <div class="block">
    <span class="demonstration">Breakpoints displayed</span>
    <el-slider v-model="value2" :step="10" show-stops> </el-slider>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value1: 0,
        value2: 0,
      }
    },
  }
</script>
```

:::

### インプットボックス付きスライダー

インプットボックスから値を設定します。

:::demo 右側にインプットボックスを表示するために `show-input` 属性を設定する。

```html
<template>
  <div class="block">
    <el-slider v-model="value" show-input> </el-slider>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: 0,
      }
    },
  }
</script>
```

:::

### 範囲の選択

値の範囲の選択に対応しています。

:::demo `range`属性を設定すると、範囲モードが有効になり、バインディング値は 2 つの境界値からなる配列となります。

```html
<template>
  <div class="block">
    <el-slider v-model="value" range show-stops :max="10"> </el-slider>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: [4, 8],
      }
    },
  }
</script>
```

:::

### 垂直モード

:::demo `vertical` 属性を `true` に設定すると、垂直モードが有効になる。垂直モードでは `height` 属性が必要である。

```html
<template>
  <div class="block">
    <el-slider v-model="value" vertical height="200px"> </el-slider>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: 0,
      }
    },
  }
</script>
```

:::

### マークを表示

:::demo この `marks` 属性を設定すると、スライダーにマークを表示することができる。

```html
<template>
  <div class="block">
    <el-slider v-model="value" range :marks="marks"> </el-slider>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: [30, 60],
        marks: {
          0: '0°C',
          8: '8°C',
          37: '37°C',
          50: {
            style: {
              color: '#1989FA',
            },
            label: '50%',
          },
        },
      }
    },
  }
</script>
```

:::

## 属性

| Attribute             | Description                                                                                                  | Type            | Accepted Values               | Default |
| --------------------- | ------------------------------------------------------------------------------------------------------------ | --------------- | ----------------------------- | ------- |
| model-value / v-model | バインディング値                                                                                             | number          | —                             | 0       |
| min                   | 最小値                                                                                                       | number          | —                             | 0       |
| max                   | 最大値                                                                                                       | number          | —                             | 100     |
| disabled              | スライダーが無効になっているかどうか                                                                         | boolean         | —                             | false   |
| step                  | ステップサイズ                                                                                               | number          | —                             | 1       |
| show-input            | whether to display an input box, works when `range` is false                                                 | boolean         | —                             | false   |
| show-input-controls   | 入力ボックスを表示するかどうか、`range` が false のときに動作します。                                        | boolean         | —                             | true    |
| input-size            | インプットボックスのサイズ                                                                                   | string          | large / medium / small / mini | small   |
| show-stops            | ブレークポイントを表示するかどうか                                                                           | boolean         | —                             | false   |
| show-tooltip          | ツールチップの値を表示するかどうか                                                                           | boolean         | —                             | true    |
| format-tooltip        | ツールチップの値を表示するためのフォーマット                                                                 | function(value) | —                             | —       |
| range                 | 範囲セレクトするかどうか                                                                                     | boolean         | —                             | false   |
| vertical              | 垂直モード                                                                                                   | boolean         | —                             | false   |
| height                | スライダーの高さ、垂直モードで必要                                                                           | string          | —                             | —       |
| label                 | スクリーンリーダー用ラベル                                                                                   | string          | —                             | —       |
| debounce              | タイプ時のデバウンス遅延をミリ秒単位で指定する。`show-input` が true のときに動作します。                    | number          | —                             | 300     |
| tooltip-class         | ツールチップのカスタムクラス名                                                                               | string          | —                             | —       |
| marks                 | マークは，キーの種類は数字で，閉じた間隔[min, max]でなければなりません。マークはスタイルをカスタム出来ます。 | object          | —                             | —       |

## イベント

| Event Name | Description                                                                                                                | Parameters           |
| ---------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------- |
| change     | 値が変更されたときにトリガされます（マウスがドラッグされている場合、このイベントはマウスが離されたときにのみ発生します）。 | value after changing |
| input      | データが変化した時にトリガーする(スライド中にリアルタイムでエミットされる)                                                 | value after changing |
