【问题标题】:bootstrap 4 navigation active link colorbootstrap 4 导航活动链接颜色
【发布时间】:2018-09-20 16:46:16
【问题描述】:

我想将活动菜单链接的颜色更改为绿色。我尝试了各种方法(查看开发者模式从框架应用了哪些规则),但没有奏效。你能建议如何进行吗?我正在使用 Bootstrap 4 和 mdbootstrap。

HTML 代码:

  <nav class="navbar navbar-expand-md navbar-light sticky-top">

    <div id="navcontainer" class="d-flex container py-2 justify-content-center align-items-center">

<!-- Logo+Nev -->
      <div id="nevtitulus" class="d-flex align-items-start mr-lg-5 mr-md-3">
        <div>
          <img id="logo" class="mr-lg-3 mr-2" src="images/DRLJ_logo.png" alt="logo">
        </div>
        <!--logo-->
          <div class="text-center">
            <span id="logoname">Dr. Langmár Judit</span>
            <!-- hide on screens smaller than md -->
            <p id="logodesc" class="d-none d-md-block">Akupunktőr, üzemorvos, orthopaed szakorvos</p>
            <!-- hide on screens wider than sm -->
            <p id="logodesc2" class="d-md-none">Akupunktőr, üzemorvos, <br> orthopaed szakorvos</p>
          </div>
          <!--Nev+titulus-->
      </div> <!--logo+nev container-->

    <div id="hamburger-wrapper" class="ml-5 ml-md-0">

      <div id="button-wrapper" class="d-flex szelesseg justify-content-center">
<!-- hamburger menu -->
        <button class="navbar-toggler" type="button"
            data-toggle="collapse" data-target="#navcollapse" aria-controls="navcollapse"
            aria-expanded="false" aria-label="Toggle Navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
      </div>
<!-- collapse navbar -->
        <div class="collapse navbar-collapse" id="navcollapse">
          <ul class="nav navbar-nav text-center">
            <li class="nav-item"><a class="nav-link" href="#fooldal">Főoldal<span class="sr-only">(current)</span></a></li>
            <li class="nav-item"><a class="nav-link" href="#kezelesek">Kezelések</a></li>
            <li class="nav-item"><a class="nav-link" href="#arak">Árak</a></li>
            <li class="nav-item"><a class="nav-link" href="#galeria">Galéria</a></li>
            <li class="nav-item"><a class="nav-link" href="#rolam">Rólam</a></li>
            <li class="nav-item"><a class="nav-link" href="#kapcsolat">Kapcsolat</a></li>
          </ul>
        </div>
        <!-- collapse navbar -->
      </div>
      <!--hamburger-wrapper-->
    </div>
    <!--Navcontainer-->
    </nav>

到目前为止我尝试过的 CSS 技巧,但没有奏效(只有悬停有效):

.navbar.navbar-light .navbar-nav .nav-item .nav-link:hover {
color: rgb(129, 91, 73);
background-color: rgba(0, 0, 0, 0.1);
}

.navbar-light .navbar-nav .nav-item .nav-link:focus {
  color: #0DB159;
}

.navbar-light .navbar-nav .nav-item:active .nav-link {
  color: #0DB159;
}

#navcollapse a:active {
    color: #0DB159;
}

下面的这个有效,但前提是导航所指的锚标记从正文中删除

.nav.navbar-nav .nav-item .nav-link:focus {
  color: #0DB159
}

我也尝试了这些,但直到锚标签在正文中才起作用......

