Кривое отображение текущего значения range slider-а
Всем привет. Сделал range-slider, и написал код для отображения текущего значения под ползунком. Проблема в том, что блок с текущим значением отображется со смещением. Мне нужно отображение по центру.
const rangeSlider = document.querySelector('.range__slider'),
rangeValue = document.querySelector('.range__value_current');
rangeSlider.addEventListener('input', (e) => {
let value = e.target.value,
max = e.target.max;
rangeValue.style.left = (rangeSlider.offsetWidth / max) * value + 'px';
rangeValue.innerText = value;
});
.range {
background-color: grey;
padding: 40px 0;
}
.range__inner {
position: relative;
padding-bottom: 25px;
width: 100%;
}
.range__value {
position: absolute;
font-size: 12px;
line-height: 14px;
bottom: 0;
}
.range__value_current {
background-color: red;
left: 0;
}
.range__value_min {
left: 0;
}
.range__value_max {
right: 0;
}
.range__slider {
-webkit-appearance: none;
height: 1px;
width: 100%;
background-color: #B6D7E8;
outline: none;
border: none;
}
.range__slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 10px;
height: 10px;
border-radius: 50%;
background: #fff;
cursor: pointer;
}
<div class="range">
<div class="range__inner">
<div class="range__value range__value_current">0</div>
<div class="range__value range__value_min">0</div>
<input class="range__slider" type="range" min="0" max="160" value="0">
<div class="range__value range__value_max">160</div>
</div>
</div>
Источник: Stack Overflow на русском