Вы должны добавить фиксированный width
в CSS для правильного выравнивания ваших элементов.
См. Комментарии в этом рабочем фрагменте для других предложений:
(я переместил часть вашего кода, чтобы сделатьФрагмент кода (лучше)
// Modified this to get only one "function", and removed inline JavaScript
var sliders = document.querySelectorAll('.slider');
sliders.forEach(function() {
this.addEventListener("change", function(event) {
var elm = event.target;
sliderText = elm.nextElementSibling.nextElementSibling; // Target the input tag
sliderText.value = elm.getAttribute("prefix") + ' = ' + elm.value;
});
});
#right *[class^="width"] { /* Target all elements starting with "width" in #right */
border: 1px solid #ccc; /* Added to make it visual */
vertical-align: middle; /* Better layout with this */
display: inline-block; /* The widths below won't work without this */
}
.width1 { /* This is what you need */
width: 130px;
}
.width3 { /* You must want to add this too */
width: 30px;
text-align: center;
}
<div id="right">
<label class='width1'>R : [m] :</label>
<span class='width3'>10</span><!-- Modified here -->
<input class="width2 slider" type="range" min="10" max="40" step="0.01" value="10" id="myRange" prefix="R">
<span class='width3'>40</span>
<input class='width4' type="text" value="">
<br />
<label class='width1'>Sf : [mks : m/Pa] :</label>
<span class='width3'>-15</span><!-- Modified here -->
<input class="width2 slider" type="range" min="-15" max="40" step="0.01" value="-9" id="myRange1" prefix="Sf">
<span class='width3'>-9</span>
<input class='width4' type="text" value="">
</div>
Надеюсь, это поможет!