Я не уверен на 100% по описанию, предоставленному OP, поэтому я обрисую в общих чертах то, что Я думаю, что вопрос OP.
Свойство минимального ввода диапазона min
всегда меньше, чем свойство min
ввода максимального диапазона.
Свойство ввода максимального диапазона max
всегда больше, чем свойство max
ввода минимального диапазона.
Чтобы создать это поведение, мы можем использовать атрибут oninput
для настройки свойств min/max
. Значения отображаются тегами <output>
.
<form>
oninput=
// min range max property is at least 1 less than max range max property
minIN.max = maxIN.valueAsNumber-1,
// max range min property is at least 1 more than min range min property
maxIN.min = minIN.valueAsNumber+1,
// displays the difference between min and max
minMax.value = maxIN.valueAsNumber - minIN.valueAsNumber
<input type="range">
oninput=
// The <output> of min and max ranges are synced to react when either one gets user input
// A poor man's two-way data-binding
minOUT.value = this.value,
maxOUT.value = maxIN.value
...
maxOUT.value = this.value,
minOUT.value = minIN.value
:root {
font: 400 16px/1.2 Consolas;
}
label,
input,
output {
display: inline-block;
font: inherit;
height: 1.5rem;
line-height: 1.5rem;
vertical-align: middle;
}
[type=range] {
width: 28.5vw;
}
label b {
display: inline-block;
width: 15vw;
}
.max {
text-align: right;
}
.minMax {
transform: translateY(100%);
text-align: center;
}
<form id='ui' oninput='minIN.max = maxIN.valueAsNumber-1, maxIN.min = minIN.valueAsNumber+1, minMax.value = maxIN.valueAsNumber - minIN.valueAsNumber'>
<label class='min' for='minIN'><b>MIN:
<output id='minOUT' for='minIN'>14</output></b><br>
<input id="minIN" type="range" value="14" min="1" max="19" step="1" oninput="minOUT.value = this.value, maxOUT.value = maxIN.value">
</label>
<label class='minMax' for='minMax'><b>SIZE:
<output id='minMax' for='maxIN minIN'>2</output></b>
</label>
<label class='max' for='maxIN'><b>MAX:
<output id='maxOUT' for='maxIN'>16</output></b><br>
<input id="maxIN" type="range" value="16" min="2" max="20" step="1" oninput="maxOUT.value = this.value, minOUT.value = minIN.value">
</label>
</form>