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

如何自定义Bootstrap Scrollspy,根据滚动位置修改导航链接颜色?

自定义Bootstrap Scrollspy激活链接颜色

Bootstrap Scrollspy的核心逻辑是:页面滚动到对应锚点区域时,自动给匹配的导航链接添加active类。要修改激活状态的颜色,只需通过CSS覆盖这个类的默认样式即可,具体实现如下:

1. 编写自定义CSS

针对不同类型的导航元素(普通导航链接、下拉菜单链接)分别设置样式,注意选择器优先级要和Bootstrap默认样式匹配,确保能覆盖原有样式:

/* 普通.nav-pills导航的激活链接样式 */
.nav-pills .nav-link.active {
  color: #ff0000; /* 改为红色 */
  /* 可选:修改背景色,默认是主题色,这里设为透明 */
  background-color: transparent;
}

/* 下拉菜单中激活链接的样式 */
.dropdown-menu .dropdown-item.active {
  color: #ff0000; /* 改为红色 */
  /* 可选:自定义背景色 */
  background-color: #f8f9fa;
}

2. 完整代码示例

将自定义CSS放在Bootstrap样式之后,确保优先级生效:

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet"/>
<style>
  .nav-pills .nav-link.active {
    color: #ff0000;
    background-color: transparent;
  }

  .dropdown-menu .dropdown-item.active {
    color: #ff0000;
    background-color: #f8f9fa;
  }
</style>
<nav id="navbar-example2" class="navbar bg-body-tertiary px-3 mb-3">
  <a class="navbar-brand" href="#">Navbar</a>
  <ul class="nav nav-pills">
    <li class="nav-item">
      <a class="nav-link" href="#scrollspyHeading1">First</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#scrollspyHeading2">Second</a>
    </li>
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
      <ul class="dropdown-menu">
        <li><a class="dropdown-item" href="#scrollspyHeading3">Third</a></li>
        <li><a class="dropdown-item" href="#scrollspyHeading4">Fourth</a></li>
        <li>
          <hr class="dropdown-divider">
        </li>
        <li><a class="dropdown-item" href="#scrollspyHeading5">Fifth</a></li>
      </ul>
    </li>
  </ul>
</nav>
<div data-bs-spy="scroll" data-bs-target="#navbar-example2" data-bs-root-margin="0px 0px -40%" data-bs-smooth-scroll="true" class="scrollspy-example bg-body-tertiary p-3 rounded-2" tabindex="0">
  <h4 id="scrollspyHeading1">First heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading2">Second heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading3">Third heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading4">Fourth heading</h4>
  <p>...</p>
  <h4 id="scrollspyHeading5">Fifth heading</h4>
  <p>...</p>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

关键注意事项

  • 自定义CSS必须放在Bootstrap的CSS之后加载,才能覆盖默认样式
  • 如果使用.nav-tabs而非.nav-pills,需将选择器改为.nav-tabs .nav-link.active
  • 尽量避免使用!important,优先通过匹配选择器优先级来覆盖样式,更符合CSS规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:45:30