Bootstrap NavBar với các mục được căn trái, giữa hoặc phải


437

Trong Bootstrap , cách thân thiện với nền tảng nhất để tạo một thanh điều hướng có Logo A ở bên trái, các mục menu ở giữa và Logo B ở bên phải là gì?

Đây là những gì tôi đã thử cho đến nay và cuối cùng nó được căn chỉnh sao cho Logo A ở bên trái, các mục menu bên cạnh logo bên trái và Logo B ở bên phải.

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

Câu trả lời:


800

Cập nhật 2019

Bootstrap 4

Bây giờ Bootstrap 4 đã có flexbox, việc căn chỉnh Navbar dễ dàng hơn nhiều. Dưới đây là các ví dụ cập nhật cho trái , phảigiữa trong Thanh điều khiển Bootstrap 4nhiều kịch bản căn chỉnh khác được trình bày ở đây .

Có thể sử dụng flexbox , lề tự động và các lớp tiện ích đặt hàng để căn chỉnh nội dung Navbar khi cần. Có nhiều điều cần xem xét bao gồm thứ tự và căn chỉnh của các mục Navbar (nhãn hiệu, liên kết, toggler) trên cả màn hình lớn và chế độ xem di động / bị sập. Không sử dụng các lớp lưới (hàng, col) cho Navbar .

Dưới đây là nhiều ví dụ khác nhau ...

Liên kết trái, trung tâm (thương hiệu) và phải:

nhập mô tả hình ảnh ở đây

<nav class="navbar navbar-expand-md navbar-dark bg-dark">
    <div class="navbar-collapse collapse w-100 order-1 order-md-0 dual-collapse2">
        <ul class="navbar-nav mr-auto">
            <li class="nav-item active">
                <a class="nav-link" href="#">Left</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="//codeply.com">Codeply</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
    <div class="mx-auto order-0">
        <a class="navbar-brand mx-auto" href="#">Navbar 2</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".dual-collapse2">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
    <div class="navbar-collapse collapse w-100 order-3 dual-collapse2">
        <ul class="navbar-nav ml-auto">
            <li class="nav-item">
                <a class="nav-link" href="#">Right</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
</nav>

http://www.codeply.com/go/qhaBrcWp3v


Một tùy chọn Navbar BS4 khác với các liên kết trung tâm và hình ảnh logo lớp phủ :

liên kết trung tâm và hình ảnh logo lớp phủ

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
    <div class="navbar-collapse collapse w-100 dual-collapse2 order-1 order-md-0">
        <ul class="navbar-nav ml-auto text-center">
            <li class="nav-item active">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
    <div class="mx-auto my-2 order-0 order-md-1 position-relative">
        <a class="mx-auto" href="#">
            <img src="//placehold.it/120/ccff00" class="rounded-circle">
        </a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".dual-collapse2">
            <span class="navbar-toggler-icon"></span>
        </button>
    </div>
    <div class="navbar-collapse collapse w-100 dual-collapse2 order-2 order-md-2">
        <ul class="navbar-nav mr-auto text-center">
            <li class="nav-item">
                <a class="nav-link" href="#">Link</a>
            </li>
        </ul>
    </div>
</nav>


Hoặc , các kịch bản căn chỉnh Bootstrap 4 khác:

nhãn hiệu trái, liên kết trung tâm chết, (trống bên phải)

Thương hiệu Navbar trái, liên kết trung tâm chết


thương hiệu và trung tâm liên kết, biểu tượng trái và phải

nhập mô tả hình ảnh ở đây


Thêm Bootstrap 4 ví dụ :

toggler bên trái trên thiết bị di động, thương hiệu
trung tâm bên phải và liên kết trên di động
bên phải liên kết trên máy tính để bàn, liên kết trung tâm trên liên kết bên trái di động
& toggler, thương hiệu trung tâm, tìm kiếm bên phải


