У меня есть страница, настроенная так:
<div id='container' style='width:670px;height:400px;overflow:hidden'>
<div id='content' style='width:2400px'>
there are images 200px by 200px, 12 across, 12 down
</div></div>
Затем я начал создавать простую горизонтальную полосу прокрутки, например:
HTML:
<div style='position:absolute;left:0px;top:400px;height:20px;width:670px;' id='scrollX_Controls'>
<div style='position:absolute;left:0px;top:0px;width:50px;height:20px;' id='scrollX_Slider' onMouseDown="scrollX_Sliding='on';"></div></div>
JavaScript:
//myX = Mouse X,
if(scrollX_Sliding=='on')
{
document.getElementById('scrollX_Slider').style.left = (myX<=25)?0 + "px":(myX>=670-25)?670-50 + "px":myX -25 + "px"; // sets the slider position within the boundaries.
document.all.container.scrollTop = (((myX-25)/(670))*document.all.content.offsetWidth); // supposed to convert ratio of slider over boundary to scrollLeft over offsetWidth
}
Теперь, предположительно, все работает, за исключением одной вещи, которая меня смущает: полоса прокрутки прокручивается до конца содержимого, прежде чем оно фактически достигнет конца границы
Когда я пыталсядля отладки я обнаружил, что document.all.content.offsetWidth
показало 2400, что правильно, но scrollLeft контейнера был только в 1731, когда прокручивался полностью вправо.Кроме того, я обнаружил, что X (слева) из scrollX_Slider
был только на 483.2px
Сначала я подумал, что это может быть глупой проблемой, когда нужно прокрутить до 2200, чтобы технически быть концом, потому чтоширина одного изображения составляет 200 пикселей, но когда я настроил это, я обнаружил, что это не так.
Почему завершается прокрутка в 1731, когда ширина содержимого 2400?