แท็บแบบซ้อนใน Bootstrap 3


157

ฉันกำลังพยายามใช้แท็บที่เรียงซ้อนชิดซ้ายโดยใช้ปลั๊กอิน jquery Tab ใน Bootstrap 3 ซึ่งแท็บจะแสดงผลในแนวตั้งทางด้านซ้ายของเนื้อหาแท็บแทนที่จะอยู่ด้านบน เมื่อฉันลองทำสิ่งต่อไปนี้;

   <ul class="nav nav-tabs nav-stacked">
        <li><a href="#tab1" data-toggle="tab">Tab 1</a></li>
        <li><a href="#tab2" data-toggle="tab">Tab 2</a></li>
        <li><a href="#tab3" data-toggle="tab">Tab 3</a></li>
    </ul>


    <div class="tab-content">
        <div class="tab-pane fade" id="tab1">
            Tab 1 content
        </div>
        <div class="tab-pane fade" id="tab2">
            Tab 2 content              
        </div>
        <div class="tab-pane fade" id="tab3">
            Tab 3 content
        </div>
    </div>

แท็บจะซ้อนกันอยู่ด้านบนของแต่ละอื่น ๆ แต่จะไม่ได้แสดงอย่างถูกต้องว่าหันไปทางซ้ายแทนที่จะเป็นแท็บแนวนอนที่ติดอยู่ด้านบนของกันและกัน เนื้อหาแท็บแสดง / ซ่อนอย่างถูกต้องใน div ของเนื้อหา

สิ่งนี้ได้รับการจัดการใน Bootstrap 2.x โดยใช้แท็บทางซ้ายและคลาสทางขวาของแท็บแต่จะเลิกใช้ใน Bootstrap 3 และดูเหมือนจะไม่ถูกแทนที่ด้วยอะไร ไม่มีใครรู้ว่าการแสดงผลแท็บซ้ายขวาที่เหมาะสมเป็นไปได้ในปลั๊กอิน Bootstrap 3 Tab?


1
คุณสามารถใช้.navคลาสเพียงอย่างเดียวจากนั้นกริดจะกำหนดความกว้างของ nav และเนื้อหาของคุณ ไม่จำเป็นสำหรับ 'naved ที่ซ้อนกัน' เนื่องจาก.navถูก stack โดยค่าเริ่มต้น
Patrick Berkeley

คำตอบ:


236

แท็บซ้าย, ขวาและด้านล่างถูกลบออกจาก Bootstrap 3 แต่คุณสามารถเพิ่ม CSS ที่กำหนดเองเพื่อให้ได้ ..

.tabs-below > .nav-tabs,
.tabs-right > .nav-tabs,
.tabs-left > .nav-tabs {
  border-bottom: 0;
}

.tab-content > .tab-pane,
.pill-content > .pill-pane {
  display: none;
}

.tab-content > .active,
.pill-content > .active {
  display: block;
}

.tabs-below > .nav-tabs {
  border-top: 1px solid #ddd;
}

.tabs-below > .nav-tabs > li {
  margin-top: -1px;
  margin-bottom: 0;
}

.tabs-below > .nav-tabs > li > a {
  -webkit-border-radius: 0 0 4px 4px;
     -moz-border-radius: 0 0 4px 4px;
          border-radius: 0 0 4px 4px;
}

.tabs-below > .nav-tabs > li > a:hover,
.tabs-below > .nav-tabs > li > a:focus {
  border-top-color: #ddd;
  border-bottom-color: transparent;
}

.tabs-below > .nav-tabs > .active > a,
.tabs-below > .nav-tabs > .active > a:hover,
.tabs-below > .nav-tabs > .active > a:focus {
  border-color: transparent #ddd #ddd #ddd;
}

.tabs-left > .nav-tabs > li,
.tabs-right > .nav-tabs > li {
  float: none;
}

.tabs-left > .nav-tabs > li > a,
.tabs-right > .nav-tabs > li > a {
  min-width: 74px;
  margin-right: 0;
  margin-bottom: 3px;
}

.tabs-left > .nav-tabs {
  float: left;
  margin-right: 19px;
  border-right: 1px solid #ddd;
}

