Skip to content

Slider スライダー - Vant 4

Slider スライダー

紹介

ドラッグ可能な入力バー。指定範囲の値を選択します。

導入

以下の方法でコンポーネントをグローバル登録します。詳細はコンポーネント登録を参照してください。

js
import { createApp } from'vue'; 
import { Slider } from'vant'; 
const app = createApp(); 
app.use(Slider);

🎯 コード例

🎪 基本用法

v-model で現在値をバインドし、ユーザーはスライダーをドラッグして値を選択できます。

html
<template>
  <van-slider v-model="value" @change="onChange" />
</template>

<script>
import { ref } from 'vue';
import { showToast } from 'vant';

export default {
  setup() {
    const value = ref(50);
    
    const onChange = (value) => {
      showToast(`現在の値:${value}`);
    };
    
    return {
      value,
      onChange,
    };
  },
};
</script>

🎭 デュアルスライダー

range 属性でデュアルスライダーを有効化します。value は配列である必要があり、範囲選択に適しています。

html
<template>
  <van-slider v-model="value" range @change="onChange" />
</template>

<script>
import { ref } from 'vue';
import { showToast } from 'vant';

export default {
  setup() {
    // デュアルスライダー時、値は配列である必要があります
    const value = ref([10, 50]);
    
    const onChange = (value) => {
      showToast(`現在の範囲:${value[0]} - ${value[1]}`);
    };
    
    return {
      value,
      onChange,
    };
  },
};
</script>

📏 選択範囲の指定

minmax 属性で最小値・最大値を設定します。

html
<template>
  <van-slider v-model="value" :min="-50" :max="50" />
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const value = ref(10);
    
    return {
      value,
    };
  },
};
</script>

🚫 無効化

disabled 属性でスライダーを無効化します。無効状態ではドラッグできません。

html
<template>
  <van-slider v-model="value" disabled />
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const value = ref(50);
    
    return {
      value,
    };
  },
};
</script>

📐 ステップの指定

step 属性でステップ幅を設定します。スライダーはステップの整数倍のみ選択可能です。

html
<template>
  <van-slider v-model="value" :step="10" />
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const value = ref(50);
    
    return {
      value,
    };
  },
};
</script>

🎨 スタイルのカスタマイズ

bar-height でバーの高さ、active-color でアクティブ色を設定します。

html
<template>
  <van-slider
    v-model="value"
    :bar-height="4"
    active-color="#ee0a24"
  />
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const value = ref(50);
    
    return {
      value,
    };
  },
};
</script>

🎛️ ボタンのカスタマイズ

button スロットでスライダーボタンのスタイルと内容をカスタマイズできます。

html
<template>
  <van-slider v-model="value">
    <template #button>
      <div class="custom-button">{{ value }}</div>
    </template>
  </van-slider>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const value = ref(50);
    
    return {
      value,
    };
  },
};
</script>

<style>
.custom-button {
  width: 26px;
  color: #fff;
  font-size: 10px;
  line-height: 18px;
  text-align: center;
  background-color: #ee0a24;
  border-radius: 100px;
}
</style>

📱 縦方向

vertical 属性で縦表示に切り替えます。高さは親要素の 100% になります。

html
<template>
  <div style="height: 150px; padding-left: 30px;">
    <van-slider v-model="value" vertical @change="onChange" />
    <van-slider
      v-model="value2"
      range
      vertical
      style="margin-left: 100px;"
      @change="onChange"
    />
  </div>
</template>

<script>
import { ref } from 'vue';
import { showToast } from 'vant';

export default {
  setup() {
    const value = ref(50);
    const value2 = ref([10, 50]);
    
    const onChange = (value) => {
      showToast(`現在の値:${value}`);
    };
    
    return {
      value,
      value2,
      onChange,
    };
  },
};
</script>

📋 API

🎛️ Props

属性名説明デフォルト
v-model📊 現在の進捗(デュアルでは配列)*number[number, number]*
max📈 最大値*numberstring*
min📉 最小値*numberstring*
step📐 ステップ*numberstring*
bar-height📏 バーの高さ(デフォルト単位は px*numberstring*
button-size📐 ボタンサイズ(デフォルト単位は px*numberstring*
active-color🎨 バーのアクティブ色string#1989fa
inactive-color🎨 バーの非アクティブ色string#e5e5e5
range🎭 デュアルスライダーを有効にするかbooleanfalse
reverse🔄 バーを反転表示するかbooleanfalse
disabled🚫 スライダーを無効化するかbooleanfalse
readonly👁️ 読み取り専用にするか(変更不可)booleanfalse
vertical📱 縦表示にするかbooleanfalse

🎪 Events

イベント名説明コールバック引数
update:model-value🔄 進捗が変化したときにリアルタイム発火value: number
change✅ 進捗が変化しドラッグ終了後に発火value: number
drag-start🚀 ドラッグ開始時に発火event: TouchEvent
drag-end🏁 ドラッグ終了時に発火event: TouchEvent

🎭 Slots

名称説明パラメータ
button🎛️ スライダーボタンのカスタマイズ{ value: number, dragging: boolean }
left-button⬅️ 左ボタンのカスタマイズ(デュアル時){ value: number, dragging: boolean, dragIndex?: number }
right-button➡️ 右ボタンのカスタマイズ(デュアル時){ value: number, dragging: boolean, dragIndex?: number }

📘 型定義

コンポーネントは以下の型定義をエクスポートし、TypeScript プロジェクトでの利用を容易にします:

ts
import type { SliderProps } from 'vant';

🎨 テーマカスタマイズ

🎭 スタイル変数

コンポーネントは以下の CSS 変数を提供しており、カスタムスタイルに使用できます。使用方法については ConfigProvider コンポーネント を参照してください。

名称デフォルト値説明
--van-slider-active-backgroundvar(--van-primary-color)🎨 アクティブ背景色
--van-slider-inactive-backgroundvar(--van-gray-3)🎨 非アクティブ背景色
--van-slider-disabled-opacityvar(--van-disabled-opacity)👻 無効状態の不透明度
--van-slider-bar-height2px📏 バーの高さ
--van-slider-button-width24px📐 ボタンの幅
--van-slider-button-height24px📐 ボタンの高さ
--van-slider-button-radius50%🔘 ボタンの角丸
--van-slider-button-backgroundvar(--van-white)🎨 ボタンの背景色
--van-slider-button-shadow0 1px 2px rgba(0, 0, 0, 0.5)🌟 ボタンの影

📚 関連ドキュメント

🎛️ フォームコンポーネント

📊 表示コンポーネント

🎨 フィードバックコンポーネント

🔧 ツールコンポーネント

Vant に基づく企業向けモバイルソリューション