¥Slider
用于用户在给定范围内选择值的输入框。
import * as React from "react";import { Slider } from "radix-ui";import "./styles.css";const SliderDemo = () => (<form><Slider.Root className="SliderRoot" defaultValue={[50]} max={100} step={1}><Slider.Track className="SliderTrack"><Slider.Range className="SliderRange" /></Slider.Track><Slider.Thumb className="SliderThumb" aria-label="Volume" /></Slider.Root></form>);export default SliderDemo;
Can be controlled or uncontrolled.
Supports multiple thumbs.
Supports a minimum value between thumbs.
Supports touch or click on track to update value.
Supports Right to Left direction.
Full keyboard navigation.
¥Installation
从命令行安装组件。
¥Install the component from your command line.
¥Anatomy
导入所有部分并将它们组合在一起。
¥Import all parts and piece them together.
¥API Reference
¥Root
包含滑块的所有部分。在 form
中使用时,它会为每个缩略图渲染一个 input
,以确保事件正确传播。
¥Contains all the parts of a slider. It will render an input
for each thumb when used within a form
to ensure events propagate correctly.
¥Track
包含 Slider.Range
的轨道。
¥The track that contains the Slider.Range
.
¥Range
范围部分。必须位于 Slider.Track
内部。
¥The range part. Must live inside Slider.Track
.
¥Thumb
一个可拖动的缩略图。你可以渲染多个缩略图。
¥A draggable thumb. You can render multiple thumbs.
¥Examples
¥Vertical orientation
使用 orientation
属性创建垂直滑块。
¥Use the orientation
prop to create a vertical slider.
¥Create a range
添加多个滑块和值以创建范围滑块。
¥Add multiple thumbs and values to create a range slider.
¥Define step size
使用 step
属性增加步进间隔。
¥Use the step
prop to increase the stepping interval.
¥Prevent thumb overlap
使用 minStepsBetweenThumbs
避免缩略图具有相同的值。
¥Use minStepsBetweenThumbs
to avoid thumbs with equal values.
¥Accessibility
遵循 滑块 WAI-ARIA 设计模式。
¥Adheres to the Slider WAI-ARIA design pattern.
¥Keyboard Interactions
¥Custom APIs
通过将原始部分抽象到你自己的组件中来创建你自己的 API。
¥Create your own API by abstracting the primitive parts into your own component.
¥Abstract all parts
此示例抽象了所有 Slider
部分,以便它可以用作自闭合元素。
¥This example abstracts all of the Slider
parts so it can be used as a self closing element.
¥Usage
¥Implementation
¥Caveats
¥Mouse events are not fired
由于我们在实现过程中遇到了 限制 问题,以下示例将无法按预期工作,并且 onMouseDown
和 onMouseUp
事件处理程序将不会被触发:
¥Because of a limitation we faced during implementation, the following example won't work as expected and the onMouseDown
and onMouseUp
event handlers won't be fired:
我们建议改用指针事件(例如 onPointerDown
、onPointerUp
)。无论上述限制如何,这些事件更适合跨平台/设备处理,因为它们适用于所有指针输入类型(鼠标、触摸、手写笔等)。
¥We recommend using pointer events instead (eg. onPointerDown
, onPointerUp
). Regardless of the above limitation, these events are better suited for cross-platform/device handling as they are fired for all pointer input types (mouse, touch, pen, etc.).