問題描述

在 Bootstrap 中,最新的 platform-friendly 方法是創建一個導航欄,左側有徽標 A,中間的菜單項和右側的徽標 B?

這是我迄今為止所嘗試的,最終對齊,以便徽標 A 位於左側,左側徽標旁邊的菜單項和右側的徽標 B 。

<div class="navbar navbar-fixed-top navbar-custom ">
  <div class="container" >
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="#"><span class="navbar-logo">Logo_A</span></a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Home</a></li>
        <li><a href="#about">Menu Item 1</a></li>
        <li><a href="#contact">Menu Item 2</a></li>
        <li><a href="#about">Menu Item 3</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="#"><img src="images/Logo_B.png" class="img-responsive"></a></li>
      </ul>
    </div>
  </div>
</div>

最佳解決方案

引導 3

選項 1 – 品牌中心,左/右導航鏈接:

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
  </div>
  <a class="navbar-brand" href="#">Brand</a>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav navbar-left">
        <li><a href="#">Left</a></li>
        <li><a href="#about">Left</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">
      <li><a href="#about">Right</a></li>
      <li><a href="#contact">Right</a></li>
    </ul>
  </div>
</nav>

.navbar-brand
{
    position: absolute;
    width: 100%;
    left: 0;
    text-align: center;
    margin:0 auto;
}
.navbar-toggle {
    z-index:3;
}

http://bootply.com/98314


選項 2 – 左,中,右導航鏈接:

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
  </div>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
        <li><a href="#">Left</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-center">
        <li><a href="#">Center</a></li>
        <li><a href="#">Center</a></li>
      <li><a href="#">Center</a></li>
    </ul>
    <ul class="nav navbar-nav navbar-right">
        <li><a href="#">Right</a></li>
    </ul>
  </div>
</nav>

@media (min-width: 768px) {
  .navbar-nav.navbar-center {
    position: absolute;
    left: 50%;
    transform: translatex(-50%);
  }
}

http://www.bootply.com/SGYC6BWeBK

選項 3 – 中心品牌和鏈接

.navbar .navbar-header,
.navbar-collapse {
    float:none;
    display:inline-block;
    vertical-align: top;
}

@media (max-width: 768px) {
    .navbar-collapse  {
        display: block;
    }
}

http://www.codeply.com/go/1lrdvNH9GI

對於 3.x 還可以看到 nav-justified:Bootstrap center navbar


2017 更新

Bootstrap 4

現在 BS 4 有 flexbox,比較容易一些。這裏是 updated examples for left, right and center in the Bootstrap 4 Navbar 。閲讀 Bootstrap 4 Navbar 上的文檔

次佳解決方案

我需要類似的東西 (左,中,右對齊的項目),但能夠將居中的項目標記為活動。對我有用的是:

http://www.bootply.com/CSI2KcCoEM

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
  </div>
  <div class="navbar-collapse collapse">
    <ul class="nav navbar-nav">
      <li class="navbar-left"><a href="#">Left 1</a></li>
      <li class="navbar-left"><a href="#">Left 2</a></li>
      <li class="active"><a href="#">Center 1</a></li>
      <li><a href="#">Center 2</a></li>
      <li><a href="#">Center 3</a></li>
      <li class="navbar-right"><a href="#">Right 1</a></li>
      <li class="navbar-right"><a href="#">Right 2</a></li>
    </ul>
  </div>
</nav>

CSS:

@media (min-width: 768px) {
  .navbar-nav {
    width: 100%;
    text-align: center;
  }
  .navbar-nav > li {
    float: none;
    display: inline-block;
  }
  .navbar-nav > li.navbar-right {
    float: right !important;
  }
}

第三種解決方案

打掃我的頭,只是重讀了我的答案,並意識到 OP 是要求兩個標誌的左邊一個在右邊的中央菜單,而不是相反的方式。

這可以通過使用 Bootstrap 的”navbar-right” 和”navbar-left” 作為徽標,然後使用”nav-justified” 而不是用於 UL 的”navbar-nav” 來嚴格執行 HTML 。不需要附加的 CSS(除非你想將 navbar-collapse 切換到 xs 視口的中心位置,那麼你需要重寫一些,但是會讓你離開) 。

