Slider

Sliderは、指定された範囲内から値を選択するための入力コントロールです。単一値の選択とレンジ(範囲)選択の両方をサポートしています。

Tooltip
Labels
3
Sizes
S/R
Mode
Radix
Base

Playground

プレビュー
Dsingle
Size
Color
Mode
Step
Direction
Tooltip
Options
<Slider
  defaultValue={[50]}
/>

Sizes

sm
トラック4px
サム14px
default
トラック6px
サム18px
lg
トラック8px
サム22px

Features

Range

defaultValueに2つの値を渡すことで、レンジスライダーとして動作します。

<Slider defaultValue={[25, 75]} />

With Value

制御モードで値を表示するパターンです。

50
const [value, setValue] = useState([50])

<div className="space-y-4">
  <div className="text-center">
    <span className="text-2xl font-bold text-foreground tabular-nums">{value[0]}</span>
  </div>
  <Slider value={value} onValueChange={setValue} />
</div>

States

Default
Disabled
<Slider defaultValue={[50]} />
<Slider defaultValue={[50]} disabled />

API

Props

valueundefined
number[]

制御モードでの値(配列)

defaultValueundefined
number[]

非制御モードでの初期値(配列)

onValueChangeundefined
(value: number[]) => void

値変更時のコールバック(ドラッグ中も発火)

onValueCommitundefined
(value: number[]) => void

ドラッグ完了時のコールバック

color"default"
"default" | "primary"

レンジとサムの色

size"default"
"sm" | "default" | "lg"

スライダーのサイズ

min0
number

最小値

max100
number

最大値

step1
number

ステップ値

minStepsBetweenThumbs0
number

レンジモードでのサム間の最小ステップ数

showTooltip"never"
"auto" | "always" | "never"

ツールチップ表示モード。autoはホバー/ドラッグ時に表示

formatLabelundefined
(value: number) => string

ツールチップの値フォーマット関数

startContentundefined
ReactNode

スライダーの左側に表示するコンテンツ(アイコン、ラベル等)

endContentundefined
ReactNode

スライダーの右側に表示するコンテンツ

disabledfalse
boolean

無効状態

orientation"horizontal"
"horizontal" | "vertical"

表示方向

invertedfalse
boolean

値の方向を反転

nameundefined
string

フォームのname属性

Customization

startContent / endContent にReactNodeを渡して、スタイルを自由にカスタマイズできます。

アイコン付き

startContent={<VolumeOff />} endContent={<Volume2 />}

スタイル付きラベル

$0$100
startContent={<span className="text-xs font-mono font-bold text-primary">$0</span>} endContent={<span className="text-xs font-mono font-bold text-primary">$100</span>}

アイコン + ツールチップ

<Slider showTooltip="always" formatLabel={(v) => `${v}%`} startContent={<Sun />} endContent={<Sun />} />

Tip:startContent / endContent はReactNodeなので、文字列・アイコン・カスタムコンポーネントなど何でも渡せます。フォントサイズはSliderのsizeに合わせて自動調整されます。

Anatomy

1
60
2
3
050100
Track height6px
Thumb size18px
1
Track
スライダー全体の範囲
2
Range
選択された値の範囲
3
Thumb
ドラッグ可能なつまみ

Best Practices

推奨

  • 現在の値を近くに表示する
  • 適切なstep値を設定する
  • 範囲選択にはレンジモードを使用する
  • min/maxの範囲を明確にする

避けるべき

  • 正確な値の入力にはInputを使用する
  • 極端に小さいstep値を避ける
  • 値の表示なしで使用しない
  • モバイルで幅が狭すぎるスライダーを避ける

Accessibility

キーボード操作

← →1ステップ増減
↑ ↓1ステップ増減
Home最小値に移動
End最大値に移動

ARIA属性

  • role="slider" 自動付与
  • aria-valuemin/max/now 自動管理
  • フォーカスインジケーター
  • タッチ操作対応