跳至正文

Slider

在两个边界之间选择单个值或范围的滑块。

浏览器
Chrome 123+Firefox 121+Safari 17.5+
层级
0
压缩后大小
465 B
强制布局预算
0 ms
axe 预算
0
支持 SSR
是
公开契约
测试环境

交互示例

Slider

默认滑块

受控滑块

带刻度的滑块

范围滑块

纵向滑块

禁用的滑块

API

Slider

属性类型默认值说明
valuenumber—当前值,使滑块受控。
defaultValuenumber—非受控滑块的初始值,此后由原生范围输入框管理。
onValueChange(value: number) => void—滑块移动时,使用新数值调用。
minnumber0可选的最小值。
maxnumber100可选的最大值。
stepnumber1可选值之间的增量。
disabledbooleanfalse禁用原生输入框,并设置data-disabled属性。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

SliderClient

属性类型默认值说明
valuenumber | readonly [number, number]—受控值;元组会渲染下限和上限两个手柄。
defaultValuenumber | readonly [number, number]—原生range输入框或双手柄范围的初始值。
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禁用所有原生范围输入框。
renderReactElement | ((props, state) => ReactElement)—替换渲染元素,同时保留行为和无障碍连接关系。

键盘

按键操作
Arrow keys将已聚焦的原生范围输入框调整一个步长,或移至相邻停靠点
Home / End将已聚焦的滑块手柄移到最小值或最大值
Tab在范围的下限和上限手柄之间移动

无障碍

Slider渲染原生范围输入框,在水合前和禁用JavaScript时均可工作。SliderClient也在服务端渲染原生范围输入框,水合后再控制它们,以支持范围值、带标签的刻度和非均匀吸附。数字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
本页由机器翻译,尚未经人工审核。