Rainbow Range Slider
Home
Snippets
Rainbow Range Slider
HTML
CSS
JS
<span class="range-wrapper" id="rangeWrapper" style="--progress: 50%;"> <input id="range" value="50" min="0" max="100" type="range" /> </span>
body { display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #161616; padding: 0; margin: 0; } .range-wrapper { position: relative; z-index: 0; top: -0.6rem; height: 0.25rem; } .range-wrapper::before { content: ""; position: absolute; top: -0.5rem; right: 0; width: calc(100% - var(--progress)); height: 2rem; background: rgba(22, 22, 22, 0.7); border-radius: 999px; } .range-wrapper::after { content: ""; position: absolute; top: 0.6rem; left: 0; z-index: -1; width: var(--progress); height: 100%; border-radius: 999px; background: linear-gradient(90deg, #ff0000, #ff7700, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff); filter: blur(12px); } input[type="range"] { width: 20rem; height: 0.25rem; background-color: transparent; appearance: none; border-bottom: 2px solid #161616; border-radius: 999px; } input[type="range"]::-webkit-slider-runnable-track { border-radius: 999px; height: 0.25rem; background: linear-gradient(90deg, #ff0000, #ff7700, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff); } input[type="range"]::-webkit-slider-thumb { appearance: none; position: relative; z-index: 1; top: -0.4rem; width: 1rem; height: 1rem; border: 1px solid #161616; border-bottom: 2px solid #161616; border-radius: 50%; background: linear-gradient(90deg, #ff0000, #ff7700, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff); background-size: 10000% 100%; transition: box-shadow 0.5s ease; cursor: pointer; } input[type="range"]::-webkit-slider-thumb:hover { box-shadow: 0 0 0.5rem rgba(255, 255, 255, 0.8); }
const rangeWrapper = document.getElementById("rangeWrapper"); const range = document.getElementById("range"); range.addEventListener("input", (e) => { rangeWrapper.style = `--progress: ${range.value}%`; });
Ad #1
Ad #2
Scroll to Top