RangeControls 用于从一系列增量值中进行选择。

设计指南
结构
RangeControl 可以包含以下元素:
- Rail(滑轨):滑轨代表滑块的全部表面积,从用户可选择的最小值到最大值。对于从左到右(LTR)的语言,最小值显示在最左侧,最大值显示在最右侧。对于从右到左(RTL)的语言,此方向相反,最小值显示在最右侧,最大值显示在最左侧。
- Track(轨道):轨道代表从最小值到当前选中值的滑轨部分。
- Thumb(滑块手柄):滑块手柄沿轨道滑动,通过其位置显示选中的值。
- Value entry field(数值输入框):数值输入框显示当前选中的具体数值。
- Icon(图标)(可选):可以在滑块之前或之后显示图标。
- Tick mark(刻度标记)(可选):刻度标记代表用户可以移动滑块到的预定值。
类型
连续滑块
连续滑块允许用户在一个主观范围内选择一个值。它们不显示选中的数值。在显示/编辑数值不重要时使用,例如音量。
离散滑块
离散滑块可以通过引用其数值输入框来调整到特定值。在需要显示/编辑数值时使用,例如文本大小。
可能的选择可以通过使用刻度标记来组织,滑块手柄会吸附到这些刻度标记上(或者输入值会四舍五入到这些刻度标记上)。
行为
- Click and drag(点击并拖拽):通过点击滑块手柄并拖拽来控制滑块。
- Click jump(点击跳转):通过点击轨道来控制滑块。
- Click and arrow(点击并使用方向键):通过点击滑块手柄,然后使用方向键移动它来控制滑块。
- Tab and arrow(Tab 键并使用方向键):通过使用 Tab 键选择所需滑块的滑块手柄,然后使用方向键移动它来控制滑块。
- Value entry field(数值输入框):离散滑块具有数值输入框。输入文本后,滑块位置会自动更新以反映新值。
- Tick marks(刻度标记)(可选)离散滑块可以在滑块轨道上使用均匀分布的刻度标记,并且滑块手柄会吸附到它们。每个刻度标记应以用户可察觉的增量改变设置。
用法
RangeControls 沿轨道反映一系列值,用户可以从中选择一个单一值。它们非常适合调整音量、透明度或文本大小等设置。
RangeControls 可以在轨道的两端带有反映一系列值的图标。
即时效果
使用 RangeControls 进行的更改是即时的,允许用户进行调整直到找到他们的偏好。它们不应与提供反馈有延迟的设置配对。

不要
如果效果不是即时的,请不要使用 RangeControls。
当前状态
RangeControls 反映它们所控制设置的当前状态。
值

一个具有可编辑数值的 RangeControl
Editable numeric values(可编辑数值):可编辑数值允许用户设置 RangeControl 的确切值。设置值后,滑块手柄位置会立即更新以匹配新值。

不要
RangeControls 仅应用于从一系列值中选择(例如,如果只有 2 个值,请不要使用 RangeControl)。

