从 bootstrap 3 导航栏的折叠中排除菜单项

Posted

技术标签:

【中文标题】从 bootstrap 3 导航栏的折叠中排除菜单项【英文标题】:Exclude menu item from the collapse of bootstrap 3 navbar 【发布时间】:2014-01-29 01:02:36 【问题描述】:

这就是我所拥有的,我尝试在“品牌”内部移动我的部分并进行向右拉动,在品牌外部和折叠外部进行向左/向右拉动,同时还尝试放置它在折叠部分之前或之后。

将它添加到品牌部分时它可以工作,但它会下降到新的一行。如何保持在同一行?

    <body>
        <header>
            <nav class="navbar navbar-default navbar-inverse" role="navigation" style="font-size: 18px">
                <div class="container">
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
                            <span class="sr-only">Toggle navigation</span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <div class="navbar-brand site-title" style="text-decoration: none; font-size: 24px; font-weight:bold">@html.ActionLink("Manager", "Index", "Player")</div>
                    </div>

                    <div class="collapse navbar-collapse navbar-ex1-collapse navbar-right">
                        <ul class="nav navbar-nav">
@*                          <li class="active">@Html.ActionLink("Home", "Index", "Player")</li>
                            <li class="active">@Html.ActionLink("Match", "Index", "Match")</li>                             <li class="dropdown">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Profile <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    <li>@Html.ActionLink("Change Password", "ManagePassword", "Account")</li>
                                    <li>@Html.ActionLink("Update Profile Info", "UpdateProfile", "Account")</li>
                                    <li>@Html.ActionLink("Log Off", "LogOff", "Account")</li>
                                </ul>
                            </li>
                        </ul>
                    </div>

                    <div>
                        <!-- I don't want it apart of the collapsible portion -->
                        <div class="navbar-right">
                            <ul class="nav navbar-nav">
                                <li class="active">@Html.ActionLink("Match", "Index", "Match")</li>
                            </ul>
                        </div>
                    </div>
                </div>
            </nav>
        </header>

【问题讨论】:

请提供一些关于您的目标的详细信息,您想要实现的目标尚不清楚(显示所需布局的简单图片会很有用) @zessx 抱歉,刚看到这个。我的导航栏中有大约 8 个菜单项。我希望无需单击导航栏上的下拉按钮即可访问一个主菜单项,因为它是一个将在移动设备上大量使用的链接。因此,我不希望用户必须通过任何额外的“点击/触摸”来访问该菜单项。下面的答案对我有用,我只需要做一些更多的格式化,这样它就不会与下拉菜单按钮重叠。 【参考方案1】:

下面是一个示例,展示了如何拥有您可能想要的任何类型的“普通引导”导航栏配置。它包括一个站点标题、左对齐或右对齐的折叠和非折叠菜单项,以及静态文本。请务必阅读 cmets 以更全面地了解您可以更改的内容。享受!

小提琴:http://jsfiddle.net/nomis/n9KtL/1/

像往常一样在左侧使用 clearfix 和扩展选项:http://jsfiddle.net/jgoemat/u1j8o0n3/1/

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<nav role="navigation" class="navbar navbar-default navbar-fixed-top">
  <div class="container">

    <!-- Title -->
    <div class="navbar-header pull-left">
      <a href="/" class="navbar-brand">GNOMIS</a>
    </div>

    <!-- 'Sticky' (non-collapsing) right-side menu item(s) -->
    <div class="navbar-header pull-right">
      <ul class="nav pull-left">
        <!-- This works well for static text, like a username -->
        <li class="navbar-text pull-left">User Name</li>
        <!-- Add any additional bootstrap header items.  This is a drop-down from an icon -->
        <li class="dropdown pull-right">
          <a href="#" data-toggle="dropdown" style="color:#777; margin-top: 5px;" class="dropdown-toggle"><span class="glyphicon glyphicon-user"></span><b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li>
              <a href="/users/id" title="Profile">Profile</a>
            </li>
            <li>
              <a href="/logout" title="Logout">Logout </a>
            </li>
          </ul>
        </li>
      </ul>

      <!-- Required bootstrap placeholder for the collapsed menu -->
      <button type="button" data-toggle="collapse" data-target=".navbar-collapse" class="navbar-toggle"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
      </button>
    </div>

    <!-- The Collapsing items            navbar-left or navbar-right -->
    <div class="collapse navbar-collapse navbar-left">
      <!--                      pull-right keeps the drop-down in line -->
      <ul class="nav navbar-nav pull-right">
        <li><a href="/news">News</a>
        </li>
        <li><a href="/Shop">Shop</a>
        </li>
      </ul>
    </div>

    <!-- Additional navbar items -->
    <div class="collapse navbar-collapse navbar-right">
      <!--                      pull-right keeps the drop-down in line -->
      <ul class="nav navbar-nav pull-right">
        <li><a href="/locator">Locator</a>
        </li>
        <li><a href="/extras">Extras</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