Xem thêm: Bootstrap 4 căn chỉnh các mục thanh
điều hướng bên phải Thanh điều hướng bên phải Bootstrap 4 thẳng hàng với nút không sụp đổ trên Trung tâm di động
một thành phần trong Bootstrap 4 Navbar


Bootstrap 3

Tùy chọn 1 - Trung tâm thương hiệu, với các liên kết điều hướng trái / phải:

nhập mô tả hình ảnh ở đây

<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 (3.x)


Tùy chọn 2 - Liên kết điều hướng trái, giữa và phải:

nhập mô tả hình ảnh ở đây

<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

Tùy chọn 3 - Trung tâm cả thương hiệu và liên kết

nhập mô tả hình ảnh ở đây

.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/1lrvNH9GI

Ví dụ khác:

Trái thương hiệu, trung tâm liên kết
Trái toggler, thương hiệu trung tâm

Đối với 3.x cũng thấy nav-justified: thanh điều hướng trung tâm Bootstrap


Center Navbar trong Bootstrap
Bootstrap 4 căn chỉnh các mục thanh điều hướng bên phải


1
Làm thế nào bạn có thể làm cho các mục bên trái sụp đổ trong một chuyển đổi khác ở bên trái?
gepex

1
Tôi đã tạo 2 ví dụ jsfiddle, vì bootply không hoạt động ngay bây giờ. sol 1sol 2 . btw, soluzion 2 hoạt động tốt hơn (
imho

Đối với Bootstrap 4, sử dụng Firefox, ví dụ # 1 không hoạt động. Việc thêm .abslớp khiến navbar-brandphần tử che các nút ở bên trái và bên phải, khiến chúng không thể nhìn thấy được
8bithero

1
Làm thế nào điều này không được đánh dấu là câu trả lời? Đưa ra 3 lựa chọn cho BS 3 & 4, cảm ơn ngài.
Murkantilism

Không có liên kết mật mã nào của bạn đang mở và đó là do thiết kế khủng khiếp được sử dụng trong trang web đó. Họ đã trộn tất cả các loại quảng cáo, graphQL ... với nhau và nếu không tải hoặc chặn, toàn bộ màn hình sẽ trống. vâng, đó là cách làm việc góc cạnh (hoặc KHÔNG hoạt động).
AaA

58

Bootstrap 4

Chúng tôi có nhiều cách để sắp xếp các mục NavBars.

Đối với căn lề trái nhập mô tả hình ảnh ở đây

class = "navbar-nav mr-auto "

Cho đúng nhập mô tả hình ảnh ở đây

class = "navbar-nav ml-auto "

Đối với Trung tâm Align nhập mô tả hình ảnh ở đây

class = "navbar-nav mx-auto "

<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<a routerLink="/" class="navbar-brand" href="#">Bootsrap 4</a>
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact">Contact us</a>
</li>
</ul>
</nav>

1
thêm class = "navbar-brand mx-auto" trong thẻ b-nav-item đã tạo nên mánh khóe cho tôi
Sheece Gardazi

36

Tôi cần một cái gì đó tương tự (các mục được căn trái, giữa và phải), nhưng với khả năng đánh dấu các mục ở giữa là hoạt động. Những gì làm việc cho tôi là:

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

1
Đó là khá gần, nhưng nó phá vỡ khi bạn sụp đổ nó. Nếu bạn xem nó trên thiết bị di động, "Thương hiệu" sẽ hiển thị dưới thanh menu. Thương hiệu không phải là một phần của Nav thực tế?
spasticninja

1
Điều này trả lời OP chặt chẽ hơn.
Roger Dueck 23/1/2015

Cho đến nay điều này đã làm việc cho tôi. Tôi không có Thương hiệu cũng như yếu tố căn chỉnh phù hợp, chỉ có 3 tùy chọn ở giữa. Cảm ơn
Alessandro

Tôi nghĩ giải pháp này thực hiện công việc tốt hơn câu trả lời được bình chọn nhiều nhất ở chỗ, việc giảm kích thước màn hình không có yếu tố nào thoát ra khỏi thanh điều hướng (ít nhất trong mã ví dụ được chia sẻ)
Pravin

26

Bootstrap 4 (kể từ alpha 6)

Navbars được xây dựng với flexbox! Thay vì phao, bạn sẽ cần các tiện ích flexbox và lề.

Đối với Align Quyền sử dụng justify-content-endtrên collapsediv:

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

Ví dụ đầy đủ tại đây: https://jsbin.com/kemawa/edit?output


3
Không hoạt động đối với tôi ... justify-end-content dường như áp dụng cho điều hướng và dường như không hoạt động cho navbar là phiên bản mới nhất của bootstrap.
Stephane Paquet

1
@stephanePaquet, điều này có thể áp dụng cho alpha 6 (bản phát hành bootstrap gần đây nhất) - bạn đang sử dụng cái gì?
Jeremy Lynch

11

Đập đầu tôi, chỉ cần đọc lại câu trả lời của tôi và nhận ra OP đang yêu cầu hai logo của một bên trái ở bên phải với một menu ở giữa, không phải là cách khác.

Điều này có thể được thực hiện một cách nghiêm ngặt trong HTML bằng cách sử dụng "navbar-right" và "navbar-left" của Bootstrap cho các logo và sau đó "nav-justified" thay vì "navbar-nav" cho UL của bạn. Không cần CSS bổ sung (trừ khi bạn muốn đặt chuyển đổi thu gọn thanh điều hướng ở trung tâm trong chế độ xem xs, sau đó bạn cần ghi đè lên một chút, nhưng sẽ tùy thuộc vào bạn).

<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


Đối với những người đã đến đây cố gắng tập trung vào "thương hiệu" ở đây là câu trả lời cũ của tôi:

Tôi biết chủ đề này là một chút cũ, nhưng chỉ để đăng những phát hiện của tôi khi làm việc này. Tôi quyết định dựa trên giải pháp của mình về câu trả lời của skelly kể từ khi tomaszbak nghỉ giải lao trên collaspe. Đầu tiên tôi tạo "trung tâm điều hướng" và tắt float cho thanh điều hướng bình thường trong CSS của mình:

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

.navbar-brand{
   float:none;
}

Tuy nhiên, vấn đề với câu trả lời của skelly là nếu bạn có một tên thương hiệu thực sự dài (hoặc bạn muốn sử dụng một hình ảnh cho thương hiệu của mình) thì một khi bạn đến với khung nhìn sm có thể có sự chồng chéo do vị trí tuyệt đối và như những người bình luận cho biết, một khi bạn vào chế độ xem xs, công tắc bật tắt bị ngắt (trừ khi bạn sử dụng định vị Z nhưng tôi thực sự không muốn phải lo lắng về điều đó).

Vì vậy, những gì tôi đã làm là sử dụng các tiện ích đáp ứng bootstrap để tạo nhiều phiên bản của khối thương hiệu:

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

Vì vậy, bây giờ các khung nhìn lg và md có thương hiệu tập trung vào các liên kết ở bên trái và bên phải, khi bạn truy cập vào chế độ xem sm, các liên kết của bạn sẽ chuyển sang dòng tiếp theo để bạn không trùng lặp với thương hiệu của mình và cuối cùng là tại xs xem các collaspe đá vào và bạn có thể sử dụng chuyển đổi. Bạn có thể tiến thêm một bước này và sửa đổi các truy vấn phương tiện cho thanh điều hướng bên phải và thanh điều hướng bên trái khi được sử dụng với nhãn hiệu thanh điều hướng để trong chế độ xem sm, các liên kết đều tập trung nhưng không có thời gian để loại bỏ nó.

Bạn có thể kiểm tra bootply cũ của tôi ở đây: www.bootply.com/n3PXXropP3

Tôi đoán có 3 thương hiệu có thể rắc rối như "z" nhưng tôi cảm thấy như trong thế giới thiết kế đáp ứng, giải pháp này phù hợp với phong cách của tôi hơn.


1

Tôi thấy sau đây là một giải pháp tốt hơn tùy thuộc vào nội dung của các mục bên trái, giữa và bên phải của bạn. Độ rộng 100% không có lề gây ra sự chồng chéo của các div và ngăn các thẻ neo hoạt động chính xác - đó là không sử dụng các chỉ mục z lộn xộn.

.navbar-brand
{
    position: absolute;
    width: 100%;
    left: 0;
    margin: auto;
    margin-left: 48%;
}

1

Đây là một câu hỏi ngày nhưng tôi đã tìm thấy một giải pháp thay thế để chia sẻ ngay từ trang github bootstrap. Tài liệu chưa được cập nhật và có những câu hỏi khác về SO yêu cầu cùng một giải pháp mặc dù với những câu hỏi hơi khác nhau. Giải pháp này không cụ thể cho trường hợp của bạn nhưng như bạn có thể thấy giải pháp là <div class="container">đúng sau <nav class="navbar navbar-default navbar-fixed-top">nhưng cũng có thể được thay thế bằng <div class="container-fluid"khi cần thiết.

<!DOCTYPE html>
<html>

<head>
  <title>Navbar right padding broken </title>
  <script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
</head>

<body>
  <nav class="navbar navbar-default navbar-fixed-top">
    <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>
        <a href="#/" class="navbar-brand">Hello</a>
      </div>
      <div class="collapse navbar-collapse navbar-ex1-collapse">

        <ul class="nav navbar-nav navbar-right">
          <li>
            <div class="btn-group navbar-btn" role="group" aria-label="...">
              <button type="button" class="btn btn-default" data-toggle="modal" data-target="#modalLogin">Se connecter</button>
              <button type="button" class="btn btn-default" data-toggle="modal" data-target="#modalSignin">Créer un compte</button>
            </div>
          </li>
        </ul>
      </div>
    </div>
  </nav>
</body>

</html>

Giải pháp đã được tìm thấy trên một fiddle trên trang này: https://github.com/twbs/bootstrap/issues/18362

và được liệt kê là sẽ không sửa trong V3.


1
<div class="d-flex justify-content-start">hello</div>    
<div class="d-flex justify-content-end">hello</div>
<div class="d-flex justify-content-center">hello</div>
<div class="d-flex justify-content-between">hello</div>
<div class="d-flex justify-content-around">hello</div>

Đặt các trường mà bạn muốn tập trung, phải hoặc trái theo phân chia trên.


0

Bạn đặt lề trái thành tự động -> ml-auto trên phần bạn muốn di chuyển sang phải.

 <nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
  <span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
  <div class="navbar-nav ml-auto"> !<--MARGIN LEFT AUTO HERE !-->
    <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
    <a class="nav-item nav-link" href="#">Features</a>
    <a class="nav-item nav-link" href="#">Pricing</a>
    <a class="nav-item nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
  </div>
</div>


-2

Giải pháp đơn giản nhất:

Chỉ cần chia các navbarcột thành: ví dụ: nếu bạn có tất cả 24 cột, 12 cột sẽ trống và 12 cột sẽ giới hạn thanh điều hướng:

<nav class="navbar navbar-default">
    <div class="row">
       <div class="col-sm-4"></div>
       <div class="col-sm-4"></div>
       <div class="col-sm-4"></div>

       <div class="col-sm-12">
           <ul class="nav navbar-nav" align="center">
              <li><a href="#">Home</a></li>
              <li><a href="#">First Link</a></li>
              <li><a href="#">Second Link</a></li>
              <li><a href="#">Third Link</a></li>
              <li><a href="#">Fourth Link</a></li>
           </ul>
       </div>
    </div>
</nav>

1
Hàng lưới và col không nên được sử dụng bên trong Navbar. Sử dụng nội dung được hỗ trợ .
Zim

@Zim Tại sao không, điều gì là xấu về nó?
phân tích cú pháp
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.