Bootstrap 3中的堆叠标签

osm*_*rgs 154 tabs twitter-bootstrap twitter-bootstrap-3

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

标签堆叠在彼此之上,但没有正确地呈现为向左转,而是它们只是水平标签粘在彼此之上.标签内容在内容div中正确显示/隐藏.

这是在Bootstrap 2.x中使用tab-lefttab-right类处理的,但这在Bootstrap 3中已被弃用,并且似乎没有被任何东西替换.有谁知道Bootstrap 3 Tab插件中是否可以进行正确的左右选项卡渲染?

Zim*_*Zim 232

从Bootstrap 3中删除了Left,Right和Below选项卡,但您可以添加自定义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;
}
Run Code Online (Sandbox Code Playgroud)

工作示例: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>
Run Code Online (Sandbox Code Playgroud)

  • 这完美地解决了这个问题.仍然想知道为什么他们从Bootstrap 3中取出它. (33认同)
  • 为什么删除它?OO (24认同)
  • 您不应该重新添加它.这是有目的地删除.请参阅官方的Bootstrap文档,了解如何在JavaScript/Tabs下处理此问题.另请参阅本教程,了解如何正确使用Bootstrap 3设置来执行垂直选项卡.http://tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills/ (17认同)
  • 是的,单独的.nav是堆叠的,但是当它被选中/激活时,它看起来不像一个标签(适当的左,右边框).这是标签的目的. (4认同)
  • 对于简单的文本内容,任何一种方法都可以.如果有人面临我正在谈论的问题:@ dbtek的解决方案效果最好:[bootstrap-vertical-tabs](https://github.com/dbtek/bootstrap-vertical-tabs)我只需要包含CSS文件...谢谢@dbtek! (3认同)
  • 没有必要添加左/右标签.我上面的评论:您可以单独使用.nav类,然后使用网格设置导航的宽度和您的内容.因为.nav默认堆叠,所以不需要'堆叠导航'. (2认同)
  • 我有一种感觉,侧面标签被删除,作为整个移动优先转换的一部分.虽然侧面标签很好,但它们在设备上的语义不太明显,而且设备的宽度不足以显示标签内的内容. (2认同)

Dav*_*ian 46

Bootstrap团队似乎已将其删除.见这里:https://github.com/twbs/bootstrap/issues/8922.@Skelly的答案涉及我不想做的自定义css,所以我使用了网格系统和导航丸.它工作得很好,看起来很棒.代码如下:

<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>
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到这个:http://bootply.com/81948

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

  • 您不需要包含javascript.如果你将data-toggle ="pill"添加到每个a-tag,那么它将使用bootstrap自动运行.你可以在这里看到:http://bootply.com/96067 (10认同)

dbt*_*tek 29

要获得Bootstrap 3的左右选项卡(现在也支持侧向),可以使用bootstrap-vertical-tabs组件.

https://github.com/dbtek/bootstrap-vertical-tabs


Nei*_*roe 9

您不应该重新添加它.这是有目的地删除.文档已经有所改变,必要的CSS类("nav-stacked")仅在pills组件下提及,但也适用于标签.

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