Slider 滑块控件
用户可以使用滑块控件在某一范围内取值。
滑块反映了一根条上的一系列值,用户可以从中选择单个值。 它们通常适用于调节一些设置,譬如调节设备音量、调整屏幕亮度,或者改变图像的滤镜。
- 📦 22 kB 压缩大小 (但与其他 Material-UI 组件使用时只有+8 kB)。
Volume
Disabled slider
间续滑块(Discrete sliders)
用户可以通过参考其值指示器,来将间续滑块调整为某一特定值。 以下是一些案例:
通过设置 marks={true}
,你可以针对每个步骤产生一个标记(mark)。
Temperature
Disabled
Small steps
<Typography id="discrete-slider-small-steps" gutterBottom>
Small steps
</Typography>
<Slider
defaultValue={0.00000005}
getAriaValueText={valuetext}
aria-labelledby="discrete-slider-small-steps"
step={0.00000001}
marks
min={-0.00000005}
max={0.0000001}
valueLabelDisplay="auto"
/>
Custom marks
<Typography id="discrete-slider-custom" gutterBottom>
Custom marks
</Typography>
<Slider
defaultValue={20}
getAriaValueText={valuetext}
aria-labelledby="discrete-slider-custom"
step={10}
valueLabelDisplay="auto"
marks={marks}
/>
Restricted values
<Typography id="discrete-slider-restrict" gutterBottom>
Restricted values
</Typography>
<Slider
defaultValue={20}
valueLabelFormat={valueLabelFormat}
getAriaValueText={valuetext}
aria-labelledby="discrete-slider-restrict"
step={null}
valueLabelDisplay="auto"
marks={marks}
/>
Always visible
<Typography id="discrete-slider-always" gutterBottom>
Always visible
</Typography>
<Slider
defaultValue={80}
getAriaValueText={valuetext}
aria-labelledby="discrete-slider-always"
step={10}
marks={marks}
valueLabelDisplay="on"
/>
Temperature range
<Typography id="range-slider-demo" gutterBottom>
Temperature range
</Typography>
<Slider
value={value}
onChange={handleChange}
valueLabelDisplay="auto"
aria-labelledby="range-slider-demo"
getAriaValueText={valuetext}
/>
Volume
自定义滑块
你可以参考以下一些例子来自定义组件。 您可以在 重写文档页面 中了解更多有关此内容的信息。
iOS
pretto.fr
Tooltip value label
Airbnb
Temperature
WARNING: Chrome, Safari and newer Edge versions i.e. any browser based on WebKit exposes <Slider orientation="vertical" />
as horizontal (chromium issue #1158217). By applying -webkit-appearance: slider-vertical;
the slider is exposed as vertical.
However, by applying -webkit-appearance: slider-vertical;
keyboard navigation for horizontal keys (Arrow Left, Arrow Right) is reversed (chromium issue #1162640). Usually, up and right should increase and left and down should decrease the value. If you apply -webkit-appearance
you could prevent keyboard navigation for horizontal arrow keys for a truly vertical slider. This might be less confusing to users compared to a change in direction.
Temperature
Removed track
Removed track range slider
Inverted track
Inverted track range
Storage: 1 MB
<Typography id="non-linear-slider" gutterBottom>
Storage: {valueLabelFormat(calculateValue(value))}
</Typography>
<Slider
value={value}
min={5}
step={1}
max={30}
scale={calculateValue}
getAriaValueText={valueLabelFormat}
valueLabelFormat={valueLabelFormat}
onChange={handleChange}
valueLabelDisplay="auto"
aria-labelledby="non-linear-slider"
/>
<StyledSlider defaultValue={10} />
无障碍设计
(WAI-ARIA: https://www.w3.org/TR/wai-aria-practices/#slider)
该组件处理了大部分必要的工作,使之应用无障碍访问。 但是,你需要确保:
- 每个滑块都带有一个方便用户的标签(
aria-label
、aria-labelledby
或getAriaLabel
属性)。 - 每一个滑块的当前值都有一个方便用户阅读的文字。 如果值与标签的语义相匹配的话,则不需要此操作。 你可以通过
getAriaValueText
或者aria-valuetext
属性来更改名字。