【问题标题】:How to make a navigation sticky when it reached to another top nav当导航到达另一个顶部导航时如何使导航保持粘性
【发布时间】:2016-10-14 19:08:41
【问题描述】:

我有两个导航,一个在顶部,另一个在内容中。当第二个子菜单到达顶部菜单而不是浏览器的最顶部偏移时,我尝试使第二个子菜单具有粘性。但是当它滚动到顶部时,我没有让它变得粘稠。另外,当活动“href”滚动时,如何在菜单项上添加类。

JSfiddle Here

JS 代码

$(document).ready(function() {
    var $filter = $('.denpen-menu');
    var $filterSpacer = $('<div />', {
        "class": "filter-drop-spacer",
        "height": $filter.outerHeight()
    });

    if ($filter.size())
    {
        $(window).scroll(function ()
        {
            if (!$filter.hasClass('navbar-fixed') && $(window).scrollTop() > $filter.offset().top)
            {
                $filter.before($filterSpacer);
                $filter.addClass("navbar-fixed");
            }
            else if ($filter.hasClass('navbar-fixed')  && $(window).scrollTop() < $filterSpacer.offset().top)
            {
                $filter.removeClass("navbar-fixed");
                $filterSpacer.remove();
            }
        });
    }
});

【问题讨论】:

  • 您希望“辅助导航”在“主导航”向下滚动到它时变得粘滞。当您向上滚动时,当辅助导航到达它之前的位置时,它应该停止粘滞吗?对吗?
  • this 是你的想法吗?
  • 是的,它是正确的!您可以将代码放在 answer 中。滚动时有什么方法可以在活动锚项目上添加一个类
  • 是的,逻辑类似。我会在答案中解释我的逻辑,所以你尝试自己做那部分好吗?
  • 是的,请 :) 感谢您的帮助

标签: javascript jquery css


【解决方案1】:

首先我们应该获取subNav的起始位置并将其存储为"startingPoint"

var startingPoint = $('.stuckMenu').offset().top - 48;

请注意- 48 部分,这大约是我们主导航的高度,并且稍微小一点,以便在触摸时感觉更好。

逻辑的关键部分在这里:

if (!subNav.hasClass('navbar-fixed') && $(window).scrollTop() > startingPoint)
{     
    $filter.addClass("navbar-fixed");
}
else if(subNav.hasClass('navbar-fixed') && $(window).scrollTop() < startingPoint)
{      
    $filter.removeClass("navbar-fixed");
}

我们问的地方:

  1. 我们的 subNav 粘了吗?当前窗口的顶部是否正在触摸它?

    好的,它还没有粘性,但是窗口碰到了它,让它变得粘性 - 固定。

  2. 好的,所以我们的 subNav 是粘性的,窗口顶部是否高于我们的 subNav 的原始位置?

    在上面吗?好的,我不希望它再粘人了,所以我们将删除该类。

Check out the example here

【讨论】:

  • 那里,我希望我解释得足够好。对不起,我花了这么多时间...如果有什么我错过了,请告诉我,我会很乐意解释。
  • 是的,我很理解你的逻辑。谢谢
  • 当菜单的锚点到达或单击时,您能帮我如何在每个菜单项上添加class="active"Example
  • 其实我前段时间发了一个问题,和那个link有关。那里有一个例子,它工作正常。所以也许你可以使用它,甚至更好地改进它。 :)
  • 但不使用引导程序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-17
  • 2019-05-23
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多