滑动输入条
滑动型输入器,展示当前值和可选范围。
何时使用
当用户需要在数值区间/自定义区间内进行选择时,可为连续或离散值。
代码演示
- 基本 ·
basic - 带输入框的滑块 ·
input-number - 带 icon 的滑块 ·
icon-slider - 自定义提示 ·
tip-formatter - 事件 ·
event - 带标签的滑块 ·
mark - 垂直 ·
vertical - 控制 ToolTip 的显示 ·
show-tooltip - 反向 ·
reverse - 范围可拖拽 ·
draggableTrack - 多点组合 ·
multiple - 动态增减节点 ·
editable - 禁用指定滑块 ·
disabled-handle - 自定义语义结构的样式和类 ·
style-class
API
通用属性参考:通用属性
| 参数 | 说明 | 类型 | 默认值 | 版本 | 全局配置 |
|---|---|---|---|---|---|
| classNames | 用于自定义组件内部各语义化结构的 class,支持对象或函数 | Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string> | - | 5.23.0 | |
| defaultValue | 设置初始取值。当 range 为 false 时,使用 number,否则用 [number, number] | number | [number, number] | 0 | [0, 0] | × | |
| disabled | 值为 true 时,滑块为禁用状态。该属性也可以是一个数组,用于禁用 range 模式下特定的 handle,例如 [true, false, true] 会禁用第一个和第三个 handle。当任意 handle 被禁用时,editable 模式将自动禁用 | boolean | boolean[] | false | × | |
| keyboard | 支持使用键盘操作 handler | boolean | true | 5.2.0+ | × |
| dots | 是否只能拖拽到刻度上 | boolean | false | × | |
| included | marks 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列 | boolean | true | × | |
| marks | 刻度标记,key 的类型必须为 number 且取值在闭区间 [min, max] 内,每个标签可以单独设置样式 | object | { number: ReactNode } or { number: { style: CSSProperties, label: ReactNode } } | × | |
| max | 最大值 | number | 100 | × | |
| min | 最小值 | number | 0 | × | |
| orientation | 排列方向 | horizontal | vertical | horizontal | × | |
| range | 双滑块模式 | boolean | range | false | × | |
| reverse | 反向坐标轴 | boolean | false | × | |
| step | 步长,取值必须大于 0,并且可被 (max - min) 整除。当 marks 不为空对象时,可以设置 step 为 null,此时 Slider 的可选值仅有 marks、min 和 max | number | null | 1 | × | |
| styles | 用于自定义组件内部各语义化结构的行内 style,支持对象或函数 | Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties> | - | 5.23.0 | |
| tooltip | 设置 Tooltip 相关属性 | tooltip | - | 4.23.0 | × |
| value | 设置当前取值。当 range 为 false 时,使用 number,否则用 [number, number] | number | [number, number] | - | × | |
| vertical | 值为 true 时,Slider 为垂直方向。与 orientation 同时存在,以 orientation 优先 | boolean | false | × | |
| onChangeComplete | 与 mouseup 和 keyup 触发时机一致,把当前值作为参数传入 | (value) => void | - | × | |
| onChange | 当 Slider 的值发生改变时,会触发 onChange 事件,并把改变后的值作为参数传入 | (value) => void | - | × | |
滑块手柄样式,请使用 styles.handle 替代 | CSSProperties | - | - | × | |
与 mouseup 和 keyup 触发时机一致,请使用 onChangeComplete 替代 | (value) => void | - | - | × | |
滑轨样式,请使用 styles.rail 替代 | CSSProperties | - | - | × | |
已选轨道样式,请使用 styles.track 替代 | CSSProperties | - | - | × |
range
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| draggableTrack | 范围刻度是否可被拖拽 | boolean | false | - |
| editable | 启动动态增减节点,不能和 draggableTrack 一同使用 | boolean | false | 5.20.0 |
| minCount | 配置 editable 时,最小节点数量 | number | 0 | 5.20.0 |
| maxCount | 配置 editable 时,最大节点数量 | number | - | 5.20.0 |
tooltip
| 参数 | 说明 | 类型 | 默认值 | 版本 |
|---|---|---|---|---|
| autoAdjustOverflow | 是否自动调整弹出位置 | boolean | true | 5.8.0 |
| open | 值为 true 时,Tooltip 将会始终显示;否则始终不显示,哪怕在拖拽及移入时 | boolean | - | 4.23.0 |
| placement | 设置 Tooltip 展示位置。参考 Tooltip | string | - | 4.23.0 |
| getPopupContainer | Tooltip 渲染父节点,默认渲染到 body 上 | (triggerNode) => HTMLElement | () => document.body | 4.23.0 |
| formatter | Slider 会把当前值传给 formatter,并在 Tooltip 中显示 formatter 的返回值,若为 null,则隐藏 Tooltip | value => ReactNode | null | IDENTITY | 4.23.0 |
方法
| 名称 | 描述 | 版本 |
|---|---|---|
| blur() | 移除焦点 | |
| focus() | 获取焦点 |
Semantic DOM
| 语义节点 | 原生说明 | 版本 |
|---|---|---|
root | 根元素,设置相对定位、高度、边距、内边距、光标样式和触摸事件控制 | 5.23.0 |
track | 轨道选取条元素,设置绝对定位、背景色、圆角和过渡动画样式 | 5.10.0 |
tracks | 多段轨道容器元素,设置绝对定位和过渡动画样式 | 5.10.0 |
rail | 背景轨道元素,设置绝对定位、背景色、圆角和过渡动画样式 | 5.10.0 |
handle | 滑块控制点元素,设置绝对定位、尺寸、轮廓线、用户选择、背景色、边框阴影、圆角、光标样式和过渡动画 | 5.10.0 |
语义说明来源: vendor/components/slider/demo/_semantic.tsx
主题变量(Design Token)
类型、继承关系和原生令牌声明保持固定源码原文;默认值由原生主题计算,并可能受 ConfigProvider 覆盖。本表不伪造静态默认值。
| 令牌 | 类型 | 原生说明 |
|---|---|---|
controlSize | number | 滑动输入高度 |
railSize | number | 轨道高度 |
handleSize | number | 滑块尺寸 |
handleSizeHover | number | 滑块尺寸(悬浮态) |
handleLineWidth | number | string | 滑块边框宽度 |
handleLineWidthHover | number | string | 滑块边框宽度(悬浮态) |
dotSize | number | 滑块圆点尺寸 |
railBg | string | 轨道背景色 |
railHoverBg | string | 轨道背景色(悬浮态) |
trackBg | string | 轨道已覆盖部分背景色 |
trackHoverBg | string | 轨道已覆盖部分背景色(悬浮态) |
handleColor | string | 滑块颜色 |
handleActiveColor | string | 滑块激活态边框色 |
handleActiveOutlineColor | string | 滑块激活态外框色 |
handleColorDisabled | string | 滑块禁用颜色 |
dotBorderColor | string | 圆点边框颜色 |
dotActiveBorderColor | string | 圆点激活态边框颜色 |
trackBgDisabled | string | 轨道禁用态背景色 |
声明来源: vendor/components/slider/style/index.ts
import type * as React from 'react';
import type { CSSObject } from '@ant-design/cssinjs';
import { unit } from '@ant-design/cssinjs';
import { FastColor } from '@ant-design/fast-color';
import { resetComponent } from '../../style';
import type { FullToken, GenerateStyle, GetDefaultToken } from '../../theme/internal';
import { genStyleHooks, mergeToken } from '../../theme/internal';
// Direction naming standard:
// Horizontal base:
// -0-------------
// vertical: part (水平时,垂直方向命名为 part)
// horizontal: full (水平时,水平方向命名为 full)
export interface ComponentToken {
/**
* @desc 滑动输入高度
* @descEN Height of slider
*/
controlSize: number;
/**
* @desc 轨道高度
* @descEN Height of rail
*/
railSize: number;
/**
* @desc 滑块尺寸
* @descEN Size of handle
*/
handleSize: number;
/**
* @desc 滑块尺寸(悬浮态)
* @descEN Size of handle when hover
*/
handleSizeHover: number;
/**
* @desc 滑块边框宽度
* @descEN Border width of handle
*/
handleLineWidth: number | string;
/**
* @desc 滑块边框宽度(悬浮态)
* @descEN Border width of handle when hover
*/
handleLineWidthHover: number | string;
/**
* @desc 滑块圆点尺寸
* @descEN Size of dot
*/
dotSize: number;
/**
* @desc 轨道背景色
* @descEN Background color of rail
*/
railBg: string;
/**
* @desc 轨道背景色(悬浮态)
* @descEN Background color of rail when hover
*/
railHoverBg: string;
/**
* @desc 轨道已覆盖部分背景色
* @descEN Background color of track
*/
trackBg: string;
/**
* @desc 轨道已覆盖部分背景色(悬浮态)
* @descEN Background color of track when hover
*/
trackHoverBg: string;
/**
* @desc 滑块颜色
* @descEN Color of handle
*/
handleColor: string;
/**
* @desc 滑块激活态边框色
* @descEN Border color of handle when active
*/
handleActiveColor: string;
/**
* @desc 滑块激活态外框色
* @descEN Outline color of handle when active
*/
handleActiveOutlineColor: string;
/**
* @desc 滑块禁用颜色
* @descEN Color of handle when disabled
*/
handleColorDisabled: string;
/**
* @desc 圆点边框颜色
* @descEN Border color of dot
*/
dotBorderColor: string;
/**
* @desc 圆点激活态边框颜色
* @descEN Border color of dot when active
*/
dotActiveBorderColor: string;
/**
* @desc 轨道禁用态背景色
* @descEN Background color of track when disabled
*/
trackBgDisabled: string;
}
interface SliderToken extends FullToken<'Slider'> {
marginFull: number | string;
marginPart: number | string;
marginPartWithMark: number | string;
}
原生通用属性
Tips: 以下通用属性适用于 antd 大部分组件,不支持的组件会单独说明。
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| style | 自定义样式 | CSSProperties | - |
| className | 自定义类名 | string | - |
| rootClassName | 添加在组件最外层的 className | string | - |
| autoFocus | 自动获取焦点,仅对表单类、链接、交互容器等可聚焦元素生效 | boolean | false |
安装并复现示例
npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23
使用 ConfigProvider 和原生 App,并单独配置 dayjs 语言。每个示例在查看代码中列出完整源码文件和额外固定依赖。示例名称用于选择演示,不是组件通用属性。主题、语言与 SSR 初始化见资源安装指南。
原生类型参考
源码查看器包含未修改的原生实现和以下声明文件,继承类型仍位于原生包中。代码中的英文注释保留为源码参考。
vendor/components/slider/Context.tsvendor/components/slider/SliderTooltip.tsxvendor/components/slider/index.tsxvendor/components/slider/style/index.ts
来源与许可
https://github.com/ant-design/ant-design/tree/4a39f54842eade4e565ab336ef6097cd7e723cdd
保留原生中英文正文与可执行示例;官网专用的嵌入章节和令牌表格在本地展开。Ant Design 使用 MIT 许可,另列依赖的许可证也需保留。上传预览禁止向外发起请求,不提供后端服务。