Sliders allow users to quickly select a value within a range. They should be used when the upper and lower bounds to the range are invariable.
Sliders should always have a label. In rare cases where context is sufficient and an accessibility expert has reviewed the design, the label could be undefined. These sliders should still include an aria-label in HTML (depending on the context, “aria-label” or “aria-labelledby”).
Labels can be placed either on top or on the side. Top labels are the default and are recommended because they work better with long copy, localization, and responsive layouts. Side labels are most useful when vertical space is limited.
The value is the number selected within the range of the slider. This can have a value unit appended to show the unit of measurement, such as "%" or "px".
The width of a slider can be customized appropriately for its context.
The track of the slider can have a fill. By default, the fill originates from the left side of the track.
If the value represents an offset, the fill start can be set to represent the point of origin. This allows the slider fill to start from inside the track.
A gradient can be added to the track of any slider to give more meaning to the range of values. Tracks with a gradient can also have a fill. A gradient track should not be used for choosing a precise color; use a color slider, color area, or color wheel instead.
In situations where users should be able to precisely input a value, the value can be editable within a text field.
A slider in a disabled state shows that an input exists, but is not available in that circumstance. This can be used to maintain layout continuity and communicate that a slider may become available later.
From the design point of view, each component has a number of options. These options and their names are platform agnostic, and each implementation should adapt these to fit into their framework.
Property | Values | Default Value |
---|---|---|
label | text / nothing | – |
label position | top / side | top |
value | number | 0 |
value unit | text | – |
width | number | – |
has fill | yes / no | no |
fill start | number | 0 |
has gradient | yes / no | no |
is editable | yes / no | no |
is disabled | yes / no | no |
A slider can be navigated using a keyboard. The keyboard focus state takes the slider’s visual hover state and adds a blue ring to the slider handle in focus.
The value follows the placement of the label: on top when the label is on top, and on the side when the label is on the side. There is an exception to this rule when the value is editable, shown within a text field (standard or quiet style); in this case, the editable input is always placed on the side. This editable input should be labelled using "aria-labelledby" or "aria-label" as well.
When the label is too long for the available horizontal space, it wraps to form another line.
In Windows high contrast mode, sliders should be displayed using the high contrast theme-specified colors for buttons. By default, track and handle border colors should be the same as the button text color and labels should use default text color. In hover and keyboard focus states, the track and handle border colors should display as the button border color. In the disabled state, border and text color should display as the disabled color.
Every slider should have a label. A slider without a label is ambiguous and not accessible.
In rare cases where context is sufficient and a label could be absent, make sure to have the design reviewed and approved by an accessibility expert. These should still include an aria-label in HTML (depending on the context, “aria-label” or “aria-labelledby”).
In addition to dragging the handle, sliders can provide more ways to change the value (known as “hot text”) either by clicking on the value text and dragging up/down, or by scrolling up/down while hovering over the value text.
Slider values can be shown with a unit when it helps provide context (e.g., “%” or “px”). When the value is shown within a text field, the unit disappears on focus.
If the value ranges from negative to positive, prefix the value with a plus (+) or minus (-) sign. When the sign is shown within a text field, it remains visible on focus. When the sign is shown outside the text field, there should be a space between the sign and the numerical value for readability.
For RTL (right-to-left) languages, the layout of the slider is mirrored. The label is right-aligned, the value is left-aligned, and the fill progresses from right to left. Keep in mind that the placement of the percent sign differs depending on the locale.
KEY | INTERACTION |
---|---|
Up or Right Arrow | Increases the value |
Down or Left Arrow | Decreases the value |
Date | Number | Notes |
---|---|---|
Apr 13, 2020 | 5.1.1 |
|
Aug 22, 2019 | 5.1.0 |
|
Apr 20, 2019 | 5.0.0 |
|
Includes all interactive states that are applicable (hover, down, focus, keyboard focus, disabled).
Includes relevant options (variant, style, size, orientation, optional iconography, decorations, selection, error state, etc.)
Works properly across all four color themes (lightest, light, dark, darkest).
Includes a desktop scale (UWP, macOS, web desktop) and a mobile scale (iOS, Android, web mobile).
Includes guidelines for layout (wrapping, truncation, overflow), animation, interactions, etc.
Includes a list of dos and don’ts that highlight best practices and common mistakes.
Follows WCAG 2.0 standards for contrast (AA).
Works properly across various locales and includes guidelines for bi-directionality (RTL).
Follows WCAG 2.0 standards for keyboard accessibility guidelines and includes a description of the keyboard interactions.
All design attributes (color, typography, layout, animation, etc.) are included in Spectrum DNA.
Includes a downloadable XD file that has been generated by code and shows multiple variations, states, color themes, and scales.
Component is included in the Spectrum for Adobe XD plugin.