滚动到下一部分/课程问题

时间:2017-05-16 07:49:39

标签: javascript jquery html

我正在尝试根据视口滚动到页面上的下一部分。我不想跟踪每个元素以及它们是否已被访问过,因为如果用户决定再次向上滚动,它应该只是滚动到下一部分。因此,为什么我想出了这个解决方案:

https://jsfiddle.net/w28tfnm9/

$("#scroll-down").on("click", function() {
    $(".section").each(function() {
        var isInViewPort = $(this).isInViewport();
        if (isInViewPort) {
            $("html, body").animate({
                scrollTop: $(this).next().offset().top
            }, 500);
            return false;
        }
    });
});

但是,我有一个小问题:它不会滚动到第一个元素。这是有道理的,因为我检查当前元素是否在视口中,然后我滚动到.next()元素,但我无法弄清楚如何解决这个问题,而不会弄乱我已经拥有的内容。有没有更好的办法?

我不是说.next(),而是基本上希望它转到下一个.section元素。由于不保证.next()元素是一个部分,因此这不是一个“好”的解决方案。

1 个答案:

答案 0 :(得分:-1)

所以我最终得到了一个黑客:

https://jsfiddle.net/w28tfnm9/3/

i === 0

我基本上遍历每个元素,如果.get()意味着我在顶部,但由于我试图使用-1来抓取下一个元素,我需要将当前迭代设置为{{ 1}}。就像一个魅力和"重置"当我在第一个元素上方滚动时。