Простой, Мне просто хотелось бы, чтобы, когда пользователь перетаскивает элемент, и он достигает самого нижнего или верхнего края области просмотра (10 пикселей или около того) , страница (длиной около 3000 пикселей) плавно прокручивает вниз или вверх, пока не переместит курсор (и, следовательно, перетаскиваемый элемент) из области .
Элементэто тег li, который использует jquery для перетаскивания элементов списка.Чтобы быть конкретным:
Я сейчас используюwindow.scrollBy (x = 0, y = 3) для прокрутки страницы и переменных:
- e.pageY ... предоставляет абсолютные Y-координаты курсора на странице (не относительноscreen)
- $. scrollTop () ... обеспечивает смещение от верхней части страницы (когда полоса прокрутки полностью вверх, это 0)
- $. height () ...предоставляет высоту видимой области в браузере пользователя / окне просмотра
- body.offsetHeight ... высота всей страницы
Как мне этого добиться и какое событие лучше всего подходит для этого (в настоящее время его при наведении курсора)?Мои идеи:
- используйте if / else, чтобы проверить, находится ли он в верхней области или внизу, прокрутите вверх, если e.pageY показывает, что он сверху, вниз, если e.page & находится вbottom, а затем вызывая событие $ ('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);
});