Bootstrap 3中的堆叠标签


157

我正在尝试使用Bootstrap 3中的Tab jQuery插件来实现左对齐的堆叠选项卡,其中选项卡垂直于选项卡内容的左侧而不是顶部呈现。当我尝试以下内容时;

   <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中使用tab-lefttab-right类进行了处理,但是在Bootstrap 3中已弃用,并且似乎并没有用任何东西代替。有谁知道Bootstrap 3 Tab插件中是否可以正确显示左右选项卡?


1
您可以.nav单独使用该类,然后使用网格设置导航的宽度和您的内容。由于.nav默认情况下是堆叠的,因此不需要“堆叠的导航” 。
Patrick Berkeley

Answers:


236

从Bootstrap 3中删除了Left,Right和Under选项卡,但是您可以添加自定义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

更新

如果您不需要标签的确切外观(在激活每个标签时在左侧或右侧适当地加上边框),则可以简单地使用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
罗斯福2014年

4
是的,仅.nav会堆叠在一起,但是在选中/启用时,它看起来不像选项卡(左右边框合适)。这就是制表符的目的。
2014年

17
您无需重新添加此文件。已将其有意删除。请参阅官方的Bootstrap文档,以了解如何立即在JavaScript / Tabs下处理此问题。另请参阅本教程,了解如何正确使用Bootstrap 3设置进行垂直制表符。tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills
Neil Monroe

3
对于简单的文本内容,两种解决方案都可以。如果还有其他人遇到我正在谈论的问题:@dbtek的解决方案效果最好:bootstrap-vertical-tabs我只需要包括CSS文件...谢谢@dbtek!
msanjay 2014年

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

[更新] @SeanK提供了不必通过Java启用nav-pill而是使用的选项data-toggle="pill"。在此处查看:http : //bootply.com/96067。谢谢肖恩。


10
您不需要包含javascript。如果将data-toggle =“ pill”添加到每个a-tag,则它将使用引导程序自动运行。您可以在这里看到:bootply.com/96067
SeanK

谢谢@SeanK。已将其添加到答案中。
David Lemayian 2013年

很好,我希望没有自定义CSS,但是@Skelly的标签确实具有更“连续”的外观,并且活动标签和内容之间具有关联。如果可以通过某种方式实现相同的效果会很好,但我不知道如何实现。为了简单起见,我用叉子缩小了一个示例:bootply.com/QZfrLF0XjD
msanjay 2014年

1
另一方面,我输入了一些彩色内容,这似乎比接受的方法要好得多。参见bootply.com/SeQ6z7fhbQbootply.com/cre9NpmXpA
msanjay 2014年


9

您无需重新添加此文件。已将其有意删除。文档有所更改,并且必需的CSS类(“ nav-stacked”)仅在药丸组件下提及,但也应用于制表符。

本教程显示如何正确使用Bootstrap 3设置来执行垂直选项卡:
tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills


他们现在已将其完全删除。有关过程,请参见上面的链接。
尼尔·梦露

非常感谢你。您链接到的文章提供了实用的工作示例和大量说明。这就是我想要的。
Aluan Haddad 2015年

就其价值而言,这仅适用于导航丸。导航选项卡将堆叠,但样式看起来像顶部的水平选项卡。由于OP专门询问了nav-tabs,因此我认为这不是可以接受的答案。
杰·马西斯

该网址不再有效!然后,这个答案变得毫无意义!
Bobort
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.