Boas Enkler
Boas Enkler

Reputation: 12557

Prevent bootstrap navbar dropdown to get hidden in "mobile navbar menu

I use bootstrap and i'm showing a language selection in the header. Now when i reduce the width, bootstrap is going to put my elements in a mobile selection. (s. screenshot)

enter image description here

Most of the time thats a good thing, but in some cases i want options to stay visible. Fest option on the left side of the mobile menu.

<div class="navbar-header">
....
</div>
<div class="collapse navbar-collapse" id="navbar-main">
    <ul class="nav navbar-nav navbar-right">
         <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
               Deutsch<span class="caret"></span>
            </a>
            <ul class="dropdown-menu" role="menu">
                    <li><a href="foo">French</a></li>
                    <li><a href="foo">English</a></li>
            </ul>
        </li>
    </ul>
</div>

If I make two groups like

  <ul class="nav navbar-nav navbar-right">
    .. Non collapsable items
  </ul>
 <div class="collapse navbar-collapse" id="navbar-main">
   .. collapsable items
</div>

then the non collapsable items are placed below the menu and not on the left side of it.

Upvotes: 1

Views: 5120

Answers (3)

Michael Oryl
Michael Oryl

Reputation: 21662

In order to remove a menu section from the auto-collapsing feature of Bootstrap, you need to move it outside of the . Something like the following:

<div class="navbar-header">
    <a class="navbar-brand" href="#">Project name</a>
    <ul class="nav navbar-nav"> <!-- Items in here won't collapse -->
        <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">
               Deutsch<span class="caret"></span>
            </a>
            <ul class="dropdown-menu" role="menu">
                <li><a href="foo">French</a></li>
                <li><a href="foo">English</a></li>
            </ul>
        </li>
    </ul>
    </div>
    <div class="collapse navbar-collapse" id="navbar-main"> <!-- Anything in here will collapse -->
        <ul class="nav navbar-nav navbar-right">
            <a href="#">Link</a>
            <a href="#">Another Link</a>
        </ul>
    </div>
</div>

Anything inside the "collapse" div will collapse into the mobile menu. Anything that is not there, like the navbar-brand link in most menus, will not.

Hope that helps.

Upvotes: 0

wakqasahmed
wakqasahmed

Reputation: 2089

Reshared*

Below is an example that shows how to have just about any kind of 'vanilla bootstrap' NAVBAR configuration you could want. It includes a site title, both collapsing and non-collapsing menu items aligned left or right, and static text. Be sure to read the comments to get a fuller understanding of what you can change. Enjoy!

Fiddle: http://jsfiddle.net/nomis/n9KtL/1/

    <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>

Upvotes: 1

ganders
ganders

Reputation: 7451

Here you go. Sounds like you want to exclude some menu items from the boostrap mobile view. I had similar question, and answer here.

Exclude menu item from the collapse of bootstrap 3 navbar

Upvotes: 2

Related Questions