导航栏中的多级菜单与工作

时间:2015-08-20 09:52:33

标签: html css twitter-bootstrap

我正在尝试在导航栏中添加下拉菜单。但是,如果我使用按钮作为下拉菜单,则不会显示下一级别。但是如果我使用<a>,那么它会起作用,但它也会增加导航栏的高度。以下是我的菜单代码的一部分。

带按钮的代码:

<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#allo-m-navbar-collapse-1">
    <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 app-logo zero-padding-R" href="/web/login.mvc">
        **<button class="btn btn-default" data-toggle="dropdown" class="btn btn-primary" id="menu">
            Menu <span class="caret"></span>
        </button>**
        <ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu">
            <li><a href="//login/selection.mvc"><img src="/web/images/bullet.png" style="font-size:11px;"><spring:message code="accueil.campagne.new" /></a></li>
            <li><a href="#"><img src="/web/images/bullet.png" style="font-size:11px;"><spring:message code="accueil.manage.campagne" /></a></li>
            <li class="divider"></li>
            <li class="dropdown-submenu">
                <a tabindex="-1" href="#"><img src="/web/images/bullet.png" style="font-size:11px;"><spring:message code="side.panel.stat.report"/></a>
                <ul class="dropdown-menu">
                    <li><a tabindex="-1" href="#">test2</a></li>
                    <li class="dropdown-submenu">
                    <a href="#">More..</a>
                        <ul class="dropdown-menu">
                            <li><a href="#">test3</a></li>
                            <li><a href="#">test3</a></li>
                        </ul>
                    </li>
                 <li><a href="#">test2</a></li>
                 <li><a href="#">test2</a></li>
                </ul>
            </li>
        </ul>
        <img class="app-logo img-responsive" src="/temptingplaces-web/images/logo.png" alt="" style="padding-left: 200px;" />
    </a>

如果我用以下内容替换粗体部分:

<a href="#" class="dropdown-toggle" data-toggle="dropdown">Menu 1 <b class="caret"></b></a>

它可以工作,但随后会增加导航栏的高度。 我是navbars的新手,并不知道它是如何工作的。 如果需要,我也可以粘贴我的CSS。

这是我的演示作品

myWork

2 个答案:

答案 0 :(得分:0)

以下是使用buttonhref执行此操作的示例。 你肯定需要 jQuery 才能使Dropdown工作。

