web-dev-qa-db-ja.com

Angular Material mdTabs:垂直タブを持つことは可能ですか?

左側にタブナビゲーションがあり、上から下に表示されるタブを探しています。とにかくこれはAngularマテリアルライブラリで達成できますか?

12
ubreddy

このcodepen by Rahul Sagore バニラマテリアルを使用していますが、Angular専用ではありませんが、まさにあなたが望むものです。私はあなたと同じものを探していました。マテリアルがこれを提供していないのは残念ですが、それがどのように彼らの原則に反し、マテリアルを広範にしすぎるかはわかります。

これは、カスタムcss(おそらくオーバーライドしますが、よくわかりません)と特定のMaterialクラス名の使用で構成されます。以下に、コンテンツをスニペットに貼り付けました。

mdl-cell--n-colクラスに問題があったため、コンテンツを10-colから6-colに変更して、この投稿の制限されたスペースのタブの下にコンテンツがラップされないようにしました。あなたはおそらくそれを自分でいじくり回すか、それを廃棄してあなたが知っている方法でマテリアルスタイルを使用する必要があるでしょう。同様に、.hollow-circleスパンが何をしているのかわからないので、おそらくそれらは必要ありません。

/*Vertical Tabs*/
.vertical-mdl-tabs {
    margin-top: 30px;
}
.vertical-mdl-tabs .mdl-tabs__tab-bar {
    -webkit-flex-direction: column;
        -ms-flex-direction: column;
            flex-direction: column;
    padding-bottom: 35px;
    height: inherit;
    border-bottom: none;
    border-right: 1px solid rgba(10, 11, 49, 0.20);
}

.vertical-mdl-tabs .mdl-tabs__tab {
    width: 100%;
    height: 35px;
    line-height: 35px;
    box-sizing: border-box;
    letter-spacing: 2px;
}

.vertical-mdl-tabs.mdl-tabs.is-upgraded a.mdl-tabs__tab.is-active {
    border-right: 2px solid #ED462F;
}
.vertical-mdl-tabs.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after {
    content: inherit;
    height: 0;
}

.vertical-mdl-tabs.mdl-tabs.is-upgraded .mdl-tabs__panel.is-active, .mdl-tabs__panel {
    padding: 0 30px;
}

.vertical-mdl-tabs.mdl-tabs .mdl-tabs__tab {
    text-align: left;
}
<script src="https://storage.googleapis.com/code.getmdl.io/1.1.0/material.min.js"></script>
<link href="https://storage.googleapis.com/code.getmdl.io/1.1.0/material.Indigo-pink.min.css" rel="stylesheet"/>
<div class="mdl-tabs vertical-mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
    <div class="mdl-grid mdl-grid--no-spacing">
      <div class="mdl-cell mdl-cell--2-col">
          <div class="mdl-tabs__tab-bar">
             <a href="#tab1-panel" class="mdl-tabs__tab is-active">
                 <span class="hollow-circle"></span>
                  Tab 1
             </a>
             <a href="#tab2-panel" class="mdl-tabs__tab">
                  <span class="hollow-circle"></span>
                  Tab 2
              </a>
              <a href="#tab3-panel" class="mdl-tabs__tab">
                  <span class="hollow-circle"></span>
                  Tab 3
              </a>
         </div>
       </div>
       <div class="mdl-cell mdl-cell--6-col">
            <div class="mdl-tabs__panel is-active" id="tab1-panel">
                 Content 1
            </div>
            <div class="mdl-tabs__panel" id="tab2-panel">
                 Content 2
            </div>
            <div class="mdl-tabs__panel" id="tab3-panel">
                  Content 3
            </div>
        </div>
    </div>
</div>
3
Henry Blyth

mat-tab-groupにvertical属性を追加し、ページに次のcssを追加することで、垂直タブを作成できます。

mat-tab-group[vertical] .mat-tab-labels {
    display: flex;
    flex-direction: column!important;
}

mat-tab-group[vertical] {
    display: flex;
    flex-direction: row!important;
}

これがvertical属性を持つmat-tab-group要素です

<mat-tab-group flex="1" vertical>
  <mat-tab label="Tab 1">  Loading ... </mat-tab>
  <mat-tab label="Tab 2" > Loading ... </mat-tab>
</mat-tab-group>
0
Rabolf