С накоплением вкладок в Bootstrap 3

144

Я пытаюсь реализовать выровненные по левому краю вкладки, используя плагин Tab jquery в 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, используя классы tab-left и tab-right, но это устарело в Bootstrap 3 и на самом деле не кажется заменить на что угодно. Кто-нибудь знает, возможно ли правильное отображение левого и правого вкладок в плагине Bootstrap 3 Tab?

  • 1
    Вы можете использовать .nav класс .nav , а затем с помощью сетки задать ширину навигационной панели и вашего контента. Нет необходимости в «сложенной навигации», так как .nav составляется по умолчанию.
Теги:
twitter-bootstrap-3
tabs

5 ответов

226
Лучший ответ

Вкладка "Влево", "Вправо" и "Вниз" была удалена из 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 demo: 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>
  • 32
    Это прекрасно решает проблему. Все еще удивляюсь, почему они вытащили это из Bootstrap 3.
  • 9
    Преобразовано в LESS: gist.github.com/lavoiesl/6610753
Показать ещё 16 комментариев
43

Команда 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 и вместо этого использовать data-toggle="pill". Посмотрите здесь: http://bootply.com/96067. Спасибо Шон.

  • 9
    Вам не нужно включать JavaScript. Если вы добавите data-toggle = "pill" к каждому a-тегу, он будет работать автоматически с помощью начальной загрузки. Вы можете увидеть здесь: bootply.com/96067
  • 0
    Спасибо @SeanK. Добавили это в ответ.
Показать ещё 3 комментария
24

Чтобы получить левую и правую вкладки (теперь также с боком) поддержку Bootstrap 3, можно использовать компонент bootstrap-vertical-tabs.

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

9

Вам не нужно добавлять это обратно. Это было устранено целенаправленно. Документация несколько изменилась, и необходимый класс CSS ( "nav-stacked" ) упоминается только под компонентом таблеток, но также должен работать и с вкладками.

В этом учебном пособии показано, как правильно настроить Bootstrap 3 для выполнения вертикальных вкладок:
tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills

  • 1
    Я не вижу упоминаний в документах BS3 о вертикальных вкладках.
  • 0
    Они удалили это полностью сейчас. Смотрите ссылку выше для процедуры.
Показать ещё 2 комментария
-7

Здесь вы идете, все варианты вложенной навигации с рабочими примерами. http://www.tutorialspark.com/twitterBootstrap/TwitterBootstrap_Navigations.php

Ещё вопросы

Сообщество Overcoder
Наверх
Меню