Slider

适合通过相对位置调整数字或范围,而非精确键入的场景。

预览

价格范围与垂直音量

调整初始为 32–72 的双滑块价格范围,并比较初始为 60 的垂直单滑块。

价格范围₩32K – ₩72K
纵向排列

安装

首次使用此 Registry?请先完成 基础配置与共享样式安装 。

npx shadcn@latest add @neumorphism-ui/slider

先安装一次共享 base,然后使用 CLI 添加组件及其依赖。

Registry JSON

用法

以数组传值,设置 min、max、step,并为各滑块提供名称。显示当前数值时,用 onValueChange 同步状态与文字。

"use client";

import { Slider } from "@/components/ui/slider";

export default function Example() {
  return <Slider defaultValue={[50]} min={0} max={100} aria-label="Volume" thumbLabels={["Volume"]} />;
}

API 参考

基于 Base UI Slider,提供单值与 number[] 范围 API。根据数组项数量创建 thumb,并通过 thumbLabels 为每个 input 命名;同时支持横向、纵向以及受控、非受控值。

组件属性类型默认值说明
Slidervalue / defaultValuenumber | readonly number[]min每个 thumb 的受控值或非受控初始值。
Slidermin / maxnumber0 / 100可选择的数值范围。
Sliderstepnumber1键盘和指针调整的步长。
Sliderorientation"horizontal" | "vertical""horizontal"设置 track 方向和键盘操作轴。
SliderthumbLabelsreadonly string[]—按值的顺序传给每个真实 thumb input 的无障碍名称。
SlideronValueChange / onValueCommitted(value: number | readonly number[]) => void—在调整过程中或调整结束时传递单个数值或值数组。
Sliderdisabledbooleanfalse禁用所有 thumb 的交互。

无障碍

  • 01

    Slider 根元素通过 aria-label 或 aria-labelledby 提供组合名称,thumbLabels 则按值的顺序为各调节点命名。

  • 02

    Base UI 负责每个 thumb 的 role=slider、当前值、最小值与最大值,以及 Arrow、Page、Home、End 键行为。

  • 03

    单值提供一个名称;范围值应在 thumbLabels 中使用“最小值”“最大值”等可区分的名称。