【问题标题】:Stacked Tabs in Bootstrap 3Bootstrap 3中的堆叠标签
【发布时间】:2013-08-28 06:15:51
【问题描述】:

我正在尝试使用 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-left 和 tab-right 类处理的,但这在 Bootstrap 3 中已被弃用,而且似乎并没有被任何东西取代。有谁知道在 Bootstrap 3 Tab 插件中是否可以进行正确的左右选项卡渲染?

【问题讨论】:

  • 您可以单独使用.nav 类,然后使用网格设置导航和内容的宽度。不需要“堆叠导航”,因为.nav 默认是堆叠的。

标签: twitter-bootstrap tabs twitter-bootstrap-3


【解决方案1】:

左侧、右侧和下方标签已从 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

更新

如果您不需要选项卡的确切外观(每个选项卡激活时在左侧或右侧适当加边框),您可以简单地使用 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>

【讨论】:

  • 这完美地解决了这个问题。仍然想知道为什么他们将其从 Bootstrap 3 中移除。
  • 为什么会被删除? o.O
  • 是的,单独的 .nav 是堆叠的,但是当它被选中/激活时,它看起来不像一个选项卡(适当的左、右边框)。这就是标签的用途。
  • 您不需要重新添加它。这是故意删除的。请参阅官方 Bootstrap 文档,了解您现在应该如何在 JavaScript / Tabs 下处理这个问题。另请参阅本教程,了解如何正确使用 Bootstrap 3 设置来执行垂直选项卡。 tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills
  • 对于简单的文本内容,任何一种解决方案都可以。如果其他人遇到我正在谈论的问题:@dbtek 的解决方案效果最好:bootstrap-vertical-tabs 我只需要包含 CSS 文件...谢谢@dbtek!
【解决方案2】:

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>

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

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

【讨论】:

  • 您不需要包含 javascript。如果您将 data-toggle="pill" 添加到每个 a-tag,那么它将使用引导程序自动工作。你可以在这里看到:bootply.com/96067
  • 感谢@SeanK。已将其添加到答案中。
  • 这很好,如果没有自定义 CSS,我会更喜欢这个,但@Skelly 的选项卡确实在活动选项卡和内容之间具有更“连续”的外观和关系。如果可以在这里以某种方式实现同​​样的效果会很好,但我不知道如何。为简单起见,我做了一个分叉,仅缩小了一个示例:bootply.com/QZfrLF0XjD
  • 另一方面,我放入了一些彩色内容,这似乎比公认的方法处理得更好。见bootply.com/SeQ6z7fhbQ 和bootply.com/cre9NpmXpA
【解决方案3】:

要获得对 Bootstrap 3 的左右标签(现在也支持横向)支持,可以使用 bootstrap-vertical-tabs 组件。

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

【讨论】:

    【解决方案4】:

    您不需要重新添加它。这是故意删除的。文档有所更改,必要的 CSS 类(“nav-stacked”)仅在药丸组件下提及,但也适用于选项卡。

    本教程展示了如何正确使用 Bootstrap 3 设置来执行垂直标签:
    tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills

    【讨论】:

    • 他们现在已经完全删除了。有关过程,请参见上面的链接。
    • 非常感谢。您链接到的文章提供了实用的工作示例和大量解释。这正是我想要的。
    • 对于它的价值,这只看起来适合导航药片。 nav-tabs 将被堆叠,但样式看起来像顶部的水平选项卡。由于 OP 专门询问了导航选项卡,我认为这不能被认为是一个可以接受的答案。
    • 网址不再有效!那么这个答案就变得毫无意义了!
    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2013-10-28
    相关资源
    最近更新 更多