noUiSlider is lightweight JavaScript range slider.
- No dependencies
- All modern browsers and IE9+ are supported
- Fully responsive
- Touch support on Android, iOS and Windows devices
- Tons of examples and answered Stack Overflow questions
noUiSlider is licensed WTFPL. You can use it for free and without any attribution, in any personal or commercial project. You may also fork the project and re-release it under another license you prefer.
An extensive documentation, including examples, options and configuration details, is available here: noUiSlider documentation.
bower install nouislider --save
npm (package)
npm install nouislider --save
- Added: Version number to exceptions;
- Added:
noUiSlider.version
holds current version number; - Added: Throw exception on invalid
pips
configuration (#721); - Added: Merged pull request that uses less preprocessor to generate CSS (#735);
- Fixed: Slider not properly handling multitouch (#700, #704);
- Fixed: Removed a querySelector for the currently active handle (#720);
- Fixed: Removed iOS/webkit flashes on tap;
- Fixed: Incorrect error when using margin/limit with a step smaller than 0 (#736);
- Fixed: Drag option using incorrect cursor arrows (#681);
- Added: New
padding
option (#711); - Added: Re-introduced
.noUi-handle-lower
and.noUi-handle-upper
classes removed in 9.0.0; - Added: Compatibility for legacy
connect
options removed in 9.0.0;
- Added: Support for more than 2 handles;
- Added:
format
option can be updated (#641); - Added:
reset
method the return slider to start values (#673); - Change:
connect
option is now implemented as a separate node; - Change: all event arguments, including the handle number, are now in slider order;
- Change:
updateOptions
now modifies the original options object. The reference inslider.noUiSlider.options
remains up to date (#678); - Change: more events fire when using various
behaviour
options (#664); - Change: on
rtl
sliders, handles are now visually positioned from the slidersright
/bottom
edge; - Change: events for
rtl
sliders now fire in the same order as forltr
sliders (with incremental handleNumbers); - Change: internal
Spectrum
component is no longerdirection
aware; - Change:
limit
andmargin
must be divisible bystep
(if set); - Removed:
.noUi-stacking
class. Handles now stack themselves; Removed(returned in 9.1.0):.noUi-handle-lower
and.noUi-handle-upper
classes;- Removed:
.noUi-background
. Use.noUi-target
instead; Removed(backward compatibility in 9.1.0):connect: 'lower'
andconnect: 'upper'
. These settings are replaced byconnect: [true, false]
;- Fixed: default tooltip color (#687);
- Fixed:
margin
andlimit
calculated improperly after callingupdateOptions
with a newrange
option; - Fixed:
range
option was required in update, even when not updating it (#682); - Fixed: Cursor styling is now consistent for disabled handles and sliders (#644);
- Fixed: Sliders now ignore touches when the screen is touched multiple times (#649, #663, #668);
Devices/browsers tested:
- Surface Pro 3 (Windows 10)
- iPad Air 2 (iOS 9.3)
- iPad 3 (iOS 8.4)
- Moto E (Android 5.1, Chrome)
- Lumia 930 (WP8.1, IE10 mobile)
- Lumia 930 (WM10, Edge)
- OnePlus 3 (Android 6)
- Chrome
- Firefox
- Asus S400C (Windows 10, Touch + mouse)
- Chrome
- Firefox
- Edge
- IE11
- IE10 (Emulated)
- IE9 (Emulated)
This library is UMD compatible, so you can use it in this way:
var noUiSlider = require('nouislider');
var slider = document.getElementById('slider');
noUiSlider.create(slider, {
start: 40,
connect: "lower",
range: {
min: 0,
max: 100
}
});
All major browsers are supported. To support IE8 you'll need to shim several ES5 features.
You can use polyfill.io to easily do so:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<!--[if lte IE 8]>
<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>
<![endif]-->