.nav.navbar-nav .nav-item .nav-link:focus,
.nav.navbar-nav .nav-item:focus,
.nav.navbar-nav .nav-item a:focus,
.nav.navbar-nav .nav-item .nav-link a:focus,
.nav.navbar-nav .nav-item .nav-link:active,
.nav.navbar-nav .nav-item:active,
.nav.navbar-nav .nav-item a:active,
.nav.navbar-nav .nav-item .nav-link a:active {
  color: #1c8a66}

我的一个朋友建议在 CSS 中使用 .active 类,但这也不起作用:

    .nav.navbar-nav .nav-item .nav-link.active {
      color: #1c8a66
   }

HTML 中的锚点:

<a class="anchor" id="kezelesek"></a>

CSS 中的锚类

a.anchor {
    display: block;
    position: relative;
    top: -57px;
    visibility: hidden;
}

这里你可以看到问题:如果对应的anchor标签存在,菜单不会改变颜色:

https://www.w3schools.com/code/tryit.asp?filename=FVHSP1KJDQZY

【问题讨论】:

  • 嗨,齐姆!我用完整的导航代码更新了 HTML 代码。谢谢!
  • 用一个可行的解决方案更新了这个问题,但它只有在我删除正文中的锚标记时才有效......

标签: css bootstrap-4 navigationbar


【解决方案1】:

您需要使用与 Bootstrap CSS 选择器具有相同特性的 CSS 选择器。

.navbar-light .nav-item.active .nav-link,
.navbar-light .nav-item .nav-link:active,
.navbar-light .nav-item .nav-link:focus,
.navbar-light .nav-item:hover .nav-link {
    color: #00B159;
}

演示:https://codeply.com/go/bsS6PogUFQ

【讨论】:

  • 感谢您的代码,但不幸的是这不起作用。菜单仅在悬停时为绿色,而不是在单击后。 :-(
  • 嗨,齐姆!我用完整的导航代码更新了 HTML 代码。谢谢!
【解决方案2】:

您可以将active 添加到li.nav-item 仅用于您当前所在的网页和html 文件,如下所示 &lt;li class="nav-item active"&gt;

在 css 中使用 .active a 并使用传统的活动链接样式设置样式,例如 .active a { color: black; }

您可以通过定位导航标签中的最后一个类元素来添加悬停效果,如下所示 .sticky-top a:hover { color: black; }

如果您在主页上,则该链接应该是唯一突出显示的链接。您需要转至其他 html 文件,并为其他 li.nav-item 标签转至相同的内容。

【讨论】:

    【解决方案3】:

    感谢我迟到了回答这个问题。然而,在自己搜索了这个问题的答案后,我偶然发现了一个对我有用的答案。

    简而言之,我意识到我可以通过将“活动”添加为指向自身的链接(活动页面,或指向我正在编辑的页面的链接)的类来实现预期的效果。例如,如果我从主页单击 Active Page Link,我会被带到 active_page.html。在该页面的 html 文件中,我需要使用以下内容更新 html:

    <a class="nav-link active" href="../static/active_page.html">Active Page</a>
    

    换句话说,只需将“活动”添加到链接指向自身的锚类(我希望这是有道理的)。换句话说,对于每个链接,都有一个 .html 页面,并且对于每个指向该链接所在页面的链接,将“活动”添加到 a 标记类(如上)。

    为了进一步细化,如果您想控制活动链接的颜色,请检查元素以找到应用颜色的 css 行并更改 css 文件。

    【讨论】:

      【解决方案4】:
      li.selected a { color: #0DB159; }
      

      HTML

      <ul class="nav navbar-nav text-center">
                  <li class="nav-item selected"><a class="nav-link" href="#fooldal">Főoldal<span class="sr-only">(current)</span></a></li>
                  <li class="nav-item"><a class="nav-link" href="#kezelesek">Kezelések</a></li>
                  <li class="nav-item"><a class="nav-link" href="#arak">Árak</a></li>
                  <li class="nav-item"><a class="nav-link" href="#galeria">Galéria</a></li>
                  <li class="nav-item"><a class="nav-link" href="#rolam">Rólam</a></li>
                  <li class="nav-item"><a class="nav-link" href="#kapcsolat">Kapcsolat</a></li>
      </ul>
      

      【讨论】:

      • 我刚刚尝试过,但它仅有助于将悬停状态变为绿色,而不有助于激活状态(单击/选择菜单)更改颜色。很奇怪,好像菜单项点击后就不会激活了?在开发人员模式下,单击该项目后我看不到活动迹象。即使它跳到锚点。
      • 我认为您正在尝试执行select 而不是a:active,它只会在您单击链接时更改链接的颜色。您应该添加一个新类,例如:.selected(或 .active,无论您想命名它),当您选择它时,使用 selected 类更新单击/选择的项目
      • 谢谢你,但是这个 .selected 类也不能正常工作。 :-(
      【解决方案5】:

      最后我设法解决了这个问题,但在引导程序之外。可惜basig bootstrap.js没有这个自动将活动状态从一个nav元素移动到另一个元素的功能……

      我最后使用了这个 JS 解决方案来突出显示活动的导航菜单:

      https://codepen.io/gearmobile/pen/bByZdG

      $( '#topheader .navbar-nav a' ).on( 'click', function () {
      $( '#topheader .navbar-nav' ).find( 'li.active' ).removeClass( 'active' );
      $( this ).parent( 'li' ).addClass( 'active' );
      });
      

      【讨论】:

        猜你喜欢
        • 2018-10-24
        • 1970-01-01
        • 2018-12-01
        • 1970-01-01
        • 2020-04-29
        • 1970-01-01
        • 1970-01-01
        • 2017-09-08
        • 2018-12-24
        相关资源
        最近更新 更多