Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Синхронизировать блок с input[range] (https://javascript.ru/forum/dom-window/57746-sinkhronizirovat-blok-s-input%5Brange%5D.html)

Lemme 18.08.2015 05:55

Синхронизировать блок с 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 код мне не нужен, интересен алгоритм, если уже делали подобное, то поделитесь примером, буду рад подглядеть=)

рони 18.08.2015 08:50

Lemme,
https://learn.javascript.ru/drag-and-drop#слайдер

Lemme 18.08.2015 10:26

рони, о, то, что нужно,спасибо=)


Часовой пояс GMT +3, время: 20:20.