不要
RangeControls 应提供用户可供选择的所有范围(例如,不要禁用 RangeControl 的一部分)。
开发指南
用法
渲染 RangeControl 以从一系列增量值中进行选择。
import { useState } from 'react';
import { RangeControl } from '@wordpress/components';
const MyRangeControl = () => {
const [ columns, setColumns ] = useState( 2 );
return (
<RangeControl
label="Columns"
value={ columns }
onChange={ ( value ) => setColumns( value ) }
min={ 2 }
max={ 10 }
/>
);
};
Props
组件接受的 props 集合将在下面指定。
未包含在此集合中的 props 将应用于输入元素。
afterIcon: string|Function|Component|null
如果添加了此属性,将在滑块之后渲染一个 Icon component,其图标等于 afterIcon。
有关 IconType 的更多信息,请参阅 Icon component。
- Required: No
- Platform: Web
allowReset: boolean
如果此属性为 true,则渲染一个重置滑块的按钮。
- Required: No
- Default:
false - Platform: Web | Mobile
beforeIcon: string|Function|Component|null
如果添加了此属性,将在滑块之前渲染一个 Icon component,其图标等于 beforeIcon。
有关 IconType 的更多信息,请参阅 Icon component。
- Required: No
- Platform: Web
color: CSSProperties[‘color’]
RangeControl 包装器的 CSS 颜色字符串。
- Required: No
- Platform: Web
currentInput: number
当 value 当前为 undefined 时用作回退的当前输入。
- Required: No
- Platform: Web
disabled: boolean
禁用 input,防止应用新值。
- Required: No
- Platform: Web
help: string|Element
如果添加了此属性,将使用 help 属性作为内容生成帮助文本。
- Required: No
- Platform: Web
hideLabelFromVision: boolean
控制标签是否仅对屏幕阅读器可见。
- Required: No
icon: string
要在滑块旁边及其容器标题上方显示的图标。
- Required: No
- Platform: Mobile
initialPosition: number
滑块起始位置,在未传递 value 时使用。initialPosition 将被限制在提供的 min 和 max prop 值之间。
- Required: No
- Platform: Web | Mobile
isShiftStepEnabled: boolean
作为 prop 传递给 NumberControl 组件,仅当 withInputField 为 true 时适用。如果为 true,当数字输入获得焦点时,按下 UP 或 DOWN 以及 SHIFT 键将使值更改 shiftStep 的值。
- Required: No
label: string
如果添加了此属性,将使用 label 属性作为内容生成标签。
- Required: No
- Platform: Web | Mobile
marks: Array|boolean
渲染 step 刻度的视觉表示。可以通过 Array 提供自定义刻度指示器。
示例:
const marks = [
{
value: 0,
label: '0',
},
{
value: 1,
label: '1',
},
{
value: 8,
label: '8',
},
{
value: 10,
label: '10',
},
];
const MyRangeControl() {
return ( <RangeControl marks={ marks } min={ 0 } max={ 10 } step={ 1 } /> )
}
- Required: No
- Platform: Web
onBlur: FocusEventHandler< HTMLInputElement >
当 RangeControl 输入失去焦点时的回调。
- Required: No
- Platform: Web
onChange: ( value?: number ) => void
接收新值的函数。除非发生重置(由 allowReset 启用),否则该值将小于 max 且大于 min。在这种情况下,该值将是 resetFallbackValue 的值(如果已指定),否则为 undefined。
- Required: No
- Platform: Web | Mobile
onFocus: FocusEventHandler< HTMLInputElement >
当 RangeControl 输入获得焦点时的回调。
- Required: No
- Platform: Web
onMouseLeave: MouseEventHandler< HTMLInputElement >
当鼠标退出 RangeControl 时的回调。
- Required: No
- Platform: Web
onMouseMove: MouseEventHandler< HTMLInputElement >
当鼠标在 RangeControl 内移动时的回调函数。
- 是否必需:否
- 平台:Web
min: number
允许的 value 最小值。
- 是否必需:否
- 默认值:0
- 平台:Web | Mobile
max: number
允许的 value 最大值。
- 是否必需:否
- 默认值:100
- 平台:Web | Mobile
railColor: CSSProperties[ ‘color’ ]
用于自定义轨道元素背景的 CSS 颜色字符串。
- 是否必需:否
- 平台:Web
renderTooltipContent: ( value ) => value
一种自定义渲染的数值 UI 的方法。示例:
const customTooltipContent = value => `${value}%`
const MyRangeControl() {
return (<RangeControl renderTooltipContent={ customTooltipContent } />)
}
- 是否必需:否
- 平台:Web
resetFallbackValue: number
如果点击重置按钮(由 allowReset 启用),则恢复到的值。
- 是否必需:否
- 平台:Web
separatorType: ‘none’ | ‘fullWidth’ | ‘topFullWidth’
定义控件行下方/上方的分隔线是否应禁用或全宽显示。默认情况下,它位于下方,且不包含下划线以覆盖控件图标。
- 是否必需:否
- 平台:Mobile
shiftStep: number
作为属性传递给 NumberControl 组件,仅当 withInputField 和 isShiftStepEnabled 均为 true 且数字输入框处于焦点状态时适用。它是 step 的乘数。
- 是否必需:否
showTooltip: boolean
强制显示或隐藏提示框 UI。当 step 设置为特殊字符串值 any 时,此值会被覆盖为 false。
- 是否必需:否
- 平台:Web
step: number | ‘any’
value 变化的最小幅度。它在验证中也是一个因素,因为 value 必须是 step 的倍数(偏移量为 min)才有效。接受特殊字符串值 any,该值会取消验证约束,并将 withInputField 和 showTooltip 属性覆盖为 false。
- 是否必需:否
- 平台:Web
trackColor: CSSProperties[ ‘color’ ]
用于自定义轨道元素背景的 CSS 颜色字符串。
- 是否必需:否
- 平台:Web
type: string
定义在移动端的底部工作表中,值选择是显示步进器控件还是滑块控件。要使用步进器,请将 type 值设置为 stepper。如果未提供选项,则默认为滑块。
- 是否必需:否
- 平台:Mobile
value: number
范围滑块的当前值。
- 是否必需:否
- 平台:Web | Mobile
withInputField: boolean
确定是否在 RangeControl 旁边渲染 input 数字字段。当 step 设置为特殊字符串值 any 时,此值会被覆盖为 false。
- 是否必需:否
- 平台:Web
相关组件
- 要在文本字段中收集数值输入,请使用
TextControl组件。