.tabs-left > .nav-tabs > li > a {
  margin-right: -1px;
  -webkit-border-radius: 4px 0 0 4px;
     -moz-border-radius: 4px 0 0 4px;
          border-radius: 4px 0 0 4px;
}

.tabs-left > .nav-tabs > li > a:hover,
.tabs-left > .nav-tabs > li > a:focus {
  border-color: #eeeeee #dddddd #eeeeee #eeeeee;
}

.tabs-left > .nav-tabs .active > a,
.tabs-left > .nav-tabs .active > a:hover,
.tabs-left > .nav-tabs .active > a:focus {
  border-color: #ddd transparent #ddd #ddd;
  *border-right-color: #ffffff;
}

.tabs-right > .nav-tabs {
  float: right;
  margin-left: 19px;
  border-left: 1px solid #ddd;
}

.tabs-right > .nav-tabs > li > a {
  margin-left: -1px;
  -webkit-border-radius: 0 4px 4px 0;
     -moz-border-radius: 0 4px 4px 0;
          border-radius: 0 4px 4px 0;
}

.tabs-right > .nav-tabs > li > a:hover,
.tabs-right > .nav-tabs > li > a:focus {
  border-color: #eeeeee #eeeeee #eeeeee #dddddd;
}

.tabs-right > .nav-tabs .active > a,
.tabs-right > .nav-tabs .active > a:hover,
.tabs-right > .nav-tabs .active > a:focus {
  border-color: #ddd #ddd #ddd transparent;
  *border-left-color: #ffffff;
}

ตัวอย่างการทำงาน: http://bootply.com/74926

UPDATE

หากคุณไม่ต้องการรูปลักษณ์ที่แน่นอนของแท็บ (ล้อมรอบอย่างเหมาะสมทางซ้ายหรือขวาเมื่อเปิดใช้งานแท็บแต่ละแท็บ) คุณสามารถใช้งานได้ง่ายnav-stackedพร้อมกับ Bootstrap col-*เพื่อลอยแท็บไปทางซ้ายหรือขวา ...

nav-stackedตัวอย่าง: http://codeply.com/go/rv3Cvr0lZ4

<ul class="nav nav-pills nav-stacked col-md-3">
    <li><a href="#a" data-toggle="tab">1</a></li>
    <li><a href="#b" data-toggle="tab">2</a></li>
    <li><a href="#c" data-toggle="tab">3</a></li>
</ul>

33
วิธีนี้ช่วยแก้ไขปัญหาได้อย่างสมบูรณ์แบบ ยังคงสงสัยว่าทำไมพวกเขาดึงสิ่งนี้ออกมาจาก Bootstrap 3
osmbergs

24
ทำไมมันถูกลบออก? oO
roosevelt

4
ใช่.. เพียงอย่างเดียวซ้อนกัน แต่ดูเหมือนแท็บ (เส้นขอบซ้ายและขวาที่เหมาะสม) เมื่อถูกเลือก / เปิดใช้งาน นั่นคือจุดประสงค์ของแท็บ
Zim

17
คุณไม่จำเป็นต้องเพิ่มสิ่งนี้กลับเข้ามาสิ่งนี้จะถูกลบออกอย่างมีจุดประสงค์ ดูเอกสาร Bootstrap อย่างเป็นทางการว่าคุณควรจัดการเรื่องนี้อย่างไรภายใต้ JavaScript / Tabs ดูเพิ่มเติมบทช่วยสอนนี้เกี่ยวกับวิธีใช้การตั้งค่า Bootstrap 3 อย่างถูกต้องเพื่อทำแท็บแนวตั้ง tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills
Neil Monroe

3
สำหรับเนื้อหาข้อความธรรมดาวิธีใดวิธีหนึ่งก็ใช้ได้ หากใครประสบปัญหาที่ฉันกำลังพูดถึง: @ โซลูชันของ dbtek ทำงานได้ดีที่สุด: แท็บ bootstrap-vertical-tabฉันต้องรวมไฟล์ CSS ... ขอบคุณ @ dbtek!
msanjay

47

