ОК, я пытаюсь создать пользовательскую прокрутку на моей HTML -странице, используя JavaScript. Моя настройка HTML такая: < /p>
< /code>
и мой файл JavaScript, который управляет этим: < /p>
var mouseBeingPressed = false;
document.addEventListener("mousemove", function(event){
trackScrollBar(event);
});
scrollBar.addEventListener("mousedown", function(){
mouseBeingPressed = true;
});
document.addEventListener("mouseup", function(){
if(mouseBeingPressed == true){
mouseBeingPressed = false;
}
});
function trackScrollBar(e) {
if (mouseBeingPressed == true) {
let x = e.clientX;
let y = e.clientY;
orientScrollbar(x, y);
function orientScrollbar(paramX, paramY) {
scrollBar.style.marginTop = (paramY-scrollBarYPos) + "px";
scrollBarYPos = (scrollBar.getBoundingClientRect().top);
}
}
}
< /code>
Когда я это реализую, я обнаружил, что, перетаскивая панель свитка, он, кажется, движется вверх и вниз по контейнеру прокрутки, но он быстро заставляет сбой вверх и вниз. Я предполагаю, что проблема возникает в функции orientscrollbar. Когда JS обновляет маржинальный турнир прокрутки, обновленная позиция прокрутки не зарегистрирована немедленно. И поэтому старая позиция назначается значению Scrollbarypos (которая является глобальной переменной, которая отслеживает положение прокрутки). Это так? Если да, то как это исправить?
Подробнее здесь: https://stackoverflow.com/questions/794 ... t-position