You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Bootstrap 4中jQuery实现导航栏粘性失效问题

解决Bootstrap 4导航栏粘性效果失效的问题

嘿,我一眼就看到了几个可能导致你的粘性效果失效的问题,咱们一个个来排查:

1. 最关键的错误:jQuery选择器写错了

你的JS代码里用了$("sticky"),这是在查找名为<sticky>的HTML标签,但你的导航栏是带有sticky类的元素,必须使用类选择器(前面加.)。而且你要给navbar-custom这个核心导航容器添加nav-sticky类,所以更精准的写法是直接选中.navbar-custom:

修正后的JavaScript代码:

// 包裹在DOM就绪事件里,确保导航栏元素已经渲染完成再绑定事件
$(document).ready(function() {
  $(window).scroll(function() {
    var scroll = $(window).scrollTop();
    if (scroll >= 50) {
      $(".navbar-custom").addClass("nav-sticky");
    } else {
      $(".navbar-custom").removeClass("nav-sticky");
    }
  });
});

2. 确认jQuery是否正确加载

Bootstrap的JS组件依赖jQuery,所以要确保:

  • jQuery在Bootstrap JS之前加载
  • 没有加载错误(可以打开浏览器控制台,输入jQuery,如果返回函数说明加载正常)

3. 检查CSS优先级冲突

你的.nav-sticky.navbar-custom样式可能被其他更高优先级的样式覆盖了,比如navbar-light或者媒体查询里的规则。可以通过浏览器开发者工具排查:

  1. 选中导航栏元素
  2. 查看background-color等属性是否被划掉(表示被其他样式覆盖)
  3. 调整CSS选择器优先级,比如改成.nav-sticky.navbar-custom.navbar-light,或者临时添加!important测试(不推荐长期使用,仅用于排查)

4. 确保事件绑定时机正确

如果你的JS代码放在页面头部,可能在导航栏元素还没渲染完成就执行了,导致找不到目标元素。把代码包裹在$(document).ready()里就能解决这个问题,就像上面修正后的代码那样。


附上你提供的完整代码(已修正核心选择器问题):

HTML

<nav class="navbar navbar-expand-lg fixed-top navbar-custom sticky sticky-dark navbar-light">
  <!-- 导航栏内部内容 -->
</nav>

CSS

.nav-item .nav-link {
 display: inline-block;
 color: #343a40;
 text-decoration: none;
}
.navbar-custom {
 padding: 14px 0px;
 width: 100%;
 border-radius: 0px;
 z-index: 999;
 margin-bottom: 0px;
 -webkit-transition: all 0.5s ease-in-out;
 transition: all 0.5s ease-in-out;
 background-color: transparent;
}
.navbar-custom .logo .logo-dark {
 display: none;
}
.navbar-custom .logo .ligo-light {
 display: inline-block;
}
.navbar-custom .navbar-nav li a {
 line-height: 26px;
 color: rgba(255, 255, 255, 0.7);
 font-size: 15px;
 font-weight: 600;
 -webkit-transition: all 0.3s;
 transition: all 0.3s;
 background-color: transparent !important;
 padding: 6px 0;
 margin: 0 20px;
}
.navbar-custom .navbar-nav li .nav-link {
 padding-right: 0px;
 padding-left: 0px;
}
.navbar-custom .navbar-nav li.active a, .navbar-custom .navbar-nav li a:hover, .navbar-custom .navbar-nav li a:active {
 color: #fff !important;
}
.navbar-custom .navbar-toggles {
 padding: .25rem .75rem;
 font-size: 18px;
 background: 0 0;
 border: 1px solid transparent;
 color: #fff;
 outline: 0;
}
.navbar-toggler {
 font-size: 24px;
 margin-top: 5px;
 margin-bottom: 0px;
 color: #fff;
}
.nav .open > a, .nav .open > a:focus, .nav .open > a:hover {
 background-color: transparent;
 border-color: #5e62ff;
}
.menu-toggle {
 padding: 4.5px 10px !important;
}
.menu-toggle span {
 line-height: 27px;
}
/*----- Navbar Sticky -----*/
.nav-sticky.navbar-custom {
 margin-top: 0px;
 background-color: #ffffff;
 -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.06);
 box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.06);
 color: #000000 !important;
}
.nav-sticky.navbar-custom .navbar-toggles {
 padding: .25rem .75rem;
 border: 1px solid transparent;
 outline: 0;
}
.nav-sticky.navbar-custom .navbar-nav {
 margin-top: 0px;
}
.nav-sticky.navbar-custom .navbar-nav li a {
 color: #8a8aa0 !important;
}
.nav-sticky.navbar-custom .navbar-nav li.active a, .nav-sticky.navbar-custom .navbar-nav li a:hover, .nav-sticky.navbar-custom .navbar-nav li a:active {
 color: #5e62ff !important;
}
.nav-sticky .logo .logo-dark {
 display: inline-block !important;
}
.nav-sticky .logo .logo-light {
 display: none !important;
}
.navbar-toggler:focus {
 outline: none;
}
.navbar-light .navbar-nav li a {
 color: #8a8aa0 !important;
}
.navbar-light .navbar-nav li.active a, .navbar-light .navbar-nav li a:hover, .navbar-light .navbar-nav li a:active {
 color: #5e62ff !important;
}
@media (min-width: 200px) and (max-width: 768px) {
 .navbar-custom {
  margin-top: 0px;
  background-color: #ffffff !important;
  -webkit-box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
  color: #ffffff !important;
 }
 .navbar-custom .navbar-nav {
  margin-top: 0px;
 }
 .navbar-custom .navbar-nav li a {
  -webkit-transition: all 0.4s;
  transition: all 0.4s;
  color: #9b9bae !important;
  margin: 0px;
 }
 .navbar-custom .navbar-nav li.active a {
  border-color: transparent;
 }
 .navbar-custom .navbar-nav li.active a, .navbar-custom .navbar-nav li a:hover, .navbar-custom .navbar-nav li a:active {
  color: #5e62ff !important;
 }
 .navbar-custom > .container {
  width: 90%;
 }
 .navbar-custom .logo .logo-dark {
  display: inline-block !important;
 }
 .navbar-custom .logo .logo-light {
  display: none !important;
 }
 .navbar-custom.navbar-light .navbar-nav li.active a, .navbar-custom.navbar-light .navbar-nav li a:hover, .navbar-custom.navbar-light .navbar-nav li a:active {
  color: #343a40 !important;
 }
 .navbar-toggler {
  font-size: 24px;
  margin-top: 0px;
  margin-bottom: 0px;
  color: #343a40;
 }
 .navbar-collapse {
  padding: 0 20px;
 }
 .navbar-light .nav-item .nav-link:after {
  background: #343a40;
 }
}
@media (min-width: 769px) and (max-width: 1024px) {
 .nav-dark .navbar-nav li a {
  color: #9090a5 !important;
 }
 .nav-dark .navbar-nav li.active a, .nav-dark .navbar-nav li a:hover, .nav-dark .navbar-nav li a:active {
  color: #5e62ff !important;
 }
}

内容的提问来源于stack exchange,提问作者user12979140

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 22:07:45