ฉันจะวางแท็บ bootstrap ของ twitter ไว้ตรงกลางบนหน้าได้อย่างไร


87

ฉันใช้ twitter bootstrap เพื่อสร้างแท็บที่สลับได้ นี่คือ css ที่ฉันใช้:

<div class="container">
  <ul class="nav nav-tabs">
    <li><a href="#home" data-toggle="tab">Home</a></li>
    <li><a href="#profile" data-toggle="tab">Profile</a></li>
    <li><a href="#messages" data-toggle="tab">Messages</a></li>
    <li><a href="#settings" data-toggle="tab">Settings</a></li>
  </ul>
</div>

html นี้แสดงแท็บอย่างถูกต้อง แต่ดึงไปทางซ้าย (ซึ่งเป็นสิ่งที่ควรจะเกิดขึ้น) ฉันได้ลองปรับแต่ง CSS เพื่อให้แท็บอยู่ตรงกลางของหน้า แต่ยังไม่มีโชค ฉันคิดว่าคนที่มีประสบการณ์ css มากกว่าจะรู้วิธีทำสิ่งนี้

โปรดทราบว่ามีคำถามอื่นเกี่ยวกับการวางยา nav ไว้ตรงกลางซึ่งฉันได้ลองใช้แล้ว แต่ไม่ได้ผลกับแท็บ nav ธรรมดาเท่านั้น

ขอบคุณ.


อาจซ้ำกันได้ของTwitter Bootstrap: Center Pills
Marijn

คำตอบ:


221

nav-tabsรายการจะลอยไปทางซ้ายโดยอัตโนมัติโดย bootstrap ดังนั้นคุณต้องรีเซ็ตและแสดงเป็นinline-blockและในรายการเมนูตรงกลางเราต้องเพิ่มแอตทริบิวต์ของtext-align:centerลงในคอนเทนเนอร์ดังนี้:

CSS

.nav-tabs > li, .nav-pills > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
     zoom:1; /* hasLayout ie7 trigger */
}

.nav-tabs, .nav-pills {
    text-align:center;
}

Demo: http://jsfiddle.net/U8HGz/2/show/ แก้ไขที่นี่: http://jsfiddle.net/U8HGz/2/


แก้ไข: แก้ไขเวอร์ชันที่ใช้งานได้ใน IE7 + โดยผู้ใช้ @My Head Hurts ในความคิดเห็นด้านล่าง

การสาธิต: http://jsfiddle.net/U8HGz/3/show/ แก้ไขที่นี่: http://jsfiddle.net/U8HGz/3/


3
หากคุณเพิ่ม*display: inline; *zoom: 1;สิ่งนี้จะใช้งานได้ใน IE7 ด้วย ( display: inline-blockไม่รองรับ) jsfiddle.net/U8HGz/3
My Head Hurts

1
@MyHeadHurts โอ้ว้าวขอบคุณมากไม่ได้ใส่ใจกับ IE เวอร์ชันเก่าตั้งแต่ฉันเริ่มทำงานเพื่อรองรับ IE8 + เท่านั้น แต่การแก้ไขของคุณนั้นฟังดูดีและจำเป็นเนื่องจาก bootstrap รองรับ IE7 + อย่างเป็นทางการ อัปเดตคำตอบของฉัน
Andres Ilich

จะเกิดอะไรขึ้นถ้ามันควรมีผลกับ. nav-tabs เท่านั้น?
Anders Metnik

1
@AndersMetnik คุณสามารถแลกเปลี่ยนคลาสที่กำหนดเป้าหมายเป็นตัวเลือกการนำทางใดก็ได้ที่คุณต้องการแม้แต่คลาสหรือรหัสที่กำหนดเอง
Andres Ilich

1
ทำไมใคร ๆ ก็ยอมรับคำตอบนี้เนื่องจากมันปรับเปลี่ยนกฎ css พื้นฐาน
Sachin Sharma

21

คำตอบที่ได้รับการยอมรับนั้นสมบูรณ์แบบ สามารถปรับแต่งเพิ่มเติมเพื่อให้คุณสามารถใช้เคียงข้างกับแท็บมาตรฐานชิดซ้าย

