Slider

Version 6.0.0

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.

Examples of sliders doing slider stuff.Examples of several sliders in a mobile layout.
DateVersionSpectrumApr 06, 20226.0.0DownloadMar 11, 20225.4.0In progressAug 20, 20215.3.0DownloadJun 16, 20215.2.0DownloadApr 13, 20205.1.1DownloadAug 22, 20195.1.0DownloadApr 20, 20195.0.0Download

Anatomy#

Diagram of a Slider's anatomy, including label, track, handle, fill, and value.

Options#

Example of a Slider with a label.

Label#

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”).

Examples showing both top and side label variants of Slider.

Label position#

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.

Two key examples of sliders showing value, min value, max value, and step. First example, opacity. Value, 40. Min value, 0. Max value, 100. Step, 1. Progression scale, linear. Slider label, Opacity. Slider is at 40% opacity. Second example, exposure. Value, 15. Min value, -5. Max value, 5. Step, 0.01. Progression scale, linear. Slider label, Exposure. Exposure is at +1.83.

Value, min value, max value, step#

The value is the number selected within the slider’s range, from the min value to max value.

The min and max values can also be customized appropriately for whatever the slider is showing. By default, the min value starts at 0 and the max value is set to 100.

The step is the increment by which these values increase or decrease. A step value of 1 (the default) lets a user only select whole numbers within the min and max range.

Three key examples of value formats for a slider. First example, label Opacity. Value, 40%. Second example, label Exposure. Value +1.83. Third example, Expense. Value, $20.

Value format#

Sometimes a value needs to be formatted for localization or for clearer communication (e.g., currencies or percentages). Formatting can involve rounding, mathematical transformations, number formatting, or displaying a prefix or suffix (e.g., “+/-” or “px”).

Progression scale#

Sliders use a linear progression scale by default which means that value is directly correlated to the position of the handle along the track. In some cases, sliders can use a logarithmic (log) progression scale, which is helpful when users need finer control over small values.

Examples of Sliders with varying widths.

Width#

The width of a slider can be customized appropriately for its context.

Example of a Slider with a filled track.

Fill#

The track of the slider can have a fill. By default, the fill originates from the left side of the track.

Example of a Slider with the start point of the fill offset.

Fill start#

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.

Example of a Slider with a gradient track fill.

Gradient#

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.

Example of a Slider with an input field for setting precise values.

Editable#

In situations where users should be able to precisely input a value, the value can be editable within a text field.

Example of a disabled Slider.

Disabled#

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.

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.

PropertyValuesDefault Valuelabeltext / nothinglabel positiontop / sidetopvaluenumber (from min to max)min valuenumber0max valuenumber100stepnumber1value format
This will vary depending on implementation.
progression scalelinear / loglinearwidthnumberhas fillyes / nonofill startnumber0has gradientyes / nonois editableyes / nonois disabledyes / nono

Behaviors#

Slider showing size of 24, with handle in focus.

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.

Examples of Sliders with placement of the value following placement of the label.

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.

Examples of two sliders, each with label Opacity and the slider handle positioned at the center of the slider track. The top slider has a non-editable value field. The bottom slider has an editable value field. The value fields for each slider contain an en dash.

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.

Example of a Slider with overflowing label text.

Text overflow#

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

Animation showing a slider with label saturation, value 0. Slider handle is positioned in the center of the slider track. The slider handle is clicked and dragged to the right, stopping when the value reaches 50. The slider handle is then double-clicked and it returns automatically to it’s original position at value 0.

Double-click to reset#

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

Key example of sliders in Windows “high contrast black” theme with label “Slider” and disabled slider with label “Disabled slider” both with value of 0.

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.

Slider (Windows high contrast mode) UI kit

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.

do
Example of a correct Slider that includes a label.
dont
Example of an incorrect Slider which has no label.

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”).

do
Example of a Slider without a label that passed inclusivity review as an exception.

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.

do
Example of a Slider with hot text enabled.

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.

do
Example of a Slider with units included for context.
dont
Example of a confusing Slider that does not include units for context.

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.

do
Examples of Sliders with correct implementation of positive and negative prefixes.
dont
Example of poorly implemented Sliders that are missing positive and negative prefixes.

Internationalization#

RTL#

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.

Keyboard interactions#

KeyInteractionUp or Right ArrowIncreases the valueDown or Left ArrowDecreases the value

Changelog#

DateNumberNotesApr 06, 20226.0.0
  • Updated all colors to 6.0.0
Mar 11, 20225.4.0
  • Added double-click to reset
  • Added mixed value
Aug 20, 20215.3.0
  • Added min value, max value, and step options
Jun 16, 20215.2.0
  • Added progression scale option
Apr 13, 20205.1.1
  • Updated keyboard focus state to be more accessible
Aug 22, 20195.1.0
  • Added text overflow behavior
Apr 20, 20195.0.0
  • This component is now individually versioned (individual versions of existing components start at 5.0.0)
  • Added RTL (right-to-left) guidelines

Design checklist#

check

All interactive states

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

check

All color themes

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

check

All platform scales

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

check

Accessible use of color

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

check

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

unchecked

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

check

Content design

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

check

Defined options

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

check

Defined behaviors

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

check

Usage guidelines

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

check

Writing guidelines

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

check

Internationalization guidelines

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

check

Keyboard interactions

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

check

Design tokens

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

check

UI kit

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

check

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.

check

In Spectrum for Adobe XD plugin

Component is included in the Spectrum for Adobe XD plugin.