Bootstrap scollspy 无法运行

Bootstrap scollspy not functioning

我 运行 在 Bootstrap v5.1 上遇到了 scrollspy 的问题。我正在按照文档中的示例(如下所列)进行操作,但是我无法使其正常工作;滚动时似乎没有任何变化。

当用户在页面上滚动时,根据他们正在查看的部分,我希望导航栏上的相应 link 处于活动状态。

HTML 大纲

<body data-bs-spy="scroll" data-bs-target="#navbar">
    ...
    <nav id="navbar" class="menu">
    <ul class="nav flex-column">
        <li class="nav-item active"><a class="nav-link" href="#about">About me</a></li>
        <li class="nav-item"><a class="nav-link" href="#skills">Skills</a></li>
        <li class="nav-item"><a class="nav-link" href="#services">Services</a></li>
        <li class="nav-item"><a class="nav-link" href="#projects">Projects</a></li>                
    </ul>
    </nav>
    ...
    <section id="about"> ... </section>
    <section id="skills"> ... </section>
    <section id="services"> ... </section>
    <section id="projects"> ... </section>

</body>

看起来您的代码确实有效,只是将 .active class 添加到 .nav-link 锚标记而不是 .nav-item 列表项。

您的 CSS 是针对 li.active 而不是 a.active

.sidebar .nav li a:hover, .sidebar .nav li.active a {
    color: #1d93e4;
    opacity: unset;
}

试试这个:

.sidebar .nav li a:hover, .sidebar .nav li a.active  {
    color: #1d93e4;
    opacity: unset;
}

这里是如何构造导航的示例(在 .nav-link 中使用 .active class)

<ul class="nav">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

https://getbootstrap.com/docs/5.1/components/navs-tabs/#base-nav

或者像这样...

<nav class="nav">
  <a class="nav-link active" aria-current="page" href="#">Active</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link disabled">Disabled</a>
</nav>