zarm
Version:
基于 React 的移动端UI库
125 lines (107 loc) • 4.83 kB
Markdown
# Slider 滑动输入条
## 基本用法
```jsx
import { useState } from 'react';
import { List, Slider } from 'zarm';
const Demo = () => {
const [value, setValue] = useState(0);
return (
<List>
<List.Item title="普通">
<Slider value={value} onChange={setValue} onSlideChange={(value) => console.log(value)} />
</List.Item>
<List.Item title="设置默认值">
<Slider defaultValue={20} />
</List.Item>
<List.Item title="设置上下限">
<Slider min={-100} max={100} defaultValue={0} />
</List.Item>
<List.Item title="禁用状态">
<Slider disabled defaultValue={20} />
</List.Item>
</List>
);
};
ReactDOM.render(<Demo />, mountNode);
```
## 刻度与标记
```jsx
import { List, Slider } from 'zarm';
const MARKS = {
0: '0°C',
26: '26°C',
65: '65°C',
100: '100°C',
};
ReactDOM.render(
<List>
<List.Item title="显示刻度">
<Slider marks={MARKS} />
</List.Item>
<List.Item title="显示标记" style={{ height: 70 }}>
<Slider showMark marks={MARKS} />
</List.Item>
<List.Item title="步长为10" style={{ height: 70 }}>
<Slider showMark step={10} marks={MARKS} />
</List.Item>
<List.Item title="步长为null" style={{ height: 70 }}>
<Slider showMark step={null} marks={MARKS} />
</List.Item>
</List>,
mountNode,
);
```
## 方向
```jsx
import { List, Slider } from 'zarm';
const MARKS = {
0: '0°C',
26: '26°C',
65: '65°C',
100: '100°C',
};
ReactDOM.render(
<List>
<List.Item title="垂直方向">
<div style={{ height: 200, margin: '15px 0' }}>
<Slider vertical showMark marks={MARKS} />
</div>
</List.Item>
</List>,
mountNode,
);
```
## API
| 属性 | 类型 | 默认值 | 说明 |
| :------------ | :--------------------------------- | :----- | :----------------------- |
| value | number | - | 值 |
| defaultValue | number | - | 初始值 |
| min | number | 0 | 最小值 |
| max | number | 100 | 最大值 |
| disabled | boolean | false | 是否禁用 |
| step | number | 1 | 步长 |
| vertical | boolean | false | 是否为纵向 |
| showMark | boolean | false | 是否显示标记刻度 |
| marks | { [key: number]: React.ReactNode } | {} | 自定义标记刻度的渲染展示 |
| onSlideChange | (value: number) => void | - | 滑动时触发的回调函数 |
| onChange | (value: number) => void | - | 值变化时触发的回调函数 |
## CSS 变量
| 属性 | 默认值 | 说明 |
| :------------------------ | :----------------------------- | :--------------------- |
| --line-size | '4px' | 轨道线宽度 |
| --line-border-radius | '2px' | 轨道线圆角大小 |
| --line-background | 'rgba(120, 120, 128, 0.2)' | 轨道背景色 |
| --line-active-background | 'var(--za-theme-primary)' | 轨道激活状态背景色 |
| --dot-size | '10px' | 刻度圆点大小 |
| --dot-background | 'var(--za-background-color)' | 刻度圆点背景 |
| --dot-border-color | 'rgba(120, 120, 128, 0.2)' | 刻度圆点边框色 |
| --dot-border-width | '2px' | 刻度圆点边框宽度 |
| --dot-active-border-color | 'var(--za-theme-primary)' | 刻度圆点激活状态边框色 |
| --knob-size | '24px' | 把手尺寸 |
| --knob-size-small | '16px' | 小型号把手尺寸 |
| --knob-background | '#fff' | 把手背景色 |
| --knob-box-shadow | '0 1px 3px rgba(0, 0, 0, 0.4)' | 把手阴影 |
| --mark-font-size | '14px' | 标记字体大小 |
| --mark-text-color | 'var(--za-theme-primary)' | 标记字体颜色 |
| --mark-spacing | '15px' | 标记与轨道的间距 |
| --disabled-opacity | 'var(--za-opacity-disabled)' | 禁用不透明度 |