А что там его писать? Поставить блоки в контейнер с overflow-x: scroll и спрятанным скроллбаром, в качестве ползунка - стилизованный input type=range, на oninput вешаете обработчик, чтоб менял scrollLeft в зависимости от величины. Можно скриптом задать input.max=container.scrollWidth-container.clientWidth, тогда можно задавать container.scrollLeft=input.value. А на container повесить обработчик onscroll, и если input не в фокусе (например, в jQuery if $(input).is(':focus') return; - чтоб не срабатывало, когда двигаешь ползунком, а не свайпом, колёсиком, стрелками на клавиатуре), то устанавливать наоборот, input.value=container.scrollLeft. ну, вот собственно и всё. Разве что ещё обработчик на колёсико поставить, чтоб колёсиком прокручивать.. хотя тут тоже осторожно надо, поскольку пользователи прокрутки жестами на тачпаде могут получить не то поведение, которое они ожидали..