web-dev-qa-db-ja.com

ブーツストラップ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>

タブはお互いの上に積み重ねられていますが、左に曲がっているように正しくレンダリングされていません。代わりに、それらは互いの上に張り付けられた単なる水平タブです。タブコンテンツは、コンテンツdivに正しく表示/非表示にされます。

これはBootstrap 2.xではtab-leftおよびtab-rightクラスを使用して処理されていましたが、これはBootstrap 3では推奨されません。そして実際には何にも置き換えられていないようです。 Bootstrap 3 Tabプラグインで適切な左右タブのレンダリングが可能かどうか誰かが知っていますか?

152
osmbergs

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;
}

実用例: http://bootply.com/74926

UPDATE

タブを正確に表示する必要がない場合(各タブがアクティブになるときに適切に左右に接する)、ブートストラップnav-stackedと一緒に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>
231
Zim

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 。ショーンありがとう。

46
David Lemayian

左右のタブを(現在は横向きにしても)Bootstrap 3をサポートするには、bootstrap-vertical-tabsコンポーネントを使用できます。

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

29
dbtek

これを再び追加する必要はないはずです。これは意図的に削除されました。ドキュメントが多少変更され、必要なCSSクラス( "nav-stacked")はpillsコンポーネントの下にのみ記載されていますが、タブでも機能するはずです。

このチュートリアルでは、Bootstrap 3セットアップを正しく使用して垂直タブを作成する方法を説明します。
tutsme-webdesign.info/bootstrap-3-toggable-tabs-and-pills

9
Neil Monroe