# Slider

Home

## Slider

- Basics
- Options
- Methods
- Events

To add a slider widget to your page, use a standard `input` with the `type="range"` attribute. The input's `value` is used to configure the starting position of the handle and the value is populated in the text input. Specify `min` and `max` attribute values to set the slider's range. If you want to constrain input to specific increments, add the `step` attribute. Set the `value` attribute to define the initial value. The framework will parse these attributes to configure the slider widget. View the data- attribute reference to see all the possible attributes you can add to sliders.

As you drag the slider's handle, the framework will update the native input's value (and vice-versa) so they are always in sync; this ensures that the value is submitted with the form.

Set the `for` attribute of the `label` to match the ID of the `input` so they are semantically associated. It's possible to accessibly hide the label if it's not desired in the page layout, but we require that it is present in the markup for semantic and accessibility reasons.

The framework will find all `input` elements with a `type="range"` and automatically enhance them into a slider with an accompanying input, no need to apply a `data-role` attribute. To prevent the automatic enhancement of this input into a slider, add `data-role="none"` attribute to the `input` and wrap them in a `div` with the `data-role="fieldcontain"` attribute to group them. In this example, the acceptable range is 0-100 and the step increment is 5.

       <label for="slider-0">Input slider:</label>
       <input type="range" name="slider" id="slider-0" value="25" min="0" max="100" step="5" />

The default slider with these settings is displayed like this:

Input slider:

Optionally wrap the slider markup in a container with the `data-role="fieldcontain"` attribute to help visually group it in a longer form. In this example, the `step` attribute is omitted to allow any whole number value to be selected.

    <div data-role="fieldcontain">
       <label for="slider">Input slider:</label>
       <input type="range" name="slider" id="slider" value="25" min="0" max="100"  />
    </div>

The slider is now displayed like this:

Input slider:

Sliders also respond to key commands. Right Arrow, Up Arrow and Page Up keys increase the value; Left Arrow, Down Arrow and Page Down keys decrease it. To move the slider to its minimum or maximum value, use the Home or End key, respectively.

## Calling the slider plugin

This plugin will auto initialize on any page that contains a text `input` with the `type="range"` attribute. However, if needed you can directly call the `slider` plugin on any selector, just like any jQuery plugin:

    $('input').slider();

## Theming the slider

To set the theme swatch for the slider, add a `data-theme` attribute to the `input` which will apply the theme to both the input, handle and track. The track swatch can be set separately by adding the `data-track-theme` attribute to apply the down state version of the selected button swatch.

    <div data-role="fieldcontain">
    	<label for="slider-2">Input slider:</label>
    	<input type="range" name="slider-2" id="slider-2" value="25" min="0" max="100" data-theme="a" data-track-theme="b" />
    </div>

This will produce a themed slider:

Input slider:

### More in this section

- Form elements
- Form basics
- Form element gallery
- Text inputs
- Search input
- Slider
- Flip toggle switch
- Radio buttons
- Checkboxes
- Select menus
- Theming forms
- Native form elements
- Submitting forms