Nội dung trung tâm trong thanh điều hướng bootstrap đáp ứng


221

Tôi gặp sự cố khi định tâm nội dung của mình trong thanh điều hướng bootstrap. Tôi đang sử dụng bootstrap 3. Tôi đã đọc nhiều bài đăng, nhưng CSS hoặc các phương thức được sử dụng sẽ không hoạt động với mã của tôi! Tôi thực sự thất vọng, vì vậy đây giống như lựa chọn cuối cùng của tôi. Bất kỳ trợ giúp sẽ được đánh giá cao!

<!DOCTYPE html>
<html>
  <head>
    <title>Navigation</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="css/style.css" rel="stylesheet" media="screen">
  </head>
  <body>
    <div class="container">
      <nav class="navbar navbar-default" role="navigation">
        <!-- Brand and toggle get grouped for better mobile display -->
        <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>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse navbar-ex1-collapse">
          <ul class="nav navbar-nav">
            <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
          <li><a href="#">Link</a></li>
            <li><a href="#">Link</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
              </ul>
            </li>
          </ul>
        </div><!-- /.navbar-collapse -->
      </nav>
      <h1>Home</h1>

   </div>
     <!--JAVASCRIPT-->
   <script src="js/jquery-1.10.2.min.js"></script>
   <script src="js/bootstrap.min.js"></script>
 </body>
</html>

https://jsfiddle.net/amk07fb3/

Câu trả lời:


457

Tôi nghĩ rằng đây là những gì bạn đang tìm kiếm. Bạn cần loại bỏ float: lefttừ điều hướng bên trong để căn giữa nó và làm cho nó thành một khối nội tuyến.

.navbar .navbar-nav {
  display: inline-block;
  float: none;
  vertical-align: top;
}

.navbar .navbar-collapse {
  text-align: center;
}

http://jsfiddle.net/bdd9U/2/

Chỉnh sửa: nếu bạn chỉ muốn hiệu ứng này xảy ra khi điều hướng không bị sụp đổ bao quanh nó trong truy vấn phương tiện thích hợp.

@media (min-width: 768px) {
    .navbar .navbar-nav {
        display: inline-block;
        float: none;
        vertical-align: top;
    }

    .navbar .navbar-collapse {
        text-align: center;
    }
}

http://jsfiddle.net/bdd9U/3/


Nếu bạn gặp vấn đề với không gian thừa bên dưới các liên kết (ví dụ: nếu bạn đang sử dụng một nền tảng khác cho các liên kết hoạt động), bạn có thể sử dụng:.navbar .navbar-collapse { line-height: 0px; }
jenniwren

3
Tôi sẽ khuyên bạn không nên chơi với bootstrap.css ban đầu. Thay vào đó, hãy tạo phong cách của riêng bạn.
Máy xay sinh tố Faizan

Trong trường hợp của tôi, tôi đã phải loại bỏ "flex" và thay thế bằng "block-inline", sau đó nó bắt đầu hoạt động.
Người chơi

Là một giải pháp hoàn hảo.
Renato Lazaro

47

Các bài viết ban đầu đã hỏi làm thế nào để tập trung vào thanh điều hướng bị sụp đổ. Để tập trung các yếu tố trên thanh điều hướng thông thường, hãy thử điều này:

.navbar-nav {
    float:none;
    margin:0 auto;
    display: block;
    text-align: center;
}

.navbar-nav > li {
    display: inline-block;
    float:none;
}

23

Có một cách khác để làm điều này cho các bố cục mà không phải đặt thanh điều hướng vào trong thùng chứa và không yêu cầu bất kỳ phần ghi đè CSS hoặc Bootstrap nào.

Đơn giản chỉ cần đặt một div với containerlớp Bootstrap xung quanh thanh điều hướng. Điều này sẽ tập trung vào các liên kết bên trong thanh điều hướng:

<nav class="navbar navbar-default">
  <!-- here's where you put the container tag -->
  <div class="container">

    <div class="navbar-header">
    <!-- header and collapsed icon here -->
    </div>

    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
      <!-- links here -->
      </ul>
    </div>
  </div> <!-- close the container tag -->
</nav> <!-- close the nav tag -->

Nếu bạn muốn nội dung cơ thể sau đó căn chỉnh thanh điều hướng trung tâm, bạn cũng đặt nội dung cơ thể đó vào containerthẻ Bootstrap .

<div class="container">
  <! -- body content here -->
</div>

Không phải ai cũng có thể sử dụng kiểu bố trí này (một số người cần lồng chính thanh điều hướng bên trong container). Tuy nhiên, nếu bạn có thể làm điều đó, đó là một cách dễ dàng để lấy các liên kết thanh điều hướng và cơ thể của bạn làm trung tâm.

