Простой, Я просто хотел бы иметь это, когда пользователь перетаскивает элемент, и они достигают самого низа или вершины окна просмотра (10 пикселей или около того), страница (около 3000 пикселей в длину) аккуратно прокручивается вниз или вверх, пока они не перемещают курсор (и, следовательно, элемент, который вытаскивают) из области.
Элемент - это тег li, который использует jquery для перетаскивания элементов списка. Конкретно:
- ../JQuery-UI-1.8.14.custom.min.js
- http://code.jquery.com/jquery-1.6.2.min.js
В настоящее время я использую window.scrollBy(x = 0, y = 3) для прокрутки страницы и переменных:
- e.pageY... обеспечивает абсолютные Y-координаты курсора на странице (не относительно экрана)
- $. scrollTop()... обеспечивает смещение от верхней части страницы (когда полоса прокрутки полностью вверх, она равна 0)
- $. height()... обеспечивает высоту видимой области в пользовательском браузере/окне просмотра
- body.offsetHeight... высота всей страницы
Как я могу достичь этого и какое событие лучше всего подходит для этого (в настоящее время оно находится в наведении курсора мыши)? Мои идеи:
- используйте a if/else, чтобы проверить, находится ли он в верхнем регистре или внизу, прокрутите вверх, если e.pageY показывает, что он находится сверху, вниз, если e.page & находится внизу, а затем вызывает событие $('li'). mouseover(), чтобы выполнить итерацию...
- Используйте цикл do while... это работает умеренно хорошо на самом деле, но его трудно остановить от прокрутки до далекой. Но я не уверен, как контролировать итерации....
Моя последняя попытка:
('li').mouseover(function(e) {
totalHeight = document.body.offsetHeight;
cursor.y = e.pageY;
var papaWindow = window;
var $pxFromTop = $(papaWindow).scrollTop();
var $userScreenHeight = $(papaWindow).height();
var iterate = 0;
do {
papaWindow.scrollBy(0, 2);
iterate++;
console.log(cursor.y, $pxFromTop, $userScreenHeight);
}
while (iterate < 20);
});