Показать сообщение отдельно
  #1 (permalink)  
Старый 18.08.2015, 05:55
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

Синхронизировать блок с input[range]
В общем, нужно синхронизировать див блок со слайдером (type="range").

Т.е хочу очень сильно кастомизировать слайдер, но понять не могу, каким образом связать эмулятор(блок) со слайдером.

Идея такая:

container - с width: 100%, в нем помещается какой-то блок и, чтоб при его движении/клике в нужную область (и слайдер сдвигался на соответствующий шаг).

Нужно что-то вроде этого, только наоборот

<style>
.container{
    margin: 0 15px;
    position: relative;
    width: 400px;
}
.ctrl{
    position: absolute;
    left: 0;
    top: 0;
    width: 30px;
    height: 30px;
    margin-left: -15px;
    background: #123;
}
</style>

<input type="range" min="1" max="4" step="1">
<div class="container">
    <div class="ctrl"></div>
</div>

<script>
var items = 4,
    step = 100 / items,
    ctrl = document.querySelector('.ctrl'),
    slider = document.querySelector('input');

slider.onchange = function() {
    ctrl.style.left = this.value * step + '%';
}
</script>


p.s код мне не нужен, интересен алгоритм, если уже делали подобное, то поделитесь примером, буду рад подглядеть=)
Ответить с цитированием