/********************* basic example **********************/ var slider = document.getElementById('slider'); noUiSlider.create(slider, { start: [20, 80], connect: true, range: { 'min': 0, 'max': 100 } }); /********************* Colorpicker **********************/ var resultElement = document.getElementById('result'); var sliders = document.getElementsByClassName('sliders'); var colors = [0, 0, 0]; [].slice.call(sliders).forEach(function (slider, index) { noUiSlider.create(slider, { start: 127, connect: [true, false], orientation: "vertical", range: { 'min': 0, 'max': 255 }, format: wNumb({ decimals: 0 }) }); // Bind the color changing function to the update event. slider.noUiSlider.on('update', function () { colors[index] = slider.noUiSlider.get(); var color = 'rgb(' + colors.join(',') + ')'; resultElement.style.background = color; resultElement.style.color = color; }); }); /********************* Using HTML5 input elements **********************/ var select = document.getElementById('input-select'); // Append the option elements for (var i = -20; i <= 40; i++) { var option = document.createElement("option"); option.text = i; option.value = i; select.appendChild(option); } var html5Slider = document.getElementById('html5'); noUiSlider.create(html5Slider, { start: [10, 30], connect: true, range: { 'min': -20, 'max': 40 } }); var inputNumber = document.getElementById('input-number'); html5Slider.noUiSlider.on('update', function (values, handle) { var value = values[handle]; if (handle) { inputNumber.value = value; } else { select.value = Math.round(value); } }); select.addEventListener('change', function () { html5Slider.noUiSlider.set([this.value, null]); }); inputNumber.addEventListener('change', function () { html5Slider.noUiSlider.set([null, this.value]); }); /********************* Non linear slider **********************/ var nonLinearSlider = document.getElementById('nonlinear'); noUiSlider.create(nonLinearSlider, { connect: true, behaviour: 'tap', 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] + ', ' + positions[handle].toFixed(2) + '%'; }); /********************* Locking sliders together **********************/ var lockedState = false; var lockedSlider = false; var lockedValues = [60, 80]; var slider1 = document.getElementById('slider1'); var slider2 = document.getElementById('slider2'); var lockButton = document.getElementById('lockbutton'); var slider1Value = document.getElementById('slider1-span'); var 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'; }); 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; // Invert a var b = a ? 0 : 1; // Offset the slider value. value -= lockedValues[b] - lockedValues[a]; // Set the value slider.noUiSlider.set(value); } noUiSlider.create(slider1, { start: 60, // Disable animation on value-setting, // so the sliders respond immediately. animate: false, range: { min: 50, max: 100 } }); noUiSlider.create(slider2, { start: 80, animate: false, 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]; }); function setLockedValues() { lockedValues = [ Number(slider1.noUiSlider.get()), Number(slider2.noUiSlider.get()) ]; } slider1.noUiSlider.on('change', setLockedValues); slider2.noUiSlider.on('change', setLockedValues); slider1.noUiSlider.on('slide', function (values, handle) { crossUpdate(values[handle], slider2); }); slider2.noUiSlider.on('slide', function (values, handle) { crossUpdate(values[handle], slider1); }); /********************* tooltip **********************/ var hidingTooltipSlider = document.getElementById('slider-hide'); noUiSlider.create(hidingTooltipSlider, { range: { min: 0, max: 100 }, start: [20, 80], tooltips: true }); /********************* Colored Connect Elements **********************/ var slider = document.getElementById('slider-color'); noUiSlider.create(slider, { start: [4000, 8000, 12000, 16000], connect: [false, true, true, true, true], range: { 'min': [2000], 'max': [20000] } }); var connect = slider.querySelectorAll('.noUi-connect'); var classes = ['c-1-color', 'c-2-color', 'c-3-color', 'c-4-color', 'c-5-color']; for (var i = 0; i < connect.length; i++) { connect[i].classList.add(classes[i]); } /********************* toggle slider **********************/ var toggleSlider = document.getElementById('slider-toggle'); noUiSlider.create(toggleSlider, { orientation: "vertical", start: 0, range: { 'min': [0, 1], 'max': 1 }, format: wNumb({ decimals: 0 }) }); toggleSlider.noUiSlider.on('update', function (values, handle) { if (values[handle] === '1') { toggleSlider.classList.add('off'); } else { toggleSlider.classList.remove('off'); } }); /********************* Soft limits **********************/ var softSlider = document.getElementById('soft'); noUiSlider.create(softSlider, { start: 50, range: { min: 0, max: 100 }, pips: { mode: 'values', values: [20, 80], density: 4 } }); softSlider.noUiSlider.on('change', function (values, handle) { if (values[handle] < 20) { softSlider.noUiSlider.set(20); } else if (values[handle] > 80) { softSlider.noUiSlider.set(80); } });