$(function() {
  $(".dropdown-menu > li > a.trigger").on("click", function(e) {
    var current = $(this).next();
    var grandparent = $(this).parent().parent();
    if ($(this).hasClass('left-caret') || $(this).hasClass('right-caret')) $(this).toggleClass('right-caret left-caret');
    grandparent.find('.left-caret').not(this).toggleClass('right-caret left-caret');
    grandparent.find(".sub-menu:visible").not(current).hide();
    current.toggle();
    e.stopPropagation();
  });
  $(".dropdown-menu > li > a:not(.trigger)").on("click", function() {
    var root = $(this).closest('.dropdown');
    root.find('.left-caret').toggleClass('right-caret left-caret');
    root.find('.sub-menu:visible').hide();
  });
});
.dropdown-menu > li {
  position: relative;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  -o-user-select: none;
  user-select: none;
  cursor: pointer;
}
.dropdown-menu .sub-menu {
  left: 100%;
  position: absolute;
  top: 0;
  display: none;
  margin-top: -1px;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  border-left-color: #ccc;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}
.right-caret:after,
.left-caret:after {
  content: "";
  border-bottom: 5px solid transparent;
  border-top: 5px solid transparent;
  display: inline-block;
  height: 0;
  vertical-align: middle;
  width: 0;
  margin-left: 5px;
}
.right-caret:after {
  border-left: 5px solid #444;
}
.left-caret:after {
  border-right: 5px solid #444;
}
.navbar-default .navbar-nav .dropdown .drop-button {
  border: none;
  outline: none;
  border-radius: 0;
}
.navbar-default .navbar-nav .dropdown .drop-button:focus,
.navbar-default .navbar-nav .dropdown .drop-button:hover {
  border: none;
  outline: none;
  box-shadow: none;
}
@media (max-width: 767px) {
  .navbar-default .navbar-nav .dropdown .drop-button {
    text-align: left;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <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="#">Brand</a>

    </div>
    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a>

        </li>
        <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Normal <span class="caret"></span></a>

          <ul class="dropdown-menu">
            <li><a href="#">Level 1</a>

            </li>
            <li><a href="#">Level 1</a>

            </li>
            <li><a href="#">Level 1</a>

            </li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Level 1</a>

            </li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Level 1</a>

            </li>
          </ul>
        </li>
        <li class="dropdown">	<a href="#" class="btn btn-link drop-button dropdown-toggle" data-toggle="dropdown">Button <span class="caret"></span></a>

          <ul class="dropdown-menu">
            <li>	<a class="trigger right-caret">Level 1</a>

              <ul class="dropdown-menu sub-menu">
                <li><a href="#">Level 2</a>

                </li>
                <li>	<a class="trigger right-caret">Level 2</a>

                  <ul class="dropdown-menu sub-menu">
                    <li><a href="#">Level 3</a>

                    </li>
                    <li><a href="#">Level 3</a>

                    </li>
                    <li>	<a class="trigger right-caret">Level 3</a>

                      <ul class="dropdown-menu sub-menu">
                        <li><a href="#">Level 4</a>

                        </li>
                        <li><a href="#">Level 4</a>

                        </li>
                        <li><a href="#">Level 4</a>

                        </li>
                      </ul>
                    </li>
                  </ul>
                </li>
                <li><a href="#">Level 2</a>

                </li>
              </ul>
            </li>
            <li><a href="#">Level 1</a>

            </li>
            <li><a href="#">Level 1</a>

            </li>
          </ul>
        </li>
        <li class="dropdown">	<a href="#" class="dropdown-toggle" data-toggle="dropdown">Link <span class="caret"></span></a>

          <ul class="dropdown-menu">
            <li>	<a class="trigger right-caret">Level 1</a>

              <ul class="dropdown-menu sub-menu">
                <li><a href="#">Level 2</a>

                </li>
                <li>	<a class="trigger">Level 2</a>

                  <ul class="dropdown-menu sub-menu">
                    <li><a href="#">Level 3</a>

                    </li>
                    <li><a href="#">Level 3</a>

                    </li>
                    <li>	<a class="trigger right-caret">Level 3</a>

                      <ul class="dropdown-menu sub-menu">
                        <li><a href="#">Level 4</a>

                        </li>
                        <li><a href="#">Level 4</a>

                        </li>
                        <li><a href="#">Level 4</a>

                        </li>
                      </ul>
                    </li>
                  </ul>
                </li>
              </ul>
            </li>
            <li><a href="#">Level 1</a>

            </li>
            <li><a href="#">Level 1</a>

            </li>
          </ul>
        </li>
        <li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown">Your Link <span class="caret"></span></a>

          <ul class="dropdown-menu">
            <li><a class="trigger right-caret">Level 1</a>

              <ul class="dropdown-menu sub-menu">
                <li>
                  <a href="#">
                    <img src="http://placehold.it/250x50/f00">
                  </a>

                </li>
                <li><a class="trigger">Level 2</a>

                </li>
                <li>
                  <a href="#">
                    <img src="http://placehold.it/250x50/f00">
                  </a>

                </li>
              </ul>
            </li>
            <li>
              <a href="#">
                <img src="http://placehold.it/250x50/f00">
              </a>

            </li>
            <li>
              <a href="#">
                <img src="http://placehold.it/250x50/f00">
              </a>

            </li>
          </ul>
        </li>
      </ul>
    </div>
    <!-- /.navbar-collapse -->
  </div>
  <!-- /.container-fluid -->
</nav>

答案 1 :(得分:0)

我找到了解决问题的方法,我把下拉菜单放在了 import pymongo client = pymongo.Mongoclient('localhost',27017) #parameter can be the database URL db = client.dataBase dbOutput = db.collection.find() for tuple in dbOutput: print tuple[key1] print tuple[key2] . . . print tuple[keyN]