2014-10-16 12 views

risposta

12

Al fine di attuare quelle schede, abbiamo bisogno di fare un paio di cose.

  1. Aggiungi 'schede-sinistra' classe CSS per schede ui bootstrap angolari come riferimento da https://github.com/angular-ui/bootstrap/issues/102

    <tabset class="tabs-left"> 
        <tab heading="Vertical A">Vertical content A</tab> 
        <tab heading="Vertical B">Vertical content B</tab> 
    </tabset> 
    
  2. Aggiungere il css personalizzato come risposta dal Stacked Tabs in Bootstrap 3

    .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; 
    } 
    
+0

Questo metodo non funziona per me. Le schede impilate finiscono semplicemente sopra il contenuto anziché a sinistra. È verificato con bootstrap 3.3.6 e bootstrap angolare ui 2.5? – Derrek

+0

Nel mio caso, uno degli elementi all'interno di ogni tab è una tabella bootstrap. Questi sono al 100% a larghezza fissa che li ha fatti abbassare sotto le linguette flottate. Mi piacerebbe ancora una soluzione, ma la cosa semplice è impostare la larghezza su auto (o una quantità fissa). Non ideale – Derrek

19

Un'altra soluzione è creare qualcosa come questo

<div class="row"> 
<div class="col-sm-3"> 
    <ul class="nav nav-tabs nav-stacked nav-pills" role="tablist"> 
     <li ng-class="{'active': view_tab == 'tab1'}"> 
      <a class="btn-lg" ng-click="changeTab('tab1')" href="">My Tab 1</a> 
     </li> 
     <li ng-class="{'active': view_tab == 'tab2'}"> 
      <a class="btn-lg" ng-click="changeTab('tab2')" href="">My Tab 2</a> 
     </li> 
    </ul> 
</div> 
<div class="col-sm-9"> 
    <div class="tab-content"> 
     <div class="tab-pane" ng-show="view_tab == 'tab1'"> 
      This is tab 1 content 
     </div> 
     <div class="tab-pane" ng-show="view_tab == 'tab2'"> 
      This is tab 2 content 
     </div> 
    </div> 
</div> 
</div> 

E come in JS

$scope.changeTab = function(tab) { 
    $scope.view_tab = tab; 
} 

In questo approccio come ho più controllo su markup HTML.

+0

Grazie a Sergey, la mia domanda era centrata su un angolare bootstrap ui per gli altri, ma mi piace molto anche il tuo approccio .. c'è un video simile su youtube di Michael Calkins su questo approccio .. http://www.youtube.com/watch?v= 9COtsDovNpM –

+0

Ho utilizzato anche l'interfaccia utente angolare, ma in alcuni casi questo approccio mi ha dato molto di più. Questo è il motivo per cui l'ho pubblicato. –

+0

Awesome thanks Sergey :) –