javascript - 在 JavaScript 中实现粘性导航器时避免不愉快的跳过

标签 javascript jquery html css

我正在尝试向我的博客添加一个粘性导航器,当向下滚动时它将保持在最顶部。很简单,我使用了 jQuery 和 .scrollTop()

$("document").ready(function($){
    /* Sticky Navigation Bar */
    var nav = $('nav');
    $(window).scroll(function () {    
        if ($(this).scrollTop() > 125) {
            nav.addClass("fixed-nav");
        } else {
            nav.removeClass("fixed-nav");
        }
    });
});

使用 fixed-nav 在 CSS 中固定定位

.fixed-nav {
  z-index: 9999;
  position: fixed;
  top: 0;
}

它确实有效(参见 my blog)。尽管如此,我还是遇到了一个小但非常烦人的问题。当您从上向下滚动页面时,您会注意到就在导航栏变为fixed 之前,其下方的内容会向上跳动一点。我知道原因是 fixed 定位将导航器带出流,因此后续内容会跳起来重新填充其位置。但我不知道如何避免这种情况。任何人都可以提出任何想法吗?

最佳答案

一个简单的解决方案是在你的 body 上切换一个 nav-fixed 类,然后将一个 margin-top 添加到你的 #main 静态定位时匹配导航高度的 div。

.nav-fixed nav {
    z-index: 9999;
    position: fixed;
    top: 0;
}

/* Identical to nav's height */
.nav-fixed #main {
    margin-top: 40px;
}

关于javascript - 在 JavaScript 中实现粘性导航器时避免不愉快的跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23154654/

相关文章:

Javascript 回调未在 razor MVC 中执行

javascript - 如何将canvas绘制的图像的url传递给json对象?

javascript - 使用 jquery 为 div 分配样式

javascript - Angular jsonp 回调仅执行一次

javascript - 使用 JS 和 AJAX 提交表单

javascript - 如何防止在 jQuery 函数中重复?

jQuery 对象实例与其他 DOM 节点重用以提高性能

javascript - 仅打开选项卡一次

javascript - Firefox 24 的 JavaScript 版本为 1.5

javascript - 使粘性 div 达到一定程度