JGuang

滑动输入条

Slider · Ant Design

交互预览
npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

滑动输入条

滑动型输入器,展示当前值和可选范围。

何时使用

当用户需要在数值区间/自定义区间内进行选择时,可为连续或离散值。

代码演示

  • 基本 · 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支持使用键盘操作 handlerbooleantrue5.2.0+×
dots是否只能拖拽到刻度上booleanfalse×
includedmarks 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列booleantrue×
marks刻度标记,key 的类型必须为 number 且取值在闭区间 [min, max] 内,每个标签可以单独设置样式object{ number: ReactNode } or { number: { style: CSSProperties, label: ReactNode } }×
max最大值number100×
min最小值number0×
orientation排列方向horizontal | verticalhorizontal×
range双滑块模式boolean | rangefalse×
reverse反向坐标轴booleanfalse×
step步长,取值必须大于 0,并且可被 (max - min) 整除。当 marks 不为空对象时,可以设置 step 为 null,此时 Slider 的可选值仅有 marks、min 和 maxnumber | null1×
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 优先booleanfalse×
onChangeComplete与 mouseup 和 keyup 触发时机一致,把当前值作为参数传入(value) => void-×
onChange当 Slider 的值发生改变时,会触发 onChange 事件,并把改变后的值作为参数传入(value) => void-×
handleStyle滑块手柄样式,请使用 styles.handle 替代CSSProperties--×
onAfterChange与 mouseup 和 keyup 触发时机一致,请使用 onChangeComplete 替代(value) => void--×
railStyle滑轨样式,请使用 styles.rail 替代CSSProperties--×
trackStyle已选轨道样式,请使用 styles.track 替代CSSProperties--×

range

参数说明类型默认值版本
draggableTrack范围刻度是否可被拖拽booleanfalse-
editable启动动态增减节点,不能和 draggableTrack 一同使用booleanfalse5.20.0
minCount配置 editable 时,最小节点数量number05.20.0
maxCount配置 editable 时,最大节点数量number-5.20.0

tooltip

参数说明类型默认值版本
autoAdjustOverflow是否自动调整弹出位置booleantrue5.8.0
open值为 true 时,Tooltip 将会始终显示;否则始终不显示,哪怕在拖拽及移入时boolean-4.23.0
placement设置 Tooltip 展示位置。参考 Tooltipstring-4.23.0
getPopupContainerTooltip 渲染父节点,默认渲染到 body 上(triggerNode) => HTMLElement() => document.body4.23.0
formatterSlider 会把当前值传给 formatter,并在 Tooltip 中显示 formatter 的返回值,若为 null,则隐藏 Tooltipvalue => ReactNode | nullIDENTITY4.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 覆盖。本表不伪造静态默认值。

令牌类型原生说明
controlSizenumber滑动输入高度
railSizenumber轨道高度
handleSizenumber滑块尺寸
handleSizeHovernumber滑块尺寸(悬浮态)
handleLineWidthnumber | string滑块边框宽度
handleLineWidthHovernumber | string滑块边框宽度(悬浮态)
dotSizenumber滑块圆点尺寸
railBgstring轨道背景色
railHoverBgstring轨道背景色(悬浮态)
trackBgstring轨道已覆盖部分背景色
trackHoverBgstring轨道已覆盖部分背景色(悬浮态)
handleColorstring滑块颜色
handleActiveColorstring滑块激活态边框色
handleActiveOutlineColorstring滑块激活态外框色
handleColorDisabledstring滑块禁用颜色
dotBorderColorstring圆点边框颜色
dotActiveBorderColorstring圆点激活态边框颜色
trackBgDisabledstring轨道禁用态背景色

声明来源: 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添加在组件最外层的 classNamestring-
autoFocus自动获取焦点,仅对表单类、链接、交互容器等可聚焦元素生效booleanfalse

安装并复现示例

npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

使用 ConfigProvider 和原生 App,并单独配置 dayjs 语言。每个示例在查看代码中列出完整源码文件和额外固定依赖。示例名称用于选择演示,不是组件通用属性。主题、语言与 SSR 初始化见资源安装指南。

原生类型参考

源码查看器包含未修改的原生实现和以下声明文件,继承类型仍位于原生包中。代码中的英文注释保留为源码参考。

  • vendor/components/slider/Context.ts
  • vendor/components/slider/SliderTooltip.tsx
  • vendor/components/slider/index.tsx
  • vendor/components/slider/style/index.ts

来源与许可

https://github.com/ant-design/ant-design/tree/4a39f54842eade4e565ab336ef6097cd7e723cdd

保留原生中英文正文与可执行示例;官网专用的嵌入章节和令牌表格在本地展开。Ant Design 使用 MIT 许可,另列依赖的许可证也需保留。上传预览禁止向外发起请求,不提供后端服务。