В моем текущем решении прокрутить из div в другой div я поддерживаю как previous
, так и next
.Прокрутите до следующего div на клик, от текущего местоположения
Это работает, сохраняя индекс последней прокрутки div, чтобы определить, где прокрутить страницу до следующего. Однако это прерывается, когда пользователи прокручивают свое колесо. Мне было интересно, есть ли способ вычислить, какой div находится ближе всего к верхней части окна, чтобы затем определить, какой индекс прокручивается до следующего.
Это в ответ устранит проблемы, которые у меня возникают.
ошибка Тест с использованием моего текущего решения:
- Перейти к jsfiddle ссылке
- Нажмите стрелку вниз в два раза. Он должен прокручиваться от одного div до следующего.
- Далее, используя колесо на вашей мыши, прокрутите страницу вниз на 3/4 страницы.
- Теперь снова нажмите стрелку вниз. Вы увидите, что он возвращает вас к вершине, где вы в последний раз перестали уходить.
http://jsfiddle.net/JokerMartini/yj9pvz2a/1/
var curr_el_index = 0;
var els_length = $(".section").length;
$('.btnNext').click(function() {
curr_el_index++;
if (curr_el_index >= els_length) curr_el_index = 0;
$("html, body").animate({
scrollTop: $(".section").eq(curr_el_index).offset().top - 20
}, 700);
});
$('.btnPrev').click(function() {
curr_el_index--;
if (curr_el_index < 0) curr_el_index = els_length - 1;
$("html, body").animate({
scrollTop: $(".section").eq(curr_el_index).offset().top - 20
}, 700);
});
Решение Обновлено:http://jsfiddle.net/JokerMartini/82wo9e3c/1/
Это может быть неудачно, если вы прокрутите несколько элементов div сразу. – Aditya
@Aditya, как так? – indubitablee
Просто прокручивается непосредственно от A до J, а затем нажимает стрелку вверх. Пропустил я и пошел прямо к H. Но это решение будет работать почти во всех случаях здесь. – Aditya