【讨论】:

很好的答案和非常有用的 cmets。我有一个与此相关的后续问题:您必须有一个折叠部分吗?如果我只想要通过“hidden-”和“visible-”类控制其可见性的静态项目怎么办? @Andrew 谢谢!我对引导菜单进行了深入研究,并认为我会分享。不,您不需要任何可折叠的项目。任何带有navbar-header 类的元素都不会崩溃! @nomis,这行得通,但你能解释一下为什么你需要下拉标题中的“margin-top:5px”吗? 现在已损坏。这是基于上述bootply.com/V46gEMiBa3 的工作示例 @MichaelPlotke 评论有效,但现在也有效。原始小提琴的一个问题是折叠菜单出现在屏幕中间而不是下方,在@MichaelPlotke 中修复了一个带有clearfix visible-xs-block 类的div。【参考方案2】:

您应该能够在 2 个nav-header 中使用pull-leftpull-right 来防止链接崩溃。

见:http://bootply.com/104747

  <nav class="navbar navbar-default navbar-inverse" role="navigation">
    <div class="container">
      <div class="navbar-header pull-left">
        <div class="navbar-brand">Brand</div>
      </div>

      <!-- I don't want it apart of the collapsible portion -->
      <div class="navbar-header pull-right">
        <ul class="nav navbar-nav pull-left">
          <li class="active"><a href="">No Collapse</a> </li>
        </ul>
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
      </div>
      <div class="collapse navbar-collapse navbar-right">
        <ul class="nav navbar-nav">
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Profile <b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li>Change Password</li>
              <li>Update Profile Info</li>
              <li>Log Off</li>
            </ul>
          </li>
        </ul>
      </div>
    </div>
  </nav>

【讨论】:

看起来不错。折叠后看起来有一点重叠。您知道如何解决这个问题(例如仅在折叠后才添加边距吗?)。我想我已经尝试了双头,拉左和拉右,但可能没有在一起。很好的答案!!!今晚下班回家后,我将尝试将其合并。 @Skelly,很好的答案,只是希望阅读格式不佳的 html 更容易! @nomis 哪个部分格式不正确?我对我的代码样式非常有强迫症,并且觉得这是阅读它的最简单方法...... 如果 中有超过 1 个 则此方法无效 这似乎不再起作用了。当您展开折叠的菜单项时,它会在品牌顶部的左侧显示这些项目。【参考方案3】:

这是我在 Jade 中的另一个答案,其中包含一些模板逻辑,只是为了好玩:)。有关其他信息,请参阅其他答案。

//- NOTE:        'navbar-default' styles the 'burger' and navbar text color, so remove it to add your own
nav(class="navbar navbar-default navbar-fixed-top", role="navigation")
  .container

    //- Title
    .navbar-header.pull-left
      a.navbar-brand(href='javascript:window.location.replace(window.location.origin);') GNOMIS

    //- 'Sticky' (non-collapsing) right-side menu item(s) 
    .navbar-header.pull-right
      ul.nav.pull-left
        //- This works well for static text, maybe some initials
        li.navbar-text.pull-left User Name
        //- User Icon drop-down menu
        li.dropdown.pull-right
          a.dropdown-toggle(href='#', data-toggle='dropdown', style="color:#777; margin-top: 5px;")
            span.glyphicon.glyphicon-user
            b.caret
          ul.dropdown-menu
              li
                a(href="/users/id", title="Profile") 
                  | &nbsp;&nbsp;Profile
              li
                a(href="/logout", title="Logout")
                  | &nbsp;&nbsp;Logout 

      //- Required bootstrap placeholder for the collapsed menu    
      button.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse')
        span.sr-only Toggle navigation
        span.icon-bar
        span.icon-bar
        span.icon-bar

    //- The Collapsing items  navbar-left or navbar-right
    .collapse.navbar-collapse.navbar-left
      //-               pull-right keeps the drop-down in line
      ul.nav.navbar-nav.pull-right
        li
          a(href="/news") News
        li
          a(href="/shop") Shop

    //- Additional navbar items
    .collapse.navbar-collapse.navbar-right
      //-               pull-right keeps the drop-down in line
      ul.nav.navbar-nav.pull-right
        li
          a(href="/locator") Locator
        li
          a(href="/extras") Extras

【讨论】:

以上是关于从 bootstrap 3 导航栏的折叠中排除菜单项的主要内容,如果未能解决你的问题,请参考以下文章

带有 jQ​​uery 和 Bootstrap 3 的可折叠响应式侧边栏菜单

在折叠时合并多个 Bootstrap 3 导航栏菜单

如何在折叠的导航栏中默认打开 Bootstrap 3 下拉菜单

仅在折叠位置时如何设置 Bootstrap 5 导航栏的样式?

Bootstrap 3 Navbar 左侧和右侧导航栏项目的左侧折叠菜单

Bootstrap 3.0 导航栏中的多个折叠按钮