.nav-tabs.centered > li, .nav-pills.centered > li {
    float:none;
    display:inline-block;
    *display:inline; /* ie7 fix */
     zoom:1; /* hasLayout ie7 trigger */
}

.nav-tabs.centered, .nav-pills.centered {
    text-align:center;
}

หากต้องการใช้ให้เพิ่มคลาส "กึ่งกลาง" ในองค์ประกอบแท็บของคุณ

<ul class="nav nav-tabs centered" >
..
</ul>

18

การเพิ่มชั้นเรียนnav-justifiedเหมาะสำหรับฉัน ศูนย์นี้ไม่เพียง แต่จัดแนวแท็บเท่านั้น แต่ยังกระจายไปที่ด้านบนได้อย่างสวยงามอีกด้วย

<ul class="nav nav-tabs nav-justified">
    <li><a href="#Page1">Page1</a></li>
    <li><a href="#Page2">Page2</a></li>
    <li><a href="#Page3">Page3</a></li>
    <li><a href="#Page4">Page4</a></li>
  </ul>

แม้ว่าคำตอบที่ยอมรับจะทำงานได้ดี แต่ฉันก็พบว่า Bootstrap เป็นธรรมชาติมากกว่า


2

เพียงแค่เพิ่ม

margin-left:50%;

เมื่อฉันตั้งค่าแท็บได้ผลสำหรับฉัน

สำหรับเช่น

<ul class="nav nav-tabs" style="margin-left:50%; margin-right:50%;">

น่าเสียดายที่ไม่เคารพความกว้างหรือการเรียงซ้อนที่จำเป็นเพื่อให้จัดตำแหน่งได้อย่างถูกต้อง
noinput

2

คุณสามารถใช้ตาราง bootstrapเพื่อจัดกึ่งกลางแท็บนำทางของคุณ เนื่องจากตาราง bootstrap ถูกแบ่งออกเป็น 12 คอลัมน์เท่ากับคุณสามารถใช้ 4 คอลัมน์สำหรับการนำทางของคุณได้อย่างง่ายดายโดยมี 4 คอลัมน์ออฟเซ็ต:

<div class="col-sm-4 col-sm-offset-4">.

ดังนั้นคุณจะได้รับการนำทางที่ตรงกลางของหน้า (รวมถึงโซลูชันที่ตอบสนองด้วย) โดยมี 4 คอลัมน์ฟรีทางด้านซ้ายและด้านขวา

ฉันพบว่ากริดมีประโยชน์มากสำหรับการสร้างหน้าเว็บที่ตอบสนอง โชคดี!

<div class="row-fluid">
  <div class="col-sm-12">
    <div class="col-sm-4 col-sm-offset-4">
      <ul class="nav nav-tabs">
        <li><a href="#home" data-toggle="tab">Home</a></li>
        <li><a href="#profile" data-toggle="tab">Profile</a></li>
        <li><a href="#messages" data-toggle="tab">Messages</a></li>
        <li><a href="#settings" data-toggle="tab">Settings</a></li>
      </ul>
    </div>
  </div>
</div>

1

หากคุณใช้bs4เพียงแค่คุณสามารถเพิ่มjustify-content-centerคลาสลงในแท็บนำทางของคุณเพื่อจัดกึ่งกลางบนหน้า หากคุณต้องการให้แท็บของคุณเป็นธรรม (เต็มด้วย) ให้เพิ่มnav-justifiedคลาสเข้าไปในกรณีนี้หากคุณมี 3 รายการในการนำทางแต่ละรายการจะมี 33% ด้วย หากมี 5 รายการแต่ละรายการมี 20% ด้วย

อีกวิธีหนึ่งก็คือการเพิ่มtext-centerถ้าคุณใช้bs3


1

nav-justifiedบูตตัวเองมีชั้นเรียนสำหรับเรื่องนี้ชื่อ เพียงแค่เพิ่มสิ่งนี้:

<ul class="nav nav-tabs nav-justified">

หากคุณต้องการจัดแนวเนื้อหาตรงกลาง<li>ด้วยให้สร้างdisply: inline-blockไฟล์.


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