noUiSlider
noUiSlider is a range slider without bloat. It offers a ton off features, and it is as small, lightweight and minimal as possible, which is great for mobile use on the many supported devices, including iPhone, iPad, Android devices & Windows (Phone) 8 desktops, tablets and all-in-ones. It works on desktops too, of course!
Single Slider
                            
                            
                            <div id="input-slider"></div>
<div class="form-group">
    <input type="text" class="form-control" id="input-slider-value" />
</div>
                                if($('#input-slider')[0]) {
    var slider = document.getElementById ('input-slider');
    noUiSlider.create (slider, {
        start: [20],
        connect: 'lower',
        range: {
            'min': 0,
            'max': 100
        }
    });
    slider.noUiSlider.on('update', function( values, handle ) {
        document.getElementById('input-slider-value').value = values[handle];
    });
}
                                Range Slider
                            
                            
                            <div id="input-slider-range"></div>
<div class="row form-row">
    <div class="col-6">
        <div class="form-group">
            <input type="text" class="form-control" id="input-slider-range-value-1" />
        </div>
    </div>
    <div class="col-6">
        <div class="form-group">
            <input type="text" class="form-control" id="input-slider-range-value-2" />
        </div>
    </div>
</div>
                                if($('#input-slider-range')[0]) {
    var sliderRange = document.getElementById ('input-slider-range');
    var sliderRangeUpper = document.getElementById('input-slider-range-value-1');
    var sliderRangeLower = document.getElementById('input-slider-range-value-2');
    var sliderRangeInputs = [sliderRangeUpper, sliderRangeLower]
    noUiSlider.create(sliderRange, {
        start: [20, 80],
        connect: true,
        range: {
            'min': 0,
            'max': 100
        }
    });
    sliderRange.noUiSlider.on('update', function( values, handle ) {
        sliderRangeInputs[handle].value = values[handle];
    });
}
                                Files required:
                    | Type | Files | 
|---|---|
| Custom SCSS | /src/scss/inc/vendor-overrides/_nouislider.scss | 
                        
| Javascript | /src/js/vendors/nouislider.js | 
                        
| Library | 
                                /resources/vendors/nouislider/nouislider.min.css
                                /resources/vendors/nouislider/nouislider.min.js
                             |