Slider
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.


Anatomy#

Options#
Table of options#
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.
Behaviors#

Keyboard focus#
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.

Value placement#
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.

Mixed value#
A slider representing multiple non-identical values appears as indeterminate, with an en dash (–) in place of the value. The handle position corresponds to the first selected value.

Text overflow#
When the label is too long for the available horizontal space, it wraps to form another line.

Double-click to reset#
After a slider has been adjusted, it can be reset to the default value by double-clicking the handle.

Windows high contrast mode#
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.
Usage guidelines#
Include a label#
Every slider should have a label. A slider without a label is ambiguous and not accessible. Write the label in sentence case.




Review label-less designs#
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”).


Allow a hot text option when needed#
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.


Show value units to help provide context#
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.




Prefix positive/negative values#
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.




Internationalization#
Keyboard interactions#
Changelog#
- Updated all colors to 6.0.0
- Added double-click to reset
- Added mixed value
- Added min value, max value, and step options
- Added progression scale option
- Updated keyboard focus state to be more accessible
- Added text overflow behavior
- This component is now individually versioned (individual versions of existing components start at 5.0.0)
- Added RTL (right-to-left) guidelines
Design checklist#

All interactive states
Includes all interactive states that are applicable (hover, down, focus, keyboard focus, disabled).

All color themes
Works properly across all four color themes (lightest, light, dark, darkest).

All platform scales
Includes a desktop scale (UWP, macOS, web desktop) and a mobile scale (iOS, Android, web mobile).

Accessible use of color
Color is not used as the only visual means of conveying information (WCAG 2.0 1.4.1).

Accessible contrast for text
Text has a contrast ratio of at least 4.5:1 for small text and at least 3:1 for large text (WCAG 2.0 1.4.3).

Accessible contrast for UI components
Visual information required to identify components and states (except inactive components) has a contrast ratio of at least 3:1 (WCAG 2.1 1.4.11).

Content design
UI language and information design considerations have been incorporated into component design.

Defined options
Includes relevant options (variant, style, size, orientation, optional iconography, decorations, selection, error state, etc.)

Defined behaviors
Includes guidelines for keyboard focus, layout (wrapping, truncation, overflow), animation, interactions, etc.

Usage guidelines
Includes a list of dos and don'ts that highlight best practices and common mistakes.

Writing guidelines
Includes content standards or usage guidelines for how to write or format in-product content for the component.

Internationalization guidelines
Works properly across various locales and includes guidelines for bi-directionality (RTL).

Keyboard interactions
Follows WCAG 2.0 standards for keyboard accessibility guidelines and includes a description of the keyboard interactions.

Design tokens
All design attributes (color, typography, layout, animation, etc.) are available as design tokens.

UI kit
Includes a downloadable XD file that shows multiple options, states, color themes, and platform scales.

Generated UI kit
Includes a downloadable XD file, generated by code using design tokens defined in Spectrum DNA, and shows multiple options, states, color themes, and platform scales.

In Spectrum for Adobe XD plugin
Component is included in the Spectrum for Adobe XD plugin.