3

我正在使用一个简单的引导顶部固定导航栏,我想更改活动页面的颜色......但是我认为我的代码中缺少一些东西

<div class="navbar">
    <div class="navbar-fixed-top">
      <div class="container" style="width: auto;">
          <div class="nav-collapse" id="nav-collapse">
          <ul class="nav" id="nav">
            <li class="active"><a href="#skdill" >skisll</a></li>
            <li class="active"><a href="#skill">skill</a></li>
            <li class="active"><a href="#research">research</a></li>
            <li class="active"><a href="#">Link</a></li>
                     </ul>
        </div>
      </div>
    </div>
  </div>

和CSS是

.navbar {
    position: fixed;
    width: 100%;
}
.navbar .nav {
   float: none;
}
.navbar .nav>li {
    width: 25%;
}
.content {
    padding-top: 80px;
}

#nav-collapse li a:hover { 
    color: blue; 
}
#nav-collapse a:hover { 

    background-color: gray; 
}

#nav-collapse  li.active { 
   color:green;
    background-color: yellow; 
}
#nav-collapse  li.active a {
    color: red;
}

...例如,我希望(活动导航项的)文本为红色,背景颜色为灰色(无论如何)...您有什么想法吗?

非常感谢!

4

4 回答 4

6

如果要保持活动项的状态,则需要在每个 html 文件中包含导航栏布局。例如,如果您单击Research然后在research.html您的导航栏中必须是

<div class="navbar">
<div class="navbar-fixed-top">
  <div class="container" style="width: auto;">
      <div class="nav-collapse" id="nav-collapse">
      <ul class="nav" id="nav">
        <li ><a href="#skdill" >skisll</a></li>
        <li ><a href="#skill">skill</a></li>
        <li class="active"><a href="#research">research</a></li>
        <li ><a href="#">Link</a></li>
                 </ul>
    </div>
  </div>
</div>

等等你的所有链接。

编辑 您可以使用 JavaScript 并做到这一点:

<!DOCTYPE html>
<html>
   <head>
     <script src="js/jquery.min.js"></script>
     <script src="js/bootstrap.min.js"></script>
     <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
     <link href="css/bootstrap-responsive.min.css" rel="stylesheet">
     </style>
  </head>

  <script>
     $(function() {
        $('#nav li a').click(function() {
           $('#nav li').removeClass();
           $($(this).attr('href')).addClass('active');
        });
     });
  </script>

  <body>
     <div class="navbar">
        <div class="navbar-fixed-top">
           <div class="container" style="width: auto;">
              <div class="nav-collapse" id="nav-collapse">
                 <ul class="nav" id="nav">
                     <li id="home"><a href="#home">Home</a></li>
                     <li id="skill"><a href="#skill">Skill</a></li>
                     <li id="research"><a href="#research">Research</a></li>
                     <li id="link"><a href="#link">Link</a></li>
                 </ul>
              </div>
           </div>
        </div>
     </div>
  </body>
</html>

演示:http: //jsfiddle.net/Ag47D/3/

于 2013-04-07T19:09:29.277 回答
1
.navbar #nav > .active > a {
    color: red;
}

这是演示

于 2013-04-07T18:47:03.450 回答
1

我的答案与其他答案有点不同,对我来说效果很好:

假设导航栏中的链接(在本地服务器上,https://myweburl.com将被替换为https://localhost:8000https://127.0.0.1:8000)如下:

主页 => https://myweburl.com

博客 => https://myweburl.com/blog/1https://myweburl.com/blog/2等。

技能 => https://myweburl.com/skills/

联系方式 => https://myweburl.com/contact/

因此,您可以使用此代码段使导航栏中的相应链接处于活动状态:

$(document).ready(function () {
    var loc = window.location.href; // grabbing the url
    var str = loc.split("/")[3]; // splitting the url and taking the third string
    if(str.localeCompare("") == 0)
      $("#home").addClass("active");
    else
      $("#" + str).addClass("active");
});

此外,在您的 HTML 中,删除“活动”类并将各自的 ID 放入所有链接中。通过各自的ID,我的意思是ID应该根据URL命名。

上面的 JS 代码在做什么:抓取 URL 并将其拆分为字符串数组。然后它取变量 str 中的第四个字符串(第四个字符串将在第三个索引处)。然后,它将“活动”类放在该链接中。

这种方法的好处:除了它非常简单之外,如果用户直接转到链接而不是单击导航栏中的链接,那么这种方法也有效。

此方法的问题:必须知道导航栏中每个链接的 URL。如果 URL 的格式不同,那么对代码稍作改动就可以为您提供帮助。

于 2017-06-20T15:07:43.780 回答
0

这个 js 对我有用,我把它放在导航是 php 的每个页面上,包括:

 <script>
 $(function() { 

        var path = window.location.pathname;
        path = path.replace(/\/$/, "");
        path = decodeURIComponent(path);

        $(".nav li a").each(function () {
            var href = $(this).attr('href');
            if(path.substring((path.lastIndexOf('/')+1),path.lenght) === href) {    
                $(this).closest('li').addClass('active');
            } else {
                $(this).closest('li').removeClass();
            }
        });         
 });

于 2015-11-21T10:26:03.570 回答