noUI Slider
Using HTML5 input elements
=============
    HTML
=============
<div class="container">
    <div id="html5"></div>
    <br/>
    <div class="row mt-4 mb-4">
        <div class="col-lg-6 mb-3">
            <select id="input-select" class="form-control"></select>
        </div>
        <div class="col-lg-6">
            <input type="number" class="form-control" min="-20" max="40" step="1" id="input-number">
        </div>
    </div>
</div>
                                                
=============
   Javascript
=============
    
var html5Slider = document.getElementById('html5');
noUiSlider.create(html5Slider, {
    start: [ 10, 30 ],
    connect: true,
    tooltips: true,
    range: {
        'min': -20,
        'max': 40
    }
});
                                                Non linear slider
=============
    HTML
=============
<div class="container">
    <div id="nonlinear"></div>
    <br/>
    <div class="row mt-4 mb-4">
         <div class="col-lg-6">
             <span class="example-val" id="lower-value"></span>
         </div>
         <div class="col-lg-6 text-right">
             <span class="example-val" id="upper-value"></span>
         </div>
    </div>
</div>
                                                
=============
   Javascript
=============
    
/*--------Non linear slider----------*/
var nonLinearSlider = document.getElementById('nonlinear');
noUiSlider.create(nonLinearSlider, {
    connect: true,
    behaviour: 'tap',
    tooltips: true,
    start: [ 500, 4000 ],
    range: {
        // Starting at 500, step the value by 500,
        // until 4000 is reached. From there, step by 1000.
        'min': [ 0 ],
        '10%': [ 500, 500 ],
        '50%': [ 4000, 1000 ],
        'max': [ 10000 ]
    }
});
var nodes = [
    document.getElementById('lower-value'), // 0
    document.getElementById('upper-value')  // 1
];
// Display the slider value and how far the handle moved
// from the left edge of the slider.
nonLinearSlider.noUiSlider.on('update', function ( values, handle, unencoded, isTap, positions ) {
    nodes[handle].innerHTML = values[handle] + ' <span class="precentage-val">' + positions[handle].toFixed(2) + '% </span>';
});
                                                Locking sliders together
=============
    HTML
=============
<div class="container">
    <div class="row mb-4">
        <div class="col-lg-12 mb-5">
            <div id="slider1"></div>
            <span class="example-val mt-4 d-inline-block" id="slider1-span"></span>
        </div>
    </div>
    <br/>
    <div class="row mb-0">
        <div class="col-lg-12 mb-5">
            <div id="slider2"></div>
            <span class="example-val mt-4 d-inline-block" id="slider2-span"></span>
        </div>
    </div>
    <div class="row">                                              
        <div class="col-lg-12">
            <button id="lockbutton" class="btn btn-primary mb-4" style="float: right; margin: 20px 0 0;">lock</button>
        </div>
    </div>
</div>
                                        
=============
   Javascript
=============
    
/*-----Locking sliders together-----*/
// setting up button clicks
// Store the locked state and slider values.
var lockedState = false,
    lockedSlider = false,
    lockedValues = [60, 80],
    slider1 = document.getElementById('slider1'),
    slider2 = document.getElementById('slider2'),
    lockButton = document.getElementById('lockbutton'),
    slider1Value = document.getElementById('slider1-span'),
    slider2Value = document.getElementById('slider2-span');
// When the button is clicked, the locked
// state is inverted.
lockButton.addEventListener('click', function(){
    lockedState = !lockedState;
    this.textContent = lockedState ? 'unlock' : 'lock';
});
// cross updating
function crossUpdate ( value, slider ) {
    // If the sliders aren't interlocked, don't
    // cross-update.
    if ( !lockedState ) return;
    // Select whether to increase or decrease
    // the other slider value.
    var a = slider1 === slider ? 0 : 1, b = a ? 0 : 1;
    // Offset the slider value.
    value -= lockedValues[b] - lockedValues[a];
    // Set the value
    slider.noUiSlider.set(value);
}
// initializing silders
noUiSlider.create(slider1, {
    start: 60,
    // Disable animation on value-setting,
    // so the sliders respond immediately.
    animate: false,
    tooltips: true,
    range: {
        min: 50,
        max: 100
    }
});
noUiSlider.create(slider2, {
    start: 80,
    animate: false,
    tooltips: true,
    range: {
        min: 50,
        max: 100
    }
});
slider1.noUiSlider.on('update', function( values, handle ){
    slider1Value.innerHTML = values[handle];
});
slider2.noUiSlider.on('update', function( values, handle ){
    slider2Value.innerHTML = values[handle];
});
// linking sliders together
function setLockedValues ( ) {
    lockedValues = [
        Number(slider1.noUiSlider.get()),
        Number(slider2.noUiSlider.get())
    ];
}
slider1.noUiSlider.on('change', setLockedValues);
slider2.noUiSlider.on('change', setLockedValues);
// The value will be send to the other slider,
// using a custom function as the serialization
// method. The function uses the global 'lockedState'
// variable to decide whether the other slider is updated.
slider1.noUiSlider.on('slide', function( values, handle ){
    crossUpdate(values[handle], slider2);
});
                                        Javascript Range Slider
Postion : Top-Left
0 %
                                        
                                    
<div class="custom-progress progress-up" style="width: 100%">
    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div>
    <input type="range" class="form-range progress-range-counter" id="customRange1">
</div>
                                        Postion : Top-Right
0 %
                                        
                                    
<div class="custom-progress top-right progress-up" style="width: 100%">
    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div>
    <input type="range" class="form-range progress-range-counter" id="customRange2">
</div>
                                        Postion : Bottom-Left
0 %
                                    
<div class="custom-progress progress-down" style="width: 100%">
    <input type="range" class="form-range progress-range-counter" id="customRange3">
    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div>
</div>
                                        Postion : Bottom-Right
0 %
                                    
<div class="custom-progress bottom-right progress-down" style="width: 100%">
    <input type="range" class="form-range progress-range-counter" id="customRange4">
    <div class="range-count"><span class="range-count-number" data-rangecountnumber="0">0</span> <span class="range-count-unit">%</span></div>
</div>
                                        Copyright © 2022 DesignReset, All rights reserved.
Coded with
 
                                     
                                     
                                    