TAG
CSS
JavaScript
Result
Run
License
<fieldset> <legend>Set</legend> <dl> <dt>Min</dt> <dd><input type="number" id="min" value="0" min="0" max="9" /></dd> <dt>Max</dt> <dd><input type="number" id="max" value="10" min="1" /></dd> <dt>Step</dt> <dd><input type="number" id="step" value="1" min="1" max="10" /></dd> </dl> </fieldset> <div class="range-wrap"> <span data-min="0" data-max="10"> <input type="range" id="range" value="0" min="0" max="10" step="1" /> </span> <output>0</output> </div>
.range-wrap { margin-top: 20px; padding: 20px 5px; background-color: #f7f7f7; } .range-wrap > span { position: relative; } .range-wrap > span::before { content: attr(data-min); position: absolute; bottom: -15px; } .range-wrap > span::after { content: attr(data-max); position: absolute; bottom: -15px; right: 3px; } .range-wrap > output { font-weight: bold; font-size: 20px; }
document.addEventListener("DOMContentLoaded", () => { const $elInputRange = document.getElementById("range"); const $aElInputNum = document.querySelectorAll("input[type='number']"); $aElInputNum.forEach(elInput => elInput.addEventListener("input", setRange)); function setRange(e) { let val = Number(e.currentTarget.value); let curMin = Number($elInputRange.min); let curMax = Number($elInputRange.max); switch(e.currentTarget.id) { case "min": if(curMax > val) { $elInputRange.min = val; $elInputRange.value = val; $elInputRange.parentElement.nextElementSibling.textContent = val; $elInputRange.parentElement.dataset.min = val; $aElInputNum[1].min = val + 1; } $aElInputNum[2].min = 1; $aElInputNum[2].max = Number($elInputRange.max) - Number($elInputRange.min); break; case "max": if(curMin < val) { $elInputRange.max = val; $elInputRange.parentElement.dataset.max = val; $aElInputNum[0].max = val - 1; } $aElInputNum[2].min = 1; $aElInputNum[2].max = Number($elInputRange.max) - Number($elInputRange.min); break; case "step": $elInputRange.step = val; } } $elInputRange.addEventListener("input", e => { let val = e.currentTarget.value; e.currentTarget.parentElement.nextElementSibling.textContent = val; }); });
Console
expand_less
License
License
by DevDic
Close