Не учитываешь в скрипте потом ширину кнопки правой.
Я понаставил везде + 24 в этом выражении between.style.width = (left2 - left1 + 24) + 'px';
и все ок.
Но главный вопрос - зачем это? С таким полотном JS?
Есть же нативный range в html
Каждый тег выполняет свою задачу. HTML существует не один год, и не одна версия.
Да, многие теги уже не актуальны. Вас никто не заставляет использовать все теги - юзайте те что вам удобнее) Соблюдать ли семантику... Ну кто-то соблюдает, кто-то нет.