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


157

Я пытаюсь реализовать выровненные по левому краю вкладки с помощью плагина 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она по умолчанию сложена.
Патрик Беркли,

Ответы:


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

ОБНОВИТЬ

Если вам не нужен точный вид вкладки (граничит соответствующим образом слева или справа при активации каждой вкладки), вы можете просто использовать ее 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
Рузвельт

4
Да, только .nav сложен, но он не выглядит как вкладка (соответствующие левые, правые границы), когда он выбран / активен. Это цель вкладок.
Зим

17
Вам не нужно добавлять это обратно. Это было удалено намеренно. См. Официальную документацию Bootstrap о том, как вы должны обрабатывать это сейчас в JavaScript / Tabs. Смотрите также, это руководство о том, как правильно использовать настройку Bootstrap 3 для вертикальных вкладок. tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills
Нил Монро,

3
для простого текстового контента подходит любое решение. Если кто-то еще сталкивается с проблемой, о которой я говорю: решение @ dbtek работает лучше всего: bootstrap-vertical-tabs Мне просто нужно было включить файл CSS ... спасибо @dbtek!
msanjay

47

Команда 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 . Спасибо Шон.


10
Вам не нужно включать JavaScript. Если вы добавите data-toggle = "pill" к каждому a-тегу, он будет работать автоматически с помощью начальной загрузки. Вы можете увидеть здесь: bootply.com/96067
SeanK

Спасибо @SeanK. Добавили это в ответ.
Давид Лемаян

это было хорошо, и я бы предпочел это без специального CSS, но вкладки @ Skelly имеют более «непрерывный» вид и взаимосвязь между активной вкладкой и содержимым. Было бы хорошо, если бы то же самое можно было достичь здесь, но я не мог понять, как. Я сделал развилку, сужая только один пример для простоты: bootply.com/QZfrLF0XjD
msanjay

1
С другой стороны, я вставил какой-то цветной контент, и это, казалось, справилось с этим гораздо лучше, чем принятый подход. см. bootply.com/SeQ6z7fhbQ и bootply.com/cre9NpmXpA
msanjay


9

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

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


Они удалили это полностью сейчас. Смотрите ссылку выше для процедуры.
Нил Монро

Большое спасибо. Статья, на которую вы ссылаетесь, содержит практические, рабочие примеры и множество объяснений. Это именно то, что я искал.
Алуан Хаддад

Для чего это стоит, это выглядит только для таблеток nav. Навигационные вкладки будут сложены, но стилизация выглядит как горизонтальные вкладки сверху. Поскольку ОП спрашивал конкретно о навигационных вкладках, я не думаю, что это можно считать приемлемым ответом.
Джей Матис

URL больше не работает! Этот ответ становится бессмысленным!
Боборт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.