# Slider スライダー
スライダー入力です。min/max/step、range の双方向スライダー、marks 目盛りラベル、showInput の数値表示、三段階のサイズと無効化をサポートし、マウスのドラッグとタッチ操作に対応します。
スライダー
<template>
<div class="demo-col" style="max-width: 520px; gap: 26px">
<div>
<LhSlider v-model="single" :min="0" :max="100" :step="5" show-input />
<p class="demo-note">min=0 max=100 step=5 showInput:{{ single }}</p>
</div>
<div>
<LhSlider v-model="ranged" range :min="10" :max="90" :step="10" />
<p class="demo-note">range の双方向スライダー:{{ JSON.stringify(ranged) }}</p>
</div>
<div>
<LhSlider v-model="marked" :min="0" :max="100" :marks="marks" />
<p class="demo-note">marks 目盛りラベル:{{ marked }}</p>
</div>
<div>
<LhSlider v-model="single" size="small" />
<LhSlider v-model="single" disabled />
<p class="demo-note">size="small" と disabled</p>
</div>
</div>
</template>
<script>
export default {
data: () => ({
single: 35,
ranged: [20, 60],
marked: 40,
marks: { 0: '書き始め', 50: '筆を運ぶ', 100: '書き収め' },
}),
}
</script>
# Props
| プロパティ | 説明 | 型 | デフォルト値 |
|---|---|---|---|
| v-model | バインド値。range の場合は [start, end](model: modelValue/input) | number \| [number, number] \| null | — |
| min | 最小値 | number | 0 |
| max | 最大値 | number | 100 |
| step | ステップ値 | number | 1 |
| range | 双方向スライダーモード | boolean | false |
| marks | 目盛りラベル { value: label } | Record<number, string> | — |
| showInput | 数値テキストを表示 | boolean | false |
| size | サイズ(トラックの高さ) | 'small' \| 'medium' \| 'large' | 'medium' |
| disabled | 無効 | boolean | false |
| sx | sx によるレイアウト省略記法 | — | — |
# Events
| イベント | 説明 | コールバックパラメータ |
|---|---|---|
| input | v-model のイベント | (val) |
| change | 値が変化したときに発火 | (val) |
# アクセシビリティ
スライダーのハンドルは role="slider" + aria-valuemin/max/now です。LhFormItem 内でバリデーションに失敗した場合、aria-invalid が付与されます。
Copyright © 2024-2026 FengMo WenXue