【问题标题】:Bootstrap Nested NavbarsBootstrap 嵌套导航栏
【发布时间】:2016-06-14 19:55:03
【问题描述】:

如何在 Bootstrap 3 中构建嵌套导航栏?

This fiddle 非常接近我想要的,除了我希望辅助选项卡始终可见。在小提琴中,一切都是一个切换。 另外我想使用 navbar-inverse,但是如果我从 navbar-default 更改为 navbar-inverse,菜单将不再起作用!

下面我包含了一些近似于我想要的代码。单击主页时应出现第 2 个菜单,选择第 1 页时应出现第 3 个菜单,依此类推。

这个可以吗?

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>

<nav class="navbar navbar-inverse">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">WebSiteName</a>
    </div>
    <ul class="nav navbar-nav">
      <li class="active"><a href="#nav1">Home</a></li>
      <li><a href="#nav2">Page 1</a></li>
      <li><a href="#2">Page 2</a></li> 
      <li><a href="#3">Page 3</a></li> 
    </ul>
  </div>
</nav>

<nav id="nav1" class="navbar navbar-inverse">
  <div class="container-fluid">
    <ul class="nav navbar-nav">
      <li class="active"><a href="#">Home1</a></li>
      <li><a href="#">Page 12</a></li>
      <li><a href="#">Page 22</a></li> 
      <li><a href="#">Page 32</a></li> 
    </ul>
  </div>
</nav>

<nav id="nav2" class="navbar navbar-inverse">
  <div class="container-fluid">
    <ul class="nav navbar-nav">
      <li class="active"><a href="#">Home3</a></li>
      <li><a href="#">Page 13</a></li>
      <li><a href="#">Page 23</a></li> 
      <li><a href="#">Page 33</a></li> 
    </ul>
  </div>
</nav>

【问题讨论】:

    标签: jquery html twitter-bootstrap-3 navbar


    【解决方案1】:

    1。 .navbar-inverse

    如果您已经用navbar-inverse 替换了navbar-default 类,那么不要忘记在您的javascript 中替换相同的类。使用

    $(".navbar-inverse .in").removeClass("in").addClass("collapse");
    

    而不是

    $(".navbar-default .in").removeClass("in").addClass("collapse");
    

    2。 .collapse('hide') 方法

    Bootstrap 有 useful methods 用于可折叠项目。您可以使用.collapse('hide') 代替.removeClass("in").addClass("collapse")


    3。始终可见

    如果您将导航栏放入&lt;div class="navbar-header"&gt; 块中,则导航栏将显示在窄屏幕上。在这种情况下,您必须将 $('.collapse').click(function () { 替换为 $('.navbar-nav').click(function () {

    结果可能是这样的:http://jsfiddle.net/glebkema/q98mtbj5/

    $('.navbar-nav').click(function () {
        $('.navbar-inverse .in').collapse('hide');
    });
    
    $('.navbar-toggle').click(function () {
        $('.childMenu.in').collapse('hide');
    });
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    
    <div class="navbar navbar-default navbar-inverse navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse.parentMenu">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Bootstrap 3.0 Skeleton</a>
          <ul class="nav navbar-nav pull-left">
            <li><a data-toggle="collapse" data-target=".navbar-collapse1">Sub Menu  1</a></li>
          </ul>
        </div>
    
        <div class="collapse navbar-collapse parentMenu">
          <ul class="nav navbar-nav">
            <li><a data-toggle="collapse" data-target=".navbar-collapse2">Sub Menu  2</a></li>
            <li><a data-toggle="collapse" data-target=".navbar-collapse3">Sub Menu  3</a></li>
          </ul>
        </div>
    
        <div class="collapse navbar-collapse1 childMenu">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home 1</a></li>
            <li><a href="#about">About 1</a></li>
            <li><a href="#contact">Contact 1</a></li>
          </ul>
        </div>
        <div class="collapse navbar-collapse2 childMenu">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home 2</a></li>
            <li><a href="#about">About 2</a></li>
            <li><a href="#contact">Contact 2</a></li>
          </ul>
        </div>
        <div class="collapse navbar-collapse3 childMenu">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home 3</a></li>
            <li><a href="#about">About 3</a></li>
            <li><a href="#contact">Contact 3</a></li>
          </ul>
        </div>
        <!--/.nav-collapse -->
      </div>
    </div>
    
    <!-- Post Info -->
    <div style='position:fixed;bottom:0;left:0; background:lightgray;width:100%;padding:2px 20px;'>
      Fork this at the <a href='http://jsfiddle.net/KyleMit/kcpma/'>Bootrsap 3.0 Skeleton</a>
    <div>
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>

    【讨论】:

    • Gleb,这几乎是完美的。我很感激解释我需要做的改变。我还需要一件事。当我选择一级菜单时,会显示一级子菜单并选择第一个选项卡。如果我随后在此子级别上选择不同的选项卡,则应选择该选项卡,并且子菜单不应消失。事实上,如果选择不同的选项卡会使子菜单消失。我该如何解决?
    • @BryanSchmiedeler Test jsfiddle.net/glebkema/q98mtbj5/13 是你想要达到的目标吗?
    • Gleb,这行得通,我一直在尝试一两天的时间来让最后的部分按照我的意愿工作。首先,用户选择第一个选项卡,然后显示第一个选项卡的子选项卡。如果用户选择任何其他主选项卡,则子选项卡 1 会关闭,而子选项卡 2 会打开。但是,如果用户单击已选择的主选项卡,我不希望发生任何事情。目前它折叠该菜单。第二个问题是选择应该“坚持”。如果用户在主选项卡上选择不同的选项卡,则该选项卡应该处于活动状态。 subTab 也一样。
    • Gleb,我只需要一件我想要的东西就能让它工作。我发布了另一个问题,就在这个问题上:stackoverflow.com/questions/37886386/…
    猜你喜欢
    • 2016-10-19
    • 1970-01-01
    • 2013-01-20
    • 2020-12-13
    • 2014-07-21
    • 2013-08-14
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多