Double Range Slider | HTML, CSS, Javascript

HTML
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@500&display=swap" rel="stylesheet"/>

<div class="wrapper">
    <div class="values">
        <span id="range1">0</span>
        <span>&dash;</span>
        <span id="range2">100</span>
    </div>
    <div class="container">
        <div class="slider-track"></div>
        <input type="range" min="0" max="100" value="30" id="slider-1" oninput="slideOne()">
        <input type="range" min="0" max="100" value="70" id="slider-2" oninput="slideTwo()">
    </div>
</div>
CSS
*,
*:before,
*:after{
    padding:0;
    margin:0;
    box-sizing:border-box;
    font-family:"Poppins",sans-serif;
}
body{
    height:100vh;
    display:-ms-grid;
    display:grid;
    background-color:#3264fe;
    place-items:center;
}
.wrapper{
    position:relative;
    width:95vmin;
    background-color:#ffffff;
    padding:50px 40px 20px 40px;
}
.container{
    position:relative;
    width:100%;
    height:100px;
    margin-top:30px;
}
input[type="range"]{
    -webkit-appearance:none;
    -moz-appearance:none;
    appearance:none;
    width:100%;
    outline:none;
    position:absolute;
    margin:auto;
    top:0;
    bottom:0;
    background-color:transparent;
    pointer-events:none;
}
.slider-track{
    width:100%;
    height:5px;
    background-color:#d5d5d5;
    position:absolute;
    margin:auto;
    top:0;
    bottom:0;
    border-radius:5px;
}
input[type="range"]::-webkit-slider-runnable-track{
    -webkit-appearance:none;
    height:5px;
}
input[type="range"]::-moz-range-track{
    -moz-appearance:none;
    height:5px;
}
input[type="range"]::-ms-track{
    appearance:none;
    height:5px;
}
input[type="range"]::-webkit-slider-thumb{
    -webkit-appearance:none;
    height:1.7em;
    width:1.7em;
    background-color:#3264fe;
    cursor:pointer;
    border-radius:10px;
    pointer-events:auto;
    margin-top:-9px;
}
input[type="range"]::-moz-range-thumb{
    -webkit-appearance:none;
    height:1.7em;
    width:1.7em;
    cursor:pointer;
    border-radius:50%;
    background-color:#3264fe;
}
input[type="range"]::-ms-thumb{
    appearance:none;
    height:1.7em;
    width:1.7em;
    cursor:pointer;
    border-radius:50%;
    background-color:#3264fe;
    pointer-events:auto;
}
input[type="range"]::active::-webkit-slider-thumb{
    background-color:#ffffff;
    border:3px solid #3264fe;
}
.values{
    background-color:#3264fe;
    width:32%;
    position:relative;
    margin:auto;
    padding:10px 0;
    border-radius:5px;
    text-align:center;
    font-size:25px;
    color:#ffffff;
}
.values:before{
    content:"";
    position:absolute;
    height:0;
    width:0;
    border-top:15px solid #3264fe;
    border-left:15px solid transparent;
    border-right:15px solid transparent;
    margin:auto;
    bottom:-14px;
    left:0;
    right:0;
}
JS
window.onload = function(){
    slideOne();
    slideTwo();
}

let sliderOne = document.getElementById("slider-1");
let sliderTwo = document.getElementById("slider-2");
let displayValOne = document.getElementById("range1");
let displayValTwo = document.getElementById("range2");
let minGap = 5;
let sliderTrack = document.querySelector(".slider-track");
let sliderMaxValue = document.getElementById("slider-1").max;

function slideOne(){
    if(parseInt(sliderTwo.value) - parseInt(sliderOne.value) <= minGap){
        sliderOne.value = parseInt(sliderTwo.value) - minGap;
    }
    displayValOne.textContent = sliderOne.value;
}
function slideTwo(){
    if(parseInt(sliderTwo.value) - parseInt(sliderOne.value) <= minGap){
        sliderTwo.value = parseInt(sliderOne.value) + minGap;
    }
    displayValTwo.textContent = sliderTwo.value;
}


/*
    All the credits : https://www.youtube.com/watch?v=DfSYmk_6vk8
*/

Autor: Leonard

Publicado: 06/08/2022

Compartir Elemento Web

Donar a Compositu
Otras formas de ayudar
  • Compártelo en tus redes sociales.
  • Recomienda los elementos.
  • Regístrate Aquí
  • Deja tu comentario agradeciendo el aporte.

Descarga el código completo del Elemento Web y archivos necesarios (imágenes, librerias, plugins, frameword, etc)

Deja tu comentario