A cross browser customizable and accessible <range-slider> web component.
- Framework agnostic web component (no dependencies)
- Cross browser customizable styling
- Single and multi thumb
- Horizontal and vertical orientations
- Works like a built-in HTML form element (uses ElementInternals)
- Keyboard accessible (use arrow keys)
- Touch friendly
- Follows the ARIA best practices guide on sliders
Install via npm
npm install range-slider-elementImport as ES module
import 'range-slider-element';Or via CDN
<script type="module" src="https://cdn.jsdelivr.net/npm/range-slider-element@2/+esm"></script><range-slider min="0" max="100" step="1" value="50"></range-slider>Make sure to load the base styles exported via range-slider-element/style.css.
Or via CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/range-slider-element@2/dist/range-slider-element.css">minThe minimum permitted value. The default is0.maxThe maximum permitted value. The default is100.stepThe stepping interval. The default is1.valueThe value. The default ismin + (max - min) / 2.dirDirectionality. The default is ltr. Allowed optionsrtl.orientationThe default is horizontal. Allowed optionsvertical.
CSS custom properties
Exposed CSS custom properties scoped within the range-slider element.
--track-size- The track size. The default is0.2rem. Can be overwritten for customization.--thumb-size- The thumb size. The default is1.2rem. Can be overwritten for customization.
DOM selectors
range-slider {}
range-slider [data-track] {}
range-slider [data-track-fill] {}
range-slider [data-thumb] {}
/* Advanced customization */
range-slider [data-runnable-track] {}For examples of how to customize the default styling, check out the docs.
input- Pointer move, value changed. Bubbles.change- Pointer up, key up, value changed. Bubbles.
For examples checkout the CodePen <range-slider> collection.
Distributed under the MIT license. See LICENSE for details.