จัดกึ่งกลางเนื้อหาในแถบนำทาง bootstrap ที่ตอบสนองต่อ


221

ฉันมีปัญหาในการศูนย์กลางเนื้อหาของฉันในแถบนำทาง bootstrap ฉันใช้ bootstrap 3. ฉันได้อ่านบทความจำนวนมาก แต่ CSS หรือวิธีการที่ใช้จะไม่ทำงานกับรหัสของฉัน! ฉันผิดหวังจริงๆดังนั้นนี่เป็นตัวเลือกสุดท้ายของฉัน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!

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

คำตอบ:


457

ฉันคิดว่านี่คือสิ่งที่คุณกำลังมองหา คุณต้องลบออกfloat: leftจาก nav ด้านในเพื่อจัดกึ่งกลางและทำให้เป็นอินไลน์บล็อก

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

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

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

แก้ไข:หากคุณต้องการให้เอฟเฟกต์นี้เกิดขึ้นเมื่อ nav ไม่ได้ถูกล้อมรอบมันในเคียวรีสื่อที่เหมาะสม

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


หากคุณมีปัญหาเกี่ยวกับพื้นที่พิเศษด้านล่างลิงก์ (เช่นหากคุณใช้พื้นหลังที่แตกต่างกันสำหรับลิงก์ที่ใช้งานอยู่) คุณสามารถใช้:.navbar .navbar-collapse { line-height: 0px; }
jenniwren

3
ฉันจะแนะนำไม่ให้เล่นกับ bootstrap.css ดั้งเดิม สร้างสไตล์ของคุณเองแทน
Faizan Mubasher

ในกรณีของฉันฉันต้องลบ "flex" และแทนที่ด้วย "inline-block" จากนั้นมันก็เริ่มทำงาน
theMayer

เป็นทางออกที่สมบูรณ์แบบ
Renato Lazaro

47

โพสต์ต้นฉบับกำลังถามวิธีจัดกึ่งกลาง navbar ที่ยุบ ในการจัดองค์ประกอบกึ่งกลางบนแถบนำทางปกติให้ลองทำดังนี้:

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

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

23

มีอีกวิธีในการทำเช่นนี้สำหรับโครงร่างที่ไม่จำเป็นต้องวาง navbar ไว้ในคอนเทนเนอร์และไม่ต้องใช้การแทนที่ CSS หรือ Bootstrap

เพียงแค่วาง div ด้วยcontainerคลาสBootstrap รอบ ๆ navbar สิ่งนี้จะจัดกึ่งกลางลิงก์ภายในแถบนำทาง:

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

ถ้าคุณต้องการจัดเนื้อหาเนื้อหาให้กับ navbar กลางคุณยังใส่เนื้อหาเนื้อหานั้นในcontainerแท็กBootstrap

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

ทุกคนไม่สามารถใช้เลย์เอาต์ประเภทนี้ (บางคนจำเป็นต้องซ้อน navbar ไว้ภายในcontainer) อย่างไรก็ตามหากคุณสามารถทำได้มันเป็นวิธีที่ง่ายในการรับลิงค์ navbar และศูนย์กลางของร่างกาย

คุณสามารถเห็นผลลัพธ์ในแบบเต็มหน้านี้ JSFiddle: http://jsfiddle.net/bdd9U/231/embedded/result/

ที่มา: http://jsfiddle.net/bdd9U/229/


13
อืมโซลูชันนี้ดูเหมือนจะไม่ทำงานอีกต่อไป ตัวอย่างของคุณถูกจัดชิดซ้ายแล้ว
Bjarte Aune Olsen

ไม่ได้ผลสำหรับฉัน แต่ขอขอบคุณความเรียบง่ายของโซลูชันของคุณ!
Ben Casalino

12

รหัสนี้ใช้ได้สำหรับฉัน

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


8

อัปเดต 2563 ...

Bootstrap 4

การจัดศูนย์กลางเนื้อหาของ Navbar ให้ง่ายขึ้นคือ Bootstrap 4 และคุณสามารถดูสถานการณ์การจัดกึ่งกลางจำนวนมากที่อธิบายไว้ที่นี่: https://stackoverflow.com/a/20362024/171456

Bootstrap 3

อีกสถานการณ์ที่ยังไม่ได้รับคำตอบคือการเชื่อมโยงทั้งแบรนด์และ navbarไว้ที่กึ่งกลาง นี่คือทางออกของ ..

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

ดูเพิ่มเติมที่: Bootstrap NavBar ด้วยรายการที่จัดชิดซ้ายกึ่งกลางหรือขวา


4

จากเว็บไซต์อย่างเป็นทางการของ bootstrap (และเกือบเหมือน Eric S. Bullington กล่าว

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

ตัวอย่าง navbar ดูเหมือนว่า:

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

เพื่อกำหนดตำแหน่งนำทางให้อยู่กึ่งกลางว่าสิ่งที่ฉันทำ

<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*/
    }
}

ทำงานกับ class = "container" และ navbar-right หรือ left และแน่นอนว่าคุณสามารถเปลี่ยน id เป็น class ได้ : D


3

ดูเหมือนว่าคำตอบเหล่านี้เกี่ยวข้องกับ CSS ที่กำหนดเองที่ด้านบนของ bootstrap คำตอบที่ฉันจัดหาให้ใช้เฉพาะ bootstrap ดังนั้นฉันหวังว่าจะใช้สำหรับผู้ที่ต้องการ จำกัด การปรับแต่ง

สิ่งนี้ได้รับการทดสอบด้วย 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>


1

ใช้ html ต่อไปนี้

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

และ 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;
}

ปรับเปลี่ยนตามความต้องการของคุณ


1

V4 ของ BootStrap กำลังเพิ่ม Center (justify-content-center) และ Right Alignment (justify-content-end) ตาม: https://v4-alpha.getbootstrap.com/components/navs/#horizontal-alignment

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

คุณแน่ใจเหรอ ฉันลอง แต่เนื่องจาก li ของฉันเต็มความกว้างนี่ก็ไม่ต่างอะไรเลย
gota

สวัสดี Nuno เรากำลังใช้สิ่งนี้ในแอพของเราดังนั้นใช่มันใช้งานได้จริงเป็นเมนูแนวนอนที่ด้านบนของแอพของเรายังคงใช้งานอยู่
Coder
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.