我怎样才能让我的导航栏在到达它时粘在元素的底部?

How can I make my navbar stick to the bottom of an element upon reaching it?

好的,我正在尝试让我的导航栏固定在页面顶部 25 像素高 header 的底部。我只希望我的导航栏在到达 header.

底部时保持不变(固定 — position: fixed

我设置的CodePen的link可以在下面找到。对于您将看到的所有额外的 CSS 和 JavaScript/jQuery 内容,我深表歉意……不过,这些都是 site/design 的一部分。

当我的导航栏(位于屏幕底部)到达顶部 25px (black-ish) header 的底部时,我无法固定它屏幕。我已经尝试了来自不同地方的 10 多种解决方案,其中 none 对我有用....

http://codepen.io/anon/pen/WrZjWG

试试这个脚本

$(function() {
    var offset = $("#navbar").offset(),
        topPadding = 15;

    $(window).scroll(function() {
        if ($("#sidebar").height() < $(window).height() && $(window).scrollTop() > offset.top) {
            $("#sidebar").stop().animate({
                marginTop: $(window).scrollTop() - offset.top + topPadding
            });
        } else {
            $("#sidebar").stop().animate({
                marginTop: 0
            });
        };
    });
});

您需要做的是在您的导航中添加一个 class,因为您的导航绝对位于 window 中,我们将找到 window 高度并减去您的导航和您拥有的顶部栏,然后从那里添加和删除 classes。以下将起作用:

$(window).on('scroll', function () {
  if ( $(window).scrollTop() >= $(window).height() - 105) {
    $( '#mainNav' ).addClass("scrolled");
  }else{
    $( '#mainNav' ).removeClass("scrolled");
  }
});

那么你的css

#mainNav.scrolled { /* This will only take place when the navbar reaches the set point on the page */
  position: fixed;
  z-index: 99;
  top:25px;
  left:0;
}

通常你会使用 $('div').offset().top 而不是 $(window).height() - 105 但你的导航绝对位于 window 而不是任何相对 div 这将导致不一致的结果所以我们将找到 windows 高度,然后减去导航和顶部栏的高度。现在,一旦导航栏滚动到顶部栏的底部,它就应该固定在正确的位置。这是一个工作代码笔 CodePen

有一个 nacent(在 Firefox、Safari 和 iOS6+ 中受支持;在 Chrome 中开发;在 Edge 中 "under consideration";更多数据在 caniuse.com) CSS 属性 可以这样实现:

position: sticky

还有一些 polyfill 可以模拟 position: sticky 在其他浏览器中的行为:

这些都比上面的几个 hand-rolled 建议可靠得多。

有效!像我在这里所做的那样,在 jquery 中添加 #landingHeaderWrapper 的高度 http://codepen.io/vishnu1212/pen/jWGwop
然后添加一个新的 class 位置 属性 like

.sticky{ postion:fixed;}

使用 AddClass 和 removeClass 函数来切换此 class