Range 区域选择

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

规则

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

  • 一般水平放置。

Common API

属性说明类型默认值
minNumber0最小值
maxNumber100最大值
stepNumber or null1步长,取值必须大于 0,并且可被 (max - min) 整除。当 marks 不为空对象时,可以设置 stepnull,此时 Slider 的可选值仅有 marks 标出来的部分。
valueNumber, Number设置当前取值。
defaultValueNumber, Number0, 0设置初始取值。
disabledBooleanfalse值为 true 时,滑块为禁用状态
onChangeFunctionNoop当 Slider 的值发生改变时,会触发 onChange 事件,并把改变后的值作为参数传入。
onAfterChangeFunctionNoopontouchend 触发时机一致,把当前值作为参数传入。
marksObject{Number:String}{ }刻度标记,key 的类型必须为 Number 且取值在闭区间 min, max
dotsBooleanfalse是否只能拖拽到刻度上
includedBooleantruemarks 不为空对象时有效,值为 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
handleStyleArrayObject滑块的样式,按数组顺序应用到多滑块
trackStyleArrayObject选中部分滑动条的样式,按数组顺序应用到滑动条的多区间
railStyleObject未选中部分

代码演示

基本

Silder with range. When disabled is true, the slider will not be interactable

  1. /* eslint arrow-body-style: 0 */
  2. import { Range, WingBlank, WhiteSpace } from 'antd-mobile';
  3. const App = () => {
  4. const log = (name) => {
  5. return (value) => {
  6. console.log(`${name}: ${value}`);
  7. };
  8. };
  9. return (
  10. <div className="am-slider-example">
  11. <WhiteSpace size="lg" />
  12. <WingBlank size="lg">
  13. <p className="sub-title">Basic range</p>
  14. <Range
  15. style={{ marginLeft: 30, marginRight: 30 }}
  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="sub-title">Disabled range</p>
  26. <Range
  27. style={{ marginLeft: 30, marginRight: 30 }}
  28. min={0}
  29. max={20}
  30. defaultValue={[3, 10]}
  31. onChange={log('change')}
  32. onAfterChange={log('afterChange')}
  33. disabled
  34. />
  35. </WingBlank>
  36. <WhiteSpace size="lg" />
  37. <WingBlank size="lg">
  38. <p className="sub-title">Range with customized style</p>
  39. <Range
  40. style={{ marginLeft: 30, marginRight: 30 }}
  41. min={0}
  42. max={20}
  43. defaultValue={[3, 10]}
  44. onChange={log('change')}
  45. onAfterChange={log('afterChange')}
  46. trackStyle={[{ backgroundColor: 'red' }, { backgroundColor: 'green' }]}
  47. handleStyle={[{ backgroundColor: 'yellow' }, { backgroundColor: 'gray' }]}
  48. railStyle={{ backgroundColor: 'black' }}
  49. />
  50. </WingBlank>
  51. </div>
  52. );
  53. };
  54. ReactDOM.render(<App />, mountNode);
  1. .demo-preview-item .am-slider-wrapper {
  2. margin-bottom: 15px;
  3. }
  4. .demo-preview-item .am-slider-example {
  5. overflow: hidden;
  6. }
  7. .am-wingblank.am-wingblank-lg {
  8. margin-bottom: 30px;
  9. }
  10. .demo-preview-item .am-slider-wrapper:last-child {
  11. margin-bottom: 10px;
  12. }
  13. .sub-title {
  14. color: #888;
  15. font-size: 14px;
  16. padding: 30px 0 18px 0;
  17. margin: 0;
  18. }

Range区域选择 - 图2