修复了使用按钮滚动到下一个 div

Fix for Scroll to the next div with buttons

所以我有 this code,它允许我在 div 之间滚动 previousnext按钮,脚本运行良好,尽管我试图找到一种方法来解决一个小问题,即当我使用鼠标滚轮或滚动条正常滚动然后返回使用按钮滚动时,按钮将页面滚动到我所在的位置之前使用按钮向左滚动,我希望它继续我所在的位置,例如,如果我使用鼠标滚轮滚动到 div nr.3,我希望它继续滚动到 div nr.4 当我点击下一步按钮时。也许通过创建一个 :visible 语句或其他东西就可以完成这项工作,但我不知道如何编写它。这是代码

$('div.postSection').first();

$('a.display').on('click', function(e) {
    e.preventDefault();

      var t = $(this).attr('id'),
      that = $(this);

    if (t === 'nextButton' && $('.currentPost').next('div.postSection').length > 0) {
        var $next = $('.currentPost').next('.postSection');
        var top = $next.offset().top;

        $('.currentPost').removeClass('currentPost');     
        $(function () {
               $next.addClass('currentPost');
               $('html, body').animate({scrollTop: $('.currentPost').offset().top-55 }, 'slow');

        });
  } else if (t === 'prevButton' && $('.currentPost').prev('div.postSection').length > 0) {
        var $prev = $('.currentPost').prev('.postSection');
        var top = $prev.offset().top;

        $('.currentPost').removeClass('currentPost');

        $(function () {
               $prev.addClass('currentPost');
               $('html, body').animate({scrollTop: $('.currentPost').offset().top-55 }, 'slow');
        });
  } 
});

您可以监控每个项目的滚动并用 class 或数据属性标记它们以跟踪可见或不可见的内容。

或者,我刚刚发现的是一个不错的小选择器扩展,用于在可见区域(视口 - 并以此命名)中获取项目。只需根据 Next 或 Prev 单击获取 first() 或 last() 并使用它。

视口:http://www.appelsiini.net/projects/viewport

扩展的工作方式如下:

$currentPS = $('.postSection:in-viewport').first();

那你就更新下一个和上一个:

var $next = $currentPS.next('.postSection');

var $prev = $currentPS.prev('.postSection');

似乎工作得很好: http://jsfiddle.net/j7e9cogs/2/