【问题标题】:Fixed navigation after scroll and CSS classes toggle修复滚动和 CSS 类切换后的导航
【发布时间】:2014-10-09 00:55:17
【问题描述】:

我创建了一个简单的网页布局。你可以在这里找到它:http://jsfiddle.net/gUWdJ/1129/

在用户向下滚动到某个点后,我设法创建了固定导航。我一直在努力实现的是在用户从一个部分移动到另一个部分时为每个列表项分配一个class="active"

当导航固定在视口顶部时,我希望将 class="active" 添加到第一个列表项中

<li>
   <a href="#something" class="active">something</a>
</li>

然后当我向下移动页面时,class="active" 被删除,然后添加到下一个列表项中。

我找到了一些可以做到这一点的插件,但事实是我还没有设法将它们集成到我的项目中。另外,由于我对jQuery非常陌生,所以对代码看不懂。

我还发现了这个http://jsfiddle.net/gUWdJ/3/,它再次很难集成..

那么,你的建议是什么?

提前谢谢你

【问题讨论】:

    标签: jquery scroll css-position


    【解决方案1】:

    我更新了你的fiddle 以包含一个新的 javascript 块,它根据你给出的示例小提琴处理菜单选项的突出显示。

    我添加的块是:

    $(".main-content section").each(function(i) { if ($(this).position().top <= windscroll - hdr + 20) { mn.find('a.active').removeClass('active'); mn.find('a').eq(i).addClass('active'); } });

    这将遍历您有菜单选项的每个部分并检查窗口的滚动。在减去标题的高度并添加一些填充后,该数字将与页面上元素的位置进行比较。如果滚动大于位置,则将菜单元素标记为活动。

    请记住,由于这些部分相当小,最后几个部分可能不会突出显示,因为您无法向下滚动那么远。

    【讨论】:

    • 这很好用,我可以说我明白你在那里做了什么......有点:|唯一的问题是,当我单击第一个列表项时,它会滚动到正确的位置,但不会突出显示。它需要向下滚动一两个像素。这是为什么?关于我知道的部分的高度。
    • 当您单击“服务”链接时,页面会滚动到“main-nav--scrolled”应用于菜单之前的位置,从而导致背景颜色发生变化。如果您检查“服务”链接,您可以看到元素上的“活动”类,但由于导航不是暗的,因此白色突出显示不显示。
    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多