滑动输入条 Slider
滑动型输入器,展示当前值和可选范围。
安装
npm install @arco-design/web-react@2.66.18
在入口引入 @arco-design/web-react/dist/css/arco.css,用 ConfigProvider 设置语言。React 19 项目还需在入口最先引入 @arco-design/web-react/es/_util/react-19-adapter,否则 Message、Modal 等命令式 API 无法渲染。
示例
- 基本用法:基本用法展示。
- 基础状态:默认态、禁用态。
- 设置步长:传入
step设置步长。 默认步长为 1。建议设置值能够被max-min整除,否则会出现可选最大值小于max的情况。当设置showTicks为true的时候,可显示 step 的刻度线。 - 范围选择:设置
range = true即可开启范围选择,此时value为数组。 - 多点选择:范围内多个点选择。(
2.61.0支持) - 显示输入框:当
showInput为 true 时,将显示输入框。当设置onlyMarkValue为true或者范围内多点选择时,输入框始终不会显示。 当showInput传入InputNumberProps时,min、max、step属性会以SliderProps为先。 分段输入条设置的分段步长对 InputNumber 无效 - 添加标签文本:可以通过传入
marks添加标签文本。当设置onlyMarkValue的时候,只可以选择节点值。此时step会被忽略。 - 带有icon的滑动输入条:两边带有 icon 表示状态。
- 竖直滑动条:设置
vertical为true,将会显示竖直的滑动条 - 控制 tooltip 的展示
- 自定义提示:使用
formatterTooltip可以格式化 Tooltip 的内容。 - 范围刻度可拖拽:通过设置
range.draggableBar为true, 让范围刻度可以拖拽。 - 设置范围:通过
min和max设置可选范围。 - 反向:设置
reverse={true},可以交换滑动条的起点和终点。 - 分段输入条:在设置了
marks后,实际上将Slider分成了多个区间,可以传入getIntervalConfig对每个区间的宽度和步长进行设置。 注意:会优先将空间分配给传入了width的区间, 剩下的将会按照区间长度分配剩余的空间。
示例来自 Arco Design 官方仓库(MIT),固定在 npm 2.66.18 对应的提交;部分示例使用在线图片或上传地址,预览中网络请求被禁用。
API
Slider
| 参数名 | 描述 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| disabled | 是否禁用 | boolean | - | - |
| onlyMarkValue | 只能选择标签值,此时step将会被忽略 | boolean | - | - |
| reverse | 反向坐标轴, rtl 场景默认为 true | boolean | - | - |
| showTicks | 是否显示步长刻度线 | boolean | - | - |
| tooltipVisible | 控制 tooltip 的展示。设置为 true 时,将一直展示 tooltip。设置为 false 时,将一直隐藏 tooltip。 | boolean | - | - |
| vertical | 是否竖直方向 | boolean | - | - |
| max | 滑动范围最大值 | number | 100 | - |
| min | 滑动范围最小值 | number | 0 | - |
| step | 步长 | number | 1 | - |
| tooltipPosition | tooltip 的位置 | | 'top'| 'tl'| 'tr'| 'bottom'| 'bl'| 'br'| 'left'| 'lt'| 'lb'| 'right'| 'rt'| 'rb' | - | - |
| formatTooltip | 格式化 tooltip 内容 | (value: number) => string | ReactNode | - | - |
| className | 节点类名 | string | string[] | - | - |
| defaultValue | 默认值 | number | number[] | - | - |
| marks | 标签。是一个对象。key 为在[min, max]内的整数。 | Record<number, ReactNode> | - | - |
| range | 是否是范围选择 | boolean | { draggableBar: boolean } | - | 2.14.0 |
| showInput | 是否展示输入框,onlyMarkValue 为 true 或范围内多点选择时输入框始终隐藏。可接受 InputNumber 的 props。 | boolean | InputNumberProps | InputNumberProps[] | - | InputNumberProps in 2.32.0 |
| style | 节点样式 | CSSProperties | - | - |
| value | 值 | number | number[] | - | - |
| getIntervalConfig | 针对区间配置,返回区间步长和相对于整个滑动轴的宽度比例(如 0.5 或 "50%")。只在marks场景下生效 | (range: number[],index: number) => { step?: number; width?: number | string } | - | 2.30.0 |
| getTooltipContainer | 设置 tooltip 所插入的父元素 | () => Element | - | - |
| onAfterChange | 触发时机在 mouseup,参数是当前值 | (val: number | number[]) => void | - | 2.20.0 |
| onChange | 选择值变化时触发 | (val: number | number[]) => void | - | - |