<nav class="navbar navbar-default" role="navigation">
  <div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
    </button>
    <div class="navbar-brand navbar-left"><a href="#"><img src="http://placehold.it/150x30"></a></div>

  </div>
  <div class="navbar-brand navbar-right"><a href="#"><img src="http://placehold.it/150x30"></a></div>

  <div class="navbar-collapse collapse">
    <ul class="nav nav-justified">
        <li><a href="#">home</a></li>
        <li><a href="#about">about</a></li>
    </ul>
  </div>
</nav>

Bootply:http://www.bootply.com/W6uB8YfKxm


對於那些想到這裏的人來説,”brand” 在這裏是我的老答案:

我知道這個線程有點老了,但是隻是在這個工作時發佈我的發現。自從 tomaszbak 在 collaspe 的休息之後,我決定將我的解決方案作為 skelly 的答案。首先我創建了我的”navbar-center”,並關閉了我的 CSS 中的普通導航欄的浮點數:

.navbar-center
{
   position: absolute;
   width: 100%;
   left: 0;
   text-align: center;
   margin: auto;
}

.navbar-brand{
   float:none;
}

然而,Skelly 的答案是,如果你有一個很長的品牌名稱 (或者你想為自己的品牌使用一個圖像),那麼一旦你進入了 sm 的視口,由於絕對的位置和評論者有説,一旦你到達 xs 視口,切換開關就會斷開 (除非你使用 Z 定位,但我真的不想擔心) 。

所以我做的是利用引導 responsive utilities 創建品牌塊的多個版本:

<nav class="navbar navbar-default" role="navigation">
<div class="navbar-header">
  <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
    <span class="icon-bar"></span>
  </button>
  <div class="navbar-brand visible-xs"><a href="#">Brand That is Really Long</a></div>
</div>
<div class="navbar-brand visible-sm text-center"><a href="#">Brand That is Really Long</a></div>
<div class="navbar-brand navbar-center hidden-xs hidden-sm"><a href="#">Brand That is Really Long</a></div>

<div class="navbar-collapse collapse">
  <ul class="nav navbar-nav navbar-left">
      <li><a href="#">Left</a></li>
      <li><a href="#about">Left</a></li>
      <li><a href="#">Left</a></li>
      <li><a href="#about">Left</a></li>
      <li><a href="#">Left</a></li>
      <li><a href="#about">Left</a></li>
  </ul>
  <ul class="nav navbar-nav navbar-right">
    <li><a href="#about">Right</a></li>
    <li><a href="#contact">Right</a></li>
    <li><a href="#about">Right</a></li>
    <li><a href="#contact">Right</a></li>
    <li><a href="#about">Right</a></li>
    <li><a href="#contact">Right</a></li>
  </ul>
</div>

所以現在,lg 和 md 視口的品牌以左邊和右邊的鏈接為中心,一旦你到達 sm 的視口,你的鏈接就會放到下一行,這樣你就不會與你的品牌重疊,最後在 xs 查看 collaspe 踢入,您可以使用切換。您可以進一步瞭解並修改 navbar-right 和 navbar-left 與 navbar-brand 一起使用的媒體查詢,以便在 sm 視口中鏈接都居中,但沒有時間進行檢驗。

您可以在這裏檢查我的舊主板:www.bootply.com/n3PXXropP3

我想有 3 個品牌可能和”z” 一樣麻煩,但是我覺得在響應式設計的這個世界裏,這個解決方案更適合我的風格。

第四種方案

Bootstrap 4(從 alpha 6 開始)

Navbars are built with flexbox! Instead of floats, you』ll need flexbox and margin utilities.

對於正確使用 justify-content-endcollapse div 上:

<div class="collapse navbar-collapse justify-content-end">
  <ul class="navbar-nav">
    <li class="nav-item active">
      <a class="nav-link" href="#">Home</a>
    </li>
  </ul>
</div>

完整的例子在這裏:https://jsbin.com/kemawa/edit?output

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