ดูเหมือนว่าทีม Bootstrap จะลบออกแล้ว ดูที่นี่: https://github.com/twbs/bootstrap/issues/8922 @ คำตอบของ Skelly เกี่ยวข้องกับ CSS ที่กำหนดเองซึ่งฉันไม่ต้องการทำดังนั้นฉันจึงใช้ระบบกริดและ nav-pills มันใช้งานได้ดีและดูดี รหัสดูเหมือนดังนี้:

<div class="row">

  <!-- Navigation Buttons -->
  <div class="col-md-3">
    <ul class="nav nav-pills nav-stacked" id="myTabs">
      <li class="active"><a href="#home" data-toggle="pill">Home</a></li>
      <li><a href="#profile" data-toggle="pill">Profile</a></li>
      <li><a href="#messages" data-toggle="pill">Messages</a></li>
    </ul>
  </div>

  <!-- Content -->
  <div class="col-md-9">
    <div class="tab-content">
      <div class="tab-pane active" id="home">Home</div>
      <div class="tab-pane" id="profile">Profile</div>
      <div class="tab-pane" id="messages">Messages</div>
    </div>
  </div>

</div>

คุณสามารถดูสิ่งนี้ได้ที่นี่: http://bootply.com/81948

[Update] @SeanK ให้ตัวเลือกในการไม่ต้องเปิดการใช้งาน nav-ยาผ่าน Javascript data-toggle="pill"และแทนที่จะใช้ ตรวจสอบออกที่นี่: http://bootply.com/96067 ขอบคุณฌอน


10
คุณไม่จำเป็นต้องใส่จาวาสคริปต์ หากคุณเพิ่ม data-toggle = "pill" ลงใน a-tag แต่ละอันมันจะทำงานโดยอัตโนมัติโดยใช้ bootstrap คุณสามารถดูได้ที่นี่: bootply.com/96067
SeanK

ขอบคุณ @SeanK ได้เพิ่มเข้าไปในคำตอบ
David Lemayian

นี่เป็นสิ่งที่ดีและฉันจะชอบสิ่งนี้โดยไม่มี CSS ที่กำหนดเอง แต่แท็บของ @ Skelly มีรูปลักษณ์และความสัมพันธ์ 'ต่อเนื่อง' มากขึ้นระหว่างแท็บที่ใช้งานกับเนื้อหา จะดีถ้าเดียวกันสามารถทำได้ที่นี่ แต่ฉันไม่สามารถหาวิธี ฉันทำส้อมแคบลงเพียงหนึ่งตัวอย่างเพื่อความเรียบง่าย: bootply.com/QZfrLF0XjD
msanjay

1
ในทางกลับกันฉันใส่เนื้อหาที่มีสีและดูเหมือนว่าจะจัดการได้ดีกว่าวิธีที่ยอมรับ ดูbootply.com/SeQ6z7fhbQและ bootply.com/cre9NpmXpA
msanjay


9

คุณไม่จำเป็นต้องเพิ่มสิ่งนี้กลับเข้ามาสิ่งนี้จะถูกลบออกอย่างมีจุดประสงค์ เอกสารมีการเปลี่ยนแปลงบ้างและมีการกล่าวถึงคลาส CSS ที่จำเป็น ("nav-stacked") ภายใต้ส่วนประกอบแท็บเล็ต แต่ควรทำงานกับแท็บด้วย

บทช่วยสอนนี้แสดงวิธีใช้การตั้งค่า Bootstrap 3 อย่างถูกต้องเพื่อทำแท็บแนวตั้ง:
tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills


พวกเขาลบมันออกอย่างสมบูรณ์แล้วในตอนนี้ ดูลิงค์ด้านบนสำหรับขั้นตอน
Neil Monroe

ขอบคุณมาก. บทความที่คุณเชื่อมโยงเพื่อให้ตัวอย่างที่ใช้งานได้จริงและคำอธิบายมากมาย นี่คือสิ่งที่ฉันกำลังมองหา
Aluan Haddad

สำหรับสิ่งที่คุ้มค่านี่จะเหมาะสำหรับ nav-pills แท็บการนำทางจะซ้อนกัน แต่การกำหนดลักษณะดูเหมือนแท็บแนวนอนด้านบน เนื่องจาก OP ถามเกี่ยวกับแท็บ nav โดยเฉพาะฉันไม่คิดว่านี่เป็นคำตอบที่ยอมรับได้
Jay Mathis

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