本文へ移動
uiify

Slider

2つの境界の間で、1つの値または範囲を選ぶスライダー。

ブラウザー
Chrome 123+Firefox 121+Safari 17.5+
ティア
0
圧縮後のサイズ
465 B
強制レイアウトの上限
0 ms
axe の上限
0
SSR 対応
はい
公開された契約
テストハーネス

プレイグラウンド

Slider

標準のスライダー

制御スライダー

目盛り付きスライダー

範囲スライダー

縦方向のスライダー

無効なスライダー

API

Slider

Prop型既定値説明
valuenumber—現在の値。スライダーを制御します。
defaultValuenumber—非制御スライダーの初期値。その後はネイティブのrange入力が管理します。
onValueChange(value: number) => void—スライダーが動くたび、新しい数値で呼び出します。
minnumber0選択できる最小値。
maxnumber100選択できる最大値。
stepnumber1選択可能な値の刻み幅。
disabledbooleanfalseネイティブ入力を無効にし、data-disabled属性を設定します。
renderReactElement | ((props, state) => ReactElement)—動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。

SliderClient

Prop型既定値説明
valuenumber | readonly [number, number]—制御値。タプルなら下限と上限のつまみを描画します。
defaultValuenumber | readonly [number, number]—ネイティブのrange入力、または2つのつまみを持つ範囲の初期値。
onValueChange(value: number | readonly [number, number]) => void—選択値または順序付けた範囲が変わると呼び出します。
minnumber0選択できる最小値。
maxnumber100選択できる最大値。
stepnumber | null1数値のstepではハイドレーション前もネイティブの刻み幅が動作します。nullではハイドレーション後にmin、max、marksだけを選択できます。
marksreadonly { value: number; label?: ReactNode }[]—stepがnullの場合の目盛りラベルとスナップ位置。
orientation"horizontal" | "vertical""horizontal"コントロールと目盛りの配置方向。
thumbLabelsreadonly [string, string]—範囲の下限と上限のつまみのアクセシブルな名前。
disabledbooleanfalseすべてのネイティブrange入力を無効にします。
renderReactElement | ((props, state) => ReactElement)—動作とアクセシビリティの接続を維持したまま、描画する要素を置き換えます。

キーボード

キー操作
Arrow keysフォーカス中のネイティブrange入力を1ステップまたは1停止位置分調整
Home / Endフォーカス中のつまみを最小値または最大値へ移動
Tab範囲の下限と上限のつまみ間を移動

アクセシビリティ

Sliderはネイティブのrange入力を描画し、ハイドレーション前やJavaScriptが無効な状態でも動作します。SliderClientもネイティブのrange入力をサーバーレンダリングし、ハイドレーション後に制御することで、範囲値、ラベル付き目盛り、不均等なスナップに対応します。数値のstepではハイドレーション前もネイティブの刻み幅が動作し、step={null}の目盛りへのスナップはハイドレーション後に始まります。単一のスライダーにはaria-labelまたはaria-labelledbyを指定し、範囲の両つまみにはthumbLabelsを指定してください。

スタイリングのフック

data-uiify-sliderdata-uiify-slider-clientdata-part="root"data-part="track"data-part="range"data-part="mark"data-part="thumb"data-orientationdata-disableddata-enhanced--uiify-slider-start--uiify-slider-end--uiify-slider-position