为什么没有出现bootstrap navbar移动菜单?

时间:2017-02-20 16:06:32

标签: html css twitter-bootstrap

我有两个问题。第一个也是最重要的是如何使缩小版本的菜单出现。我想要的第二件事是当我向下滚动并从现在的透明变黑时导航栏保持在顶部。

守则是:

<nav class="navbar-inner navbar-inverse">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#">Cosmos</a>
    </div>
   <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav pull-right">
      <li><a href="#">Home</a></li>
      <li><a href="#about">About</a></li>
      <li><a href="#">Portfolio</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
    </div>
  </div>
</nav>

和css是:

.navbar-inner {
    background: transparent;
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    z-index: 1;
}

您还可以查看项目的codepen页面: https://codepen.io/georgekech/pen/ZLNMGE

4 个答案:

答案 0 :(得分:1)

回答你的两个问题:

虽然已经处理了使用bootstrap响应。如果在HTML上提供了正确的标记,则引导程序将处理移动视图上的菜单。因此,当您调整到移动视图的大小时,导航栏右侧会出现一个“汉堡菜单”,可以切换菜单选项。

接下来,如果您希望在向下滚动时标题保持在顶部。 Bootstrap已经提供了它。您只需navbar-inverse 上将navbar-fixed-top替换为<nav>。同样重要的是,删除为position: absolute

提供的不必要的navbar-inner属性
.navbar-inner {
   background: transparent;
   position: absolute; //remove
   top: 0; //remove
   right: 0; //remove
   left: 0; //remove
   z-index: 1;
}

接下来,在滚动时更改导航栏的背景,您需要添加2个简单的更改,一个添加到您的JavaScript(使用JQuery)另一个添加到您的CSS,这两个更改将携手并进

JQuery的:

$(function () {
  $(document).scroll(function () {
    var $nav = $(".navbar-fixed-top");
    $nav.toggleClass('scrolled', $(this).scrollTop() > $nav.height());
  });
});

CSS:

.navbar-fixed-top.scrolled {
  background: black;
}

当你滚动超过导航栏的高度时,Jquery基本上会将一个类添加/删除(切换)到导航栏。当然,CSS只是在从JQuery添加类时添加背景颜色。

Your codepen here

注意:

  
      
  1. 显然不要忘记包含JQuery库以使JavaScript工作,或者你也可以使用纯JavaScript来做同样的事情。

  2.   
  3. 如果你确实包含了JQuery,那么因为你使用的是Bootstrap v3.3.6,所以JQuery版本需要高于1.9.1但也要低于3.你可以找到所有这些here < / p>

  4.   

完成交易!

答案 1 :(得分:1)

尝试以下代码

&#13;
&#13;
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>


<!-- Bootstrap Navigation Start -->
        <nav class="navbar navbar-inverse navbar-fixed-top">
          <div class="container">
            <div class="navbar-header">
               <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
               <span class="sr-only">Toggle navigation</span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               <span class="icon-bar"></span>
               </button>
              <a class="navbar-brand" href="#">Cosmos</a>
            </div>
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
              <div>
                <ul id="menu-hover" class="nav navbar-nav">
                  <li><a href="#">Home</a></li>
                  <li><a href="#">Public Service</a></li>
                  <li><a href="#">Idea SubMission</a></li>
                  <li><a href="#">Power Division</a></li>
                </ul>
                </div>
            </div>
          </div> <!-- End Navbar Collapse -->
        </nav>
<!--End Bootstrap Navigation
&#13;
&#13;
&#13;

答案 2 :(得分:0)

.navbar-inner {
background: transparent;
position: absolute;
top: 0;
right: 0;
left: 0;
z-index: 1;
}

.navbar-inner position fixed将使您的菜单稳定,即使您将向下滚动。

要更改滚动菜单颜色,请查看此menu background change color on scroll的答案。

答案 3 :(得分:0)

您需要使用与按钮中的data-target相同的名称作为菜单div的ID。在这种情况下,它是“bs-example-navbar-collapse-1” 请将id="bs-example-navbar-collapse-1添加到div class="collapse navbar-collapse"

对于导航栏,如果您正在使用引导程序,则无需使用CSS。将“navbar-fixed-top”类添加到nav元素。

使用此课程时,您需要添加body {padding-bottom: 70px; }。这会将您网页的内容推送到导航栏下方。 70px适用于您的示例,但您可以根据需要进行更改。