Bạn có thể xem kết quả trong toàn bộ trang JSFiddle này: http://jsfiddle.net/bdd9U/231/embedded/result/

Nguồn: http://jsfiddle.net/bdd9U/229/


13
Hừm, giải pháp này dường như không còn hiệu quả nữa. Ví dụ của bạn được căn trái ngay bây giờ.
Bjarte Aune Olsen

không làm việc cho tôi, nhưng đánh giá cao sự đơn giản của giải pháp của bạn!
Ben Casalino

12

Mã này làm việc cho tôi

.navbar .navbar-nav {
    display: inline-block;
    float: none;
}
.navbar .navbar-collapse {
    text-align: center;
}

8

Đối với Bootstrap 4:

Chỉ dùng

<ul class="navbar-nav mx-auto">

mx-auto sẽ thực hiện công việc


8

Cập nhật 2020 ...

Bootstrap 4

Định tâm nội dung Navbar dễ dàng hơn là Bootstrap 4 và bạn có thể thấy nhiều tình huống định tâm được giải thích tại đây: https://stackoverflow.com/a/20362024/171456

Bootstrap 3

Một kịch bản khác mà dường như không được trả lời chưa được tập trung cả các thương hiệu liên kết navbar . Đây là một giải pháp ..

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

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

http://codeply.com/go/1lrvNH9GI

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


4

từ trang web chính thức của bootstrap (và, gần như, như Eric S. Bullington đã nói.

https://getbootstrap.com/components/#navbar-default

thanh điều hướng ví dụ trông như:

<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
        ...etc

để tập trung vào điều hướng, đó là những gì tôi đã làm:

<div class="container-fluid" id="nav_center">

css:

@media (min-width:768px) { /* don't break navbar on small screen */
    #nav_center {
        width: 700px /* need to found your width according to your entry*/
    }
}

làm việc với class = "container" và navbar-right hoặc left, và tất nhiên bạn có thể thay thế id theo class. : D


3

Có vẻ như tất cả các câu trả lời này liên quan đến css tùy chỉnh trên đầu bootstrap. Câu trả lời tôi đang cung cấp chỉ sử dụng bootstrap vì vậy tôi hy vọng nó sẽ được sử dụng cho những ai muốn hạn chế các tùy chỉnh.

Điều này đã được thử nghiệm với Bootstrap V3.3.7

<footer class="navbar-default navbar-fixed-bottom">
    <div class="container-fluid">
        <div class="row">
            <div class="col-xs-offset-5 col-xs-2 text-center">
                <p>I am centered text<p>
            </div>
            <div class="col-xs-5"></div>
        </div>
    </div>
</footer>

2

cái này nên hoạt động

 .navbar-nav {
    position: absolute;
    left: 50%;
    transform: translatex(-50%);
}

1

Sử dụng html sau

<link rel="stylesheet" href="app/components/directives/navBar/navBar.scss"/>
<nav class="navbar navbar-default" role="navigation">
    <div class="container-fluid">
        <!-- Collect the nav links, forms, and other content for toggling -->
            <ul class="nav navbar-nav">
                <li><h5><a href="#/">Home</a></h5></li>
                <li>|</li>
                <li><h5><a href="#products">About</a></h5></li>
                <li>|</li>
                <li><h5><a href="#">Contacts</a></h5></li>
                <li>|</li>
                <li><h5><a href="#cart">Cart</a></h5></li>
            </ul>
    </div><!-- /.container-fluid -->
</nav>

Và css

.navbar-nav {
  width: 100%;
  text-align: center;
}
.navbar-nav > li {
  float: none;
  display: inline-block;
}
.navbar-default {
  background-color: white;
  border-color: white;
}
.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:hover, .navbar-default .navbar-nav>.active>a:focus{
  background-color:white;
}

Sửa đổi theo nhu cầu của bạn


1

V4 của BootStrap đang thêm Trung tâm (justify-content-centre) và Right Alocate (justify-content-end) theo: https://v4-alpha.getbootstrap.com/components/navs/#horizontal-alocate

<ul class="nav justify-content-center">
  <li class="nav-item">
    <a class="nav-link active" href="#">Active</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 disabled" href="#">Disabled</a>
  </li>
</ul>

Bạn có chắc chắn điều này hoạt động? Tôi đã thử nhưng vì li của tôi có chiều rộng đầy đủ nên điều này không có gì khác biệt
gota

Xin chào Nuno, chúng tôi đang sử dụng ứng dụng này trong ứng dụng của mình, vì vậy, nó chắc chắn hoạt động, là một menu ngang ở đầu ứng dụng của chúng tôi, vẫn đang được sử dụng.
Bộ giải mã
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.