使用javascript向下滚动到下一个元素

Posted

技术标签:

【中文标题】使用javascript向下滚动到下一个元素【英文标题】:Scrolling down to the next element with javascript 【发布时间】:2011-04-27 21:33:22 【问题描述】:

我正在我的网站上实现键盘控件,允许用户使用键盘箭头键向下移动到下一个 div(具有“post”类)以及上一个 div。

我可以很好地将一个函数绑定到按键,我只需要一些关于确定哪个 div 是下一个/上一个 div 的 javascript(我正在使用 jquery)的帮助。

重要的是,如果用户使用标准滚动条向下滚动屏幕的一半,下一个项目就是下一个,相对于他们的查看窗口的顶部,所以我知道我需要使用计算下一个/上一个 div用户当前的滚动位置.. 但我对如何做到这一点有点迷茫。

【问题讨论】:

【参考方案1】:

首先,您必须使用$(document).scrollTop() 测试当前滚动条的位置。

完成后,您可以使用$(".post").each() 迭代您的元素,将它们的顶部偏移量与滚动条位置进行比较。如果它低于滚动条,那就是你的下一个元素,所以用return false 跳出循环。

完整示例:

var scrollPosition = $(document).scrollTop(),
    nextPost = 0,
    currentPosition = 0;
$(".post").each(function() 
    currentPosition = $(this).offset().top;
    if (currentPosition > scrollPosition) 
        nextPost = currentPosition;
        return false; // break the loop
    
);
$(document).scrollTop(nextPost); // Scrolls the page to the post

【讨论】:

以上是关于使用javascript向下滚动到下一个元素的主要内容,如果未能解决你的问题,请参考以下文章

无限滚动在向下滚动到下一页时出现模板错误

如何使用 Web 驱动程序采样器(J 表)和 javascript 和 selenium wedriver 向上和向下滚动到任何元素

如何让容器从上到下向下滚动

如何在纯 JavaScript 中平滑滚动到元素

向下滚动时,顶部的菜单栏(Div 元素)仍然存在

无法使用机器人框架向下滚动网页