Range 区域选择

允许用户在一个区间中选择特定值,eg:控制屏幕的显示亮度。

规则

  • 默认状态下,左边为最小值,右边为最大值。

  • 一般水平放置。

Common API

适用平台:WEB、React-Native
属性说明类型默认值
minNumber0最小值
maxNumber100最大值
stepNumber or null1步长,取值必须大于 0,并且可被 (max - min) 整除。当 marks 不为空对象时,可以设置 stepnull,此时 Slider 的可选值仅有 marks 标出来的部分。
valueNumber, Number设置当前取值。
defaultValueNumber, Number0, 0设置初始取值。
disabledBooleanfalse值为 true 时,滑块为禁用状态
onChangeFunctionNoop当 Slider 的值发生改变时,会触发 onChange 事件,并把改变后的值作为参数传入。
onAfterChangeFunctionNoopontouchend 触发时机一致,把当前值作为参数传入。
marks (web only)Object{Number:String}{ }刻度标记,key 的类型必须为 Number 且取值在闭区间 min, max
dots (web only)Booleanfalse是否只能拖拽到刻度上
included (web only)Booleantruemarks 不为空对象时有效,值为 true 时表示值为包含关系,false 表示并列
countnumber1Determine how many ranges to render, and multiple handles will be rendered (number + 1).
allowCrossbooleantrueallowCross could be set as true to allow those handles to cross.
pushableboolean or numbertruepushable could be set as true to allow pushing of surrounding handles when moving an handle. When set to a number, the number will be the minimum ensured distance between handles. Example: Range区域选择 - 图1
handleStyle(web)ArrayObject滑块的样式,按数组顺序应用到多滑块
trackStyle(web)ArrayObject选中部分滑动条的样式,按数组顺序应用到滑动条的多区间
railStyle(web)Object未选中部分

ToolTip(Web Only)

注:1.0.x 之后将原先的Slider拆分成了Slider, Range, creatToolTip, 以便用户按需加载相应的功能使用, 例如带 tooltipslider 使用方式如下:
  1. import { Range, WingBlank, WhiteSpace, createTooltip } from 'antd-mobile';
  2. const RangeWithTooltip = createTooltip(Range); // High Order Component
  3. <RangeWithTooltip defaultValue={[4, 16]} min={0} max={30} />

代码演示

基本

Silder with range. When disabled is true, the slider will not be interactable, you can use createTooltip to encapsulateto simulate tooltip.

  1. /* eslint arrow-body-style: 0 */
  2. import { Range, WingBlank, WhiteSpace, createTooltip } from 'antd-mobile';
  3. const RangeWithTooltip = createTooltip(Range);
  4. const App = () => {
  5. const log = (name) => {
  6. return (value) => {
  7. console.log(`${name}: ${value}`);
  8. };
  9. };
  10. return (
  11. <div className="am-slider-example">
  12. <WhiteSpace size="lg" />
  13. <WingBlank size="lg">
  14. <p className="title">Basic Range</p>
  15. <Range
  16. min={0}
  17. max={20}
  18. defaultValue={[3, 10]}
  19. onChange={log('change')}
  20. onAfterChange={log('afterChange')}
  21. />
  22. </WingBlank>
  23. <WhiteSpace size="lg" />
  24. <WingBlank size="lg">
  25. <p className="title">Range with Tooltip</p>
  26. <RangeWithTooltip
  27. min={0}
  28. max={20}
  29. defaultValue={[3, 10]}
  30. onChange={log('change')}
  31. onAfterChange={log('afterChange')}
  32. />
  33. </WingBlank>
  34. <WhiteSpace size="lg" />
  35. <WingBlank size="lg">
  36. <p className="title">Disabled Range</p>
  37. <Range
  38. min={0}
  39. max={20}
  40. defaultValue={[3, 10]}
  41. onChange={log('change')}
  42. onAfterChange={log('afterChange')}
  43. disabled
  44. />
  45. </WingBlank>
  46. <WhiteSpace size="lg" />
  47. <WingBlank size="lg">
  48. <p className="title">Range with Customized Style</p>
  49. <Range
  50. min={0}
  51. max={20}
  52. defaultValue={[3, 10]}
  53. onChange={log('change')}
  54. onAfterChange={log('afterChange')}
  55. trackStyle={[{ backgroundColor: 'red' }, { backgroundColor: 'green' }]}
  56. handleStyle={[{ backgroundColor: 'yellow' }, { backgroundColor: 'gray' }]}
  57. railStyle={{ backgroundColor: 'black' }}
  58. />
  59. </WingBlank>
  60. </div>
  61. );
  62. };
  63. ReactDOM.render(<App />, mountNode);
  1. .demo-preview-item .am-slider-wrapper {
  2. margin-bottom: 0.3rem;
  3. }
  4. .demo-preview-item .am-slider-example {
  5. overflow: hidden;
  6. }
  7. .am-wingblank.am-wingblank-lg {
  8. margin-bottom: 0.6rem;
  9. }
  10. .demo-preview-item .am-slider-wrapper:last-child {
  11. margin-bottom: 0.2rem;
  12. }

Range区域选择 - 图2