README.zh-CN.md

August 27, 2026 · View on GitHub

@rc-component/slider

Ant Design Ant Design 生态的一部分。

🎚️ React 滑动输入组件,支持范围、刻度、提示和键盘交互。

NPM version npm downloads build status Codecov bundle size dumi

English | 简体中文

特性

  • 通过一个共享组件支持单值和范围滑块。
  • 提供标记、点、键盘交互、反向和垂直布局。
  • 通过 range 配置支持可编辑范围手柄和可拖动轨道。
  • 引入用于轨道、导轨和手柄的语义 classNamesstyles 插槽。

安装

npm install @rc-component/slider

使用

import Slider from '@rc-component/slider';
import '@rc-component/slider/assets/index.css';

export default () => <Slider defaultValue={30} />;
import Slider from '@rc-component/slider';
import '@rc-component/slider/assets/index.css';

export default () => (
  <Slider
    range={{ draggableTrack: true }}
    marks={{ 0: '0', 50: '50', 100: '100' }}
    defaultValue={[20, 60]}
  />
);

在线预览:https://slider.react-component.vercel.app/

示例

运行本地 dumi 站点:

npm install
npm start

然后打开 http://localhost:8000

API

Slider

名称类型默认值说明
activeDotStyleReact.CSSProperties | (dotValue: number) => React.CSSProperties-激活点的样式。
activeHandleRenderHandlesProps['handleRender']-活动句柄的渲染函数。
allowCrossbooleantrue允许手柄在范围模式下交叉。
ariaLabelForHandlestring | string[]-aria-label for handle elements.
ariaLabelledByForHandlestring | string[]-aria-labelledby for handle elements.
ariaDescribedByForHandlestring | string[]-句柄元素的 aria-describedby
ariaRequiredboolean-句柄元素的 aria-required
ariaValueTextFormatterForHandle((value: number) => string) | ((value: number) => string)[]-aria-valuetext 格式化函数。
autoFocusboolean-挂载后自动聚焦滑块。
classNamestring-附加 className。
classNamesPartial<Record<'tracks' | 'track' | 'rail' | 'handle', string>>-内部插槽的语义化 className。
countnumber-已废弃。请使用 range.minCountrange.maxCount
defaultValuenumber | number[]-初始值。
disabledboolean | boolean[]false禁用全部滑块或指定滑块。
dotsbooleanfalse在每个有效步骤位置显示点。
dotStyleReact.CSSProperties | (dotValue: number) => React.CSSProperties-点的样式。
handleRenderHandlesProps['handleRender']-自定义句柄渲染器。
handleStyleReact.CSSProperties | React.CSSProperties[]-已废弃。请使用 styles.handle
idstring-根 ID。
includedbooleantrue轨道是否渲染为连续的选定间隔。
keyboardbooleantrue启用键盘交互。
marksRecord<string | number, ReactNode | MarkObj>-滑块刻度标记。
maxnumber100最大值。
minnumber0最小值。
onAfterChange(value) => void-已废弃。请使用 onChangeComplete
onBeforeChange(value) => void-已废弃。请使用 onChange
onBlur(event) => void-模糊处理程序。
onChange(value) => void-当值改变时触发。
onChangeComplete(value) => void-交互完成时触发。
onFocus(event) => void-焦点处理程序。
prefixClsstring'rc-slider'className 前缀。
pushableboolean | numberfalse范围模式下推动相邻滑块。
railStyleReact.CSSProperties-已废弃。请使用 styles.rail
rangeboolean | RangeConfigfalse启用范围模式或配置可编辑范围行为。
reversebooleanfalse以相反方向渲染。
startPointnumbermin单值轨迹的起点。
stepnumber | null1步长。使用 null 时以标记作为步进。
styleReact.CSSProperties-根样式。
stylesPartial<Record<'tracks' | 'track' | 'rail' | 'handle', React.CSSProperties>>-内部插槽的语义化样式。
tabIndexnumber | number[]0滑块的 tabIndex。
trackboolean-是否渲染轨道元素。
trackStyleReact.CSSProperties | React.CSSProperties[]-已废弃。请使用 styles.track
valuenumber | number[]-受控值。
verticalbooleanfalse垂直渲染。

RangeConfig

名称类型默认值说明
draggableTrackbooleanfalse允许拖动选定的范围轨道。
editablebooleanfalse允许添加或删除范围手柄。
maxCountnumber-可编辑时的最大句柄数。
minCountnumber-可编辑时的最小句柄数。

Ref

名称类型说明
blur() => void模糊滑块。
focus() => void聚焦滑块。

本地开发

npm install
npm start
npm test
npm run tsc
npm run compile
npm run build

dumi 站点默认运行在 http://localhost:8000

发布

npm run prepublishOnly

包构建完成后,发布流程由 @rc-component/np 通过 rc-np 命令处理。

许可证

@rc-component/slider 基于 MIT 许可证发布。