Tab
Documentazione ed esempi sull’utilizzo del componente Tab.
L’interfaccia a tab (o schede) di Bootstrap si basa sull’utilizzo del layout di navigazione, con l’aggiunta della classe .nav-tabs
. Per ottenere una versione con sfondo scuro e testo chiaro bisognerà aggiungere un’ulteriore classe: .nav-dark
.
La maggior parte degli esempi riguardanti il componente Tab non hanno pannelli di contenuto associati, pertanto la funzionalità per selezionare il pannello risulterà disattivata. Per vedere il componente Tab in azione fare riferimento alla sezione Controllo dei pannelli associati .
Accessibilità
Le interfacce a tab, come descritto nelle pratiche di implementazione WAI ARIA , richiedono l’utilizzo di attributi role="tablist"
, role="tab"
, role="tabpanel"
, e ulteriori attributi aria-
, al fine di trasmettere la loro struttura, funzionalità e stato attuale agli utenti delle tecnologie assistive (come i lettori di schermo).
Nota che le interfacce dinamiche a tab non devono contenere menu a discesa, poiché ciò causa problemi di usabilità e accessibilità. Dal punto di vista dell’usabilità, il fatto che l’elemento trigger del tab attualmente visualizzato non sia immediatamente visibile (dato che si trova all’interno del menu a discesa chiuso) può causare confusione.
Tab orizzontali a tutta larghezza
Aggiungendo la classe .auto
al contenitore .nav-tabs
i tab occupano automaticamente l’intera larghezza disponibile. Se su schermi particolarme piccoli (es: smartphone) le dimensioni dei tab dovessero superare quelle dello schermo, verrà attivato lo scrolling orizzontale dei tab stessi.
Tab testuale
Lo stato dei tab può essere attivo, non attivo e disabilitato.
Utilizzare la classe .active
sul link del tab attivo per default.
Utilizzare la classe .disabled
sul link dei tab da disabilitare, aggiungendo la proprietà tabindex="-1"
per eliminarlo dalla sequenza di navigazione via tab.
<ul class= "nav nav-tabs auto" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" > Attivo</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" > Link</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" > Link</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" aria-disabled= "true" > Disabilitato</a>
</li>
</ul>
Tab con icona
Le label dei tab possono essere sostituite da icone con classi che ne indicano il tipo, avendo cura di includere all’interno del link un elemento <span>
con classe .visually-hidden
contenente la descrizione dedicata agli screen reader. La classe .visually-hidden
impedisce la visualizzazione del testo sui browser visuali.
<ul class= "nav nav-tabs auto" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 1</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-calendar" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 2</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-comment" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 3</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-close" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 4</span>
</a>
</li>
</ul>
Tab con icona grande
Per ottenere icone più grandi utilizzare la classe .icon-lg
alle icone. Aggiungere la classe .nav-tabs-icon-lg
al contenitore .nav-tabs
per ottimizzare i margini fra tab.
<ul class= "nav nav-tabs nav-tabs-icon-lg auto" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 1</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-calendar" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 2</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-comment" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 3</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-close" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 4</span>
</a>
</li>
</ul>
Tab con testo e icona
Icone e testi possono convivere all’interno dei tab, l’allineamento verticale dei due elementi è automatico. Per ottenere il corretto margine fra testo e icona nei tab a sviluppo orizzontale è necessario aggiungere la classe .nav-tabs-icon-text
al contenitore .nav-tabs
.
<ul class= "nav nav-tabs nav-tabs-icon-text auto" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 1
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-calendar" ></use>
</svg>
Tab 2
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-comment" ></use>
</svg>
Tab 3
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-close" ></use>
</svg>
Tab 4
</a>
</li>
</ul>
Tab orizzontali
In assenza della classe .auto
i tab vengono dimensionati in base al contenuto.
Tab testuale
<ul class= "nav nav-tabs" >
<li class= "nav-item" ><a class= "nav-link active" aria-current= "page" > Tab 1 Attivo</a></li>
<li class= "nav-item" ><a class= "nav-link" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" tabindex= "-1" > Tab 4 Disabilitato</a></li>
</ul>
Tab con icona
<ul class= "nav nav-tabs" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 1</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-calendar" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 2</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-comment" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 3</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-close" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 4</span>
</a>
</li>
</ul>
Tab con icona grande
<ul class= "nav nav-tabs nav-tabs-icon-lg" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 1</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-calendar" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 2</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-comment" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 3</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" >
<svg class= "icon icon-lg" >
<use href= "/dist/svg/sprites.svg#it-close" ></use>
</svg>
<span class= "visually-hidden" > Tab titolo 4</span>
</a>
</li>
</ul>
Tab con testo e icona
<ul class= "nav nav-tabs nav-tabs-icon-text" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 1
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-calendar" ></use>
</svg>
Tab 2
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-comment" ></use>
</svg>
Tab 3
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" tabindex= "-1" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-close" ></use>
</svg>
Tab 4
</a>
</li>
</ul>
Se per motivi estetici si volessero nascondere le scrollbar che appaiono sui dispositivi touch quando vengono scrollati orizzontalmente i tab sarà necessario inserire l’html dei tab all’interno di un wrapper con classe .nav-tabs-hidescroll
.
<div class= "nav-tabs-hidescroll" >
<!-- HTML dei tab -->
</div>
Se i tab contengono icone è necessario aggiungere un’ulteriore classe al wrapper:
.hidescroll-ico
nel caso di icone normali
.hidescroll-ico-lg
nel caso di icone piccole
<div class= "nav-tabs-hidescroll hidescroll-ico" >
<ul class= "nav nav-tabs nav-tabs-icon-text" >
<li class= "nav-item" >
<a class= "nav-link active" aria-current= "page" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 1
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 2
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 3
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 4
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 5
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 6
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" >
<svg class= "icon" >
<use href= "/dist/svg/sprites.svg#it-link" ></use>
</svg>
Tab 7
</a>
</li>
</ul>
</div>
Controllo dei pannelli associati
Gli esempi sopra riportati non hanno molto senso senza un contenuto che cambi al di sotto di essi; per rendere tali interfacce navigabili è necessario collegare Tab e Pannelli collegando il tag <a>
dei primi all’attributo id
dei secondi, come mostrato di seguito:
Tab testuale
Contenuto 1
Contenuto 2
Contenuto 3
Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)
<ul class= "nav nav-tabs" id= "myTab" role= "tablist" >
<li class= "nav-item" ><a class= "nav-link active" id= "tab1-tab" data-bs-toggle= "tab" href= "#tab1" role= "tab" aria-controls= "tab1" aria-selected= "true" > Tab 1</a></li>
<li class= "nav-item" ><a class= "nav-link" id= "tab2-tab" data-bs-toggle= "tab" href= "#tab2" role= "tab" aria-controls= "tab2" aria-selected= "false" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" id= "tab3-tab" data-bs-toggle= "tab" href= "#tab3" role= "tab" aria-controls= "tab3" aria-selected= "false" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" id= "tab4-tab" data-bs-toggle= "tab" href= "#tab4" role= "tab" aria-controls= "tab4" aria-selected= "false" aria-disabled= "true" tabindex= "-1" > Tab 4 Disabilitato</a></li>
</ul>
<div class= "tab-content" id= "myTabContent" >
<div class= "tab-pane p-4 fade show active" id= "tab1" role= "tabpanel" aria-labelledby= "tab1-tab" > Contenuto 1</div>
<div class= "tab-pane p-4 fade" id= "tab2" role= "tabpanel" aria-labelledby= "tab2-tab" > Contenuto 2</div>
<div class= "tab-pane p-4 fade" id= "tab3" role= "tabpanel" aria-labelledby= "tab3-tab" > Contenuto 3</div>
<div class= "tab-pane p-4 fade" id= "tab4" role= "tabpanel" aria-labelledby= "tab3-tab" > Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)</div>
</div>
Tab con icona grande
Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)
<ul class= "nav nav-tabs nav-tabs-icon-lg" id= "myTab2" role= "tablist" >
<li class= "nav-item" >
<a class= "nav-link active" id= "tab1a-tab" data-bs-toggle= "tab" href= "#tab1a" role= "tab" aria-controls= "tab1a" aria-selected= "true" >
<svg class= "icon icon-lg" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg>
<span class= "visually-hidden" > Tab titolo 1</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "tab2a-tab" data-bs-toggle= "tab" href= "#tab2a" role= "tab" aria-controls= "tab2a" aria-selected= "false" >
<svg class= "icon icon-lg" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg>
<span class= "visually-hidden" > Tab titolo 2</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "tab3a-tab" data-bs-toggle= "tab" href= "#tab3a" role= "tab" aria-controls= "tab3a" aria-selected= "false" >
<svg class= "icon icon-lg" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg>
<span class= "visually-hidden" > Tab titolo 3</span>
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" id= "tab4a-tab" data-bs-toggle= "tab" href= "#tab4a" role= "tab" aria-controls= "tab4a" aria-selected= "false" aria-disabled= "true" tabindex= "-1" >
<svg class= "icon icon-lg" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg>
<span class= "visually-hidden" > Tab titolo 4</span>
</a>
</li>
</ul>
<div class= "tab-content" id= "myTab2Content" >
<div class= "tab-pane p-4 fade show active" id= "tab1a" role= "tabpanel" aria-labelledby= "tab1a-tab" ><p> Contenuto 1</p></div>
<div class= "tab-pane p-4 fade" id= "tab2a" role= "tabpanel" aria-labelledby= "tab2a-tab" ><p> Contenuto 2</p></div>
<div class= "tab-pane p-4 fade" id= "tab3a" role= "tabpanel" aria-labelledby= "tab3a-tab" ><p> Contenuto 3</p></div>
<div class= "tab-pane p-4 fade" id= "tab4a" role= "tabpanel" aria-labelledby= "tab4a-tab" > Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)</div>
</div>
Tab con testo e icona
Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)
<ul class= "nav nav-tabs nav-tabs-icon-text" id= "myTab3" role= "tablist" >
<li class= "nav-item" >
<a class= "nav-link active" id= "tab1c-tab" data-bs-toggle= "tab" href= "#tab1b" role= "tab" aria-controls= "tab1b" aria-selected= "true" >
<svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 1
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "tab2b-tab" data-bs-toggle= "tab" href= "#tab2b" role= "tab" aria-controls= "tab2b" aria-selected= "false" >
<svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 2
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "tab3b-tab" data-bs-toggle= "tab" href= "#tab3b" role= "tab" aria-controls= "tab3b" aria-selected= "false" >
<svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 3
</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" id= "tab4b-tab" data-bs-toggle= "tab" href= "#tab4b" role= "tab" aria-controls= "tab3b" aria-selected= "false" aria-disabled= "true" tabindex= "-1" >
<svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 4
</a>
</li>
</ul>
<div class= "tab-content" id= "myTab3Content" >
<div class= "tab-pane p-4 fade show active" id= "tab1b" role= "tabpanel" aria-labelledby= "tab1c-tab" ><p> Contenuto 1</p></div>
<div class= "tab-pane p-4 fade" id= "tab2b" role= "tabpanel" aria-labelledby= "tab2b-tab" ><p> Contenuto 2</p></div>
<div class= "tab-pane p-4 fade" id= "tab3b" role= "tabpanel" aria-labelledby= "tab3b-tab" ><p> Contenuto 3</p></div>
<div class= "tab-pane p-4 fade" id= "tab4b" role= "tabpanel" aria-labelledby= "tab4b-tab" > Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)</div>
</div>
Allo stesso modo di quanto avviene con i normali .nav
, a seconda delle tue necessità, è possibile modificare tale codice con un markup diverso, diverso dalla classica lista basata su <ul>
. È importante notare però, che nel caso si desideri usare l’elemento <nav>
, l’attributo role="tablist"
non deve essere applicato direttamente su di esso, in quanto sovrascriverebbe il ruolo dell’elemento stesso per la navigazione.
Si può, alternativamente, usare un diverso elemento (nell’esempio seguente un semplice <div>
) e racchiuderlo con <nav>
:
Contenuto 1
Contenuto 2
Contenuto 3
<nav>
<div class= "nav nav-tabs" id= "nav-tab" role= "tablist" >
<a class= "nav-item nav-link active" id= "nav-tab1-tab" data-bs-toggle= "tab" href= "#nav-tab1" role= "tab" aria-controls= "nav-tab1" aria-selected= "true" > Tab 1</a>
<a class= "nav-item nav-link" id= "nav-tab2-tab" data-bs-toggle= "tab" href= "#nav-tab2" role= "tab" aria-controls= "nav-tab2" aria-selected= "false" > Tab 2</a>
<a class= "nav-item nav-link" id= "nav-tab3-tab" data-bs-toggle= "tab" href= "#nav-tab3" role= "tab" aria-controls= "nav-tab3" aria-selected= "false" > Tab 3</a>
</div>
</nav>
<div class= "tab-content" id= "nav-tabContent" >
<div class= "tab-pane p-4 fade show active" id= "nav-tab1" role= "tabpanel" aria-labelledby= "nav-tab1-tab" > Contenuto 1</div>
<div class= "tab-pane p-4 fade" id= "nav-tab2" role= "tabpanel" aria-labelledby= "nav-tab2-tab" > Contenuto 2</div>
<div class= "tab-pane p-4 fade" id= "nav-tab3" role= "tabpanel" aria-labelledby= "nav-tab3-tab" > Contenuto 3</div>
</div>
Tab verticali
Utilizzando gli strumenti di layout di Bootstrap 5 è possibile realizzare tab a orientamento verticale. Al <div>
contenitore dei link dei tab va aggiunta la classe .nav-tabs-vertical
.
Tab testuale
Contenuto 1
Contenuto 2
Contenuto 3
<div class= "bd-example-tabs" >
<div class= "row" >
<div class= "col-4 col-md-3" >
<div class= "nav nav-tabs nav-tabs-vertical" id= "nav-vertical-tab" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link active" id= "nav-vertical-tab1-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab1" role= "tab" aria-controls= "nav-vertical-tab1" aria-selected= "true" > Tab 1</a>
<a class= "nav-link" id= "nav-vertical-tab2-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab2" role= "tab" aria-controls= "nav-vertical-tab2" aria-selected= "false" > Tab 2</a>
<a class= "nav-link" id= "nav-vertical-tab3-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab3" role= "tab" aria-controls= "nav-vertical-tab3" aria-selected= "false" > Tab 3</a>
<a class= "nav-link" > ...</a>
</div>
</div>
<div class= "col-8 col-md-9" >
<div class= "tab-content" id= "nav-vertical-tabContent" >
<div class= "tab-pane p-3 fade show active" id= "nav-vertical-tab1" role= "tabpanel" aria-labelledby= "nav-vertical-tab1-tab" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab2" role= "tabpanel" aria-labelledby= "nav-vertical-tab2-tab" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab3" role= "tabpanel" aria-labelledby= "nav-vertical-tab3-tab" > Contenuto 3</div>
</div>
</div>
</div>
</div>
Tab testuale con colore di sfondo
Aggiungendo la classe .nav-tabs-vertical-background
al <div>
contenitore dei link i tab selezionati avranno un colore di sfondo.
Contenuto 1
Contenuto 2
Contenuto 3
<div class= "bd-example-tabs" >
<div class= "row" >
<div class= "col-4 col-md-3" >
<div class= "nav nav-tabs nav-tabs-vertical nav-tabs-vertical-background" id= "nav-vertical-tab-bg" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link active" id= "nav-vertical-tab-bg1-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-bg1" role= "tab" aria-controls= "nav-vertical-tab-bg1" aria-selected= "true" > Tab 1</a>
<a class= "nav-link" id= "nav-vertical-tab-bg2-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-bg2" role= "tab" aria-controls= "nav-vertical-tab-bg2" aria-selected= "false" > Tab 2</a>
<a class= "nav-link" id= "nav-vertical-tab-bg3-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-bg3" role= "tab" aria-controls= "nav-vertical-tab-bg3" aria-selected= "false" > Tab 3</a>
<a class= "nav-link" > ...</a>
</div>
</div>
<div class= "col-8 col-md-9" >
<div class= "tab-content" id= "nav-vertical-tab-bgContent" >
<div class= "tab-pane p-3 fade show active" id= "nav-vertical-tab-bg1" role= "tabpanel" aria-labelledby= "nav-vertical-tab-bg1-tab" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-bg2" role= "tabpanel" aria-labelledby= "nav-vertical-tab-bg2-tab" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-bg3" role= "tabpanel" aria-labelledby= "nav-vertical-tab-bg3-tab" > Contenuto 3</div>
</div>
</div>
</div>
</div>
Tab con testo e icona
Contenuto 1
Contenuto 2
Contenuto 3
<div class= "bd-example-tabs" >
<div class= "row" >
<div class= "col-5 col-md-4 col-lg-3" >
<div class= "nav nav-tabs nav-tabs-vertical" id= "nav-vertical-tab-ico" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link active" id= "nav-vertical-tab-ico1-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico1" role= "tab" aria-controls= "nav-vertical-tab-ico1" aria-selected= "true" > Tab 1 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link" id= "nav-vertical-tab-ico2-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico2" role= "tab" aria-controls= "nav-vertical-tab-ico2" aria-selected= "false" > Tab 2 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link" id= "nav-vertical-tab-ico3-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico3" role= "tab" aria-controls= "nav-vertical-tab-ico3" aria-selected= "false" > Tab 3 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link" > ...</a>
</div>
</div>
<div class= "col-7 col-md-8 col-lg-9" >
<div class= "tab-content" id= "nav-vertical-tab-icoContent" >
<div class= "tab-pane p-3 fade show active" id= "nav-vertical-tab-ico1" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico1-tab" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico2" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico2-tab" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico3" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico3-tab" > Contenuto 3</div>
</div>
</div>
</div>
</div>
Tab con icona
Le label dei Tab possono essere sostituite da icone, avendo cura di includere all’interno del link un elemento <span>
contenente la descrizione per non gli screen reader del tab con classe .visually-hidden
per nascondere la descrizione agli altri browser. Al tag <a>
contenente l’icona va aggiunta la classe .justify-content-end
per allineare l’icona a destra.
Contenuto 1
Contenuto 2
Contenuto 3
<div class= "bd-example-tabs" >
<div class= "row" >
<div class= "col-3" >
<div class= "nav nav-tabs nav-tabs-vertical" id= "nav-vertical-tab-ico-only" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link justify-content-end active" id= "nav-vertical-tab-ico-only1-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-only1" role= "tab" aria-controls= "nav-vertical-tab-ico-only1" aria-selected= "true" ><span class= "visually-hidden" > Tab titolo 1</span> <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link justify-content-end" id= "nav-vertical-tab-ico-only2-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-only2" role= "tab" aria-controls= "nav-vertical-tab-ico-only2" aria-selected= "false" ><span class= "visually-hidden" > Tab titolo 2</span> <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-calendar" ></use></svg></a>
<a class= "nav-link justify-content-end" id= "nav-vertical-tab-ico-only3-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-only3" role= "tab" aria-controls= "nav-vertical-tab-ico-only3" aria-selected= "false" ><span class= "visually-hidden" > Tab titolo 3</span> <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-comment" ></use></svg></a>
<a class= "nav-link justify-content-end" > ...</a>
</div>
</div>
<div class= "col-9" >
<div class= "tab-content" id= "nav-vertical-tab-ico-onlyContent" >
<div class= "tab-pane p-3 fade show active" id= "nav-vertical-tab-ico-only1" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-only1-tab" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-only2" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-only2-tab" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-only3" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-only3-tab" > Contenuto 3</div>
</div>
</div>
</div>
</div>
Posizione dei Tab
Per questioni di accessibilità è preferibile utilizzare le proprietà Flex di CSS a un cambio di posizione dei Tab nell’HTML. Per garantire un flusso di lettura naturale della pagina i tab di navigazione devono precedere il contenuto a loro associato.
Orizzontale in fondo
Per posizionare i tab al di sotto del contenuto è necessario utilizzare un elemento contenitore (ad esempio un <div>) con classi .d-flex
e .flex-column-reverse
.
Contenuto 1
Contenuto 2
Contenuto 3
Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)
<div class= "d-flex flex-column-reverse" >
<ul class= "nav nav-tabs" id= "pos-hr" role= "tablist" >
<li class= "nav-item" ><a class= "nav-link active" id= "pos-hr1-tab" data-bs-toggle= "tab" href= "#pos-hrtab1" role= "tab" aria-controls= "pos-hrtab1" aria-selected= "true" > Tab 1</a></li>
<li class= "nav-item" ><a class= "nav-link" id= "pos-hr2-tab" data-bs-toggle= "tab" href= "#pos-hrtab2" role= "tab" aria-controls= "pos-hrtab2" aria-selected= "false" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" id= "pos-hr3-tab" data-bs-toggle= "tab" href= "#pos-hrtab3" role= "tab" aria-controls= "pos-hrtab3" aria-selected= "false" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" id= "pos-hr4-tab" data-bs-toggle= "tab" href= "#pos-hrtab4" role= "tab" aria-controls= "pos-hrtab4" aria-selected= "false" aria-disabled= "true" tabindex= "-1" > Tab 4 Disabilitato</a></li>
</ul>
<div class= "tab-content" id= "pos-hrContent" >
<div class= "tab-pane p-4 fade show active" id= "pos-hrtab1" role= "tabpanel" aria-labelledby= "pos-hr1-tab" > Contenuto 1</div>
<div class= "tab-pane p-4 fade" id= "pos-hrtab2" role= "tabpanel" aria-labelledby= "pos-hr2-tab" > Contenuto 2</div>
<div class= "tab-pane p-4 fade" id= "pos-hrtab3" role= "tabpanel" aria-labelledby= "pos-hr3-tab" > Contenuto 3</div>
<div class= "tab-pane p-4 fade" id= "pos-hrtab4" role= "tabpanel" aria-labelledby= "pos-hr3-tab" > Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)</div>
</div>
</div>
Verticale a destra
Per posizionare i tab verticali a destra contenuto è necessario applicare la classe .flex-row-reverse
all’elemento con classe .row
che li contiene.
Contenuto 1
Contenuto 2
Contenuto 3
<div class= "bd-example-tabs" >
<div class= "row flex-row-reverse" >
<div class= "col-5 col-md-4 col-lg-3" >
<div class= "nav nav-tabs nav-tabs-vertical" id= "pos-vr" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link active" id= "pos-vr1-tab" data-bs-toggle= "tab" href= "#pos-vr1" role= "tab" aria-controls= "pos-vr1" aria-selected= "true" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 1</a>
<a class= "nav-link" id= "pos-vr2-tab" data-bs-toggle= "tab" href= "#pos-vr2" role= "tab" aria-controls= "pos-vr2" aria-selected= "false" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 2</a>
<a class= "nav-link" id= "pos-vr3-tab" data-bs-toggle= "tab" href= "#pos-vr3" role= "tab" aria-controls= "pos-vr3" aria-selected= "false" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 3</a>
<a class= "nav-link" > ...</a>
</div>
</div>
<div class= "col-7 col-md-8 col-lg-9" >
<div class= "tab-content" id= "pos-vrContent" >
<div class= "tab-pane p-3 fade show active" id= "pos-vr1" role= "tabpanel" aria-labelledby= "pos-vr1-tab" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "pos-vr2" role= "tabpanel" aria-labelledby= "pos-vr2-tab" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "pos-vr3" role= "tabpanel" aria-labelledby= "pos-vr3-tab" > Contenuto 3</div>
</div>
</div>
</div>
</div>
Tab con sfondo scuro
Tab orizzontali a tutta larghezza
<ul class= "nav nav-tabs auto nav-dark" >
<li class= "nav-item" ><a class= "nav-link active" > Tab 1 Attivo</a></li>
<li class= "nav-item" ><a class= "nav-link" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" tabindex= "-1" > Tab 4 Disabilitato</a></li>
</ul>
Tab con testo e icona
<ul class= "nav nav-tabs nav-tabs-icon-text nav-dark" >
<li class= "nav-item" ><a class= "nav-link active" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 1</a></li>
<li class= "nav-item" ><a class= "nav-link" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" tabindex= "-1" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 4</a></li>
</ul>
Tab verticali
Contenuto 1
Contenuto 2
Contenuto 3
Contenuto 4
<div class= "bd-example-tabs" >
<div class= "row" >
<div class= "col-5 col-md-4 col-lg-3" >
<div class= "nav nav-tabs nav-tabs-vertical nav-dark" id= "nav-vertical-tab-ico-dark" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link active" id= "nav-vertical-tab-dark1-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark1" role= "tab" aria-controls= "nav-vertical-tab-dark1" aria-selected= "true" > Tab 1 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link" id= "nav-vertical-tab-ico-dark2-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark2" role= "tab" aria-controls= "nav-vertical-tab-ico-dark2" aria-selected= "false" > Tab 2 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link" id= "nav-vertical-tab-ico-dark3-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark3" role= "tab" aria-controls= "nav-vertical-tab-ico-dark3" aria-selected= "false" > Tab 3 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
<a class= "nav-link disabled" id= "nav-vertical-tab-ico-dark4-tab" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark4" role= "tab" aria-controls= "nav-vertical-tab-ico-dark4" aria-selected= "false" > Tab 4 <svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg></a>
</div>
</div>
<div class= "col-7 col-md-8 col-lg-9 p-4" >
<div class= "tab-content" id= "nav-vertical-tab-ico-darkContent" >
<div class= "tab-pane p-3 fade show active" id= "nav-vertical-tab-ico-dark1" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark1-tab" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-dark2" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark2-tab" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-dark3" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark3-tab" > Contenuto 3</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-dark4" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark4-tab" > Contenuto 4</div>
</div>
</div>
</div>
</div>
Contenuto 1
Contenuto 2
Contenuto 3
Contenuto 4
<div class= "bd-example-tabs" >
<div class= "row flex-row-reverse" >
<div class= "col-5 col-md-4 col-lg-3" >
<div class= "nav nav-tabs nav-tabs-vertical nav-dark" id= "nav-vertical-tab-ico-dark-rev" role= "tablist" aria-orientation= "vertical" >
<a class= "nav-link active" id= "nav-vertical-tab-dark1-tab-rev" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark1-rev" role= "tab" aria-controls= "nav-vertical-tab-dark1-rev" aria-selected= "true" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 1</a>
<a class= "nav-link" id= "nav-vertical-tab-ico-dark2-tab-rev" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark2-rev" role= "tab" aria-controls= "nav-vertical-tab-ico-dark2-rev" aria-selected= "false" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 2</a>
<a class= "nav-link" id= "nav-vertical-tab-ico-dark3-tab-rev" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark3-rev" role= "tab" aria-controls= "nav-vertical-tab-ico-dark3-rev" aria-selected= "false" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 3</a>
<a class= "nav-link disabled" id= "nav-vertical-tab-ico-dark4-tab-rev" data-bs-toggle= "tab" href= "#nav-vertical-tab-ico-dark4-rev" role= "tab" aria-controls= "nav-vertical-tab-ico-dark4-rev" aria-selected= "false" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-link" ></use></svg> Tab 4</a>
</div>
</div>
<div class= "col-7 col-md-8 col-lg-9 p-4" >
<div class= "tab-content" id= "nav-vertical-tab-ico-darkContent-rev" >
<div class= "tab-pane p-3 fade show active" id= "nav-vertical-tab-ico-dark1-rev" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark1-tab-rev" > Contenuto 1</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-dark2-rev" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark2-tab-rev" > Contenuto 2</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-dark3-rev" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark3-tab-rev" > Contenuto 3</div>
<div class= "tab-pane p-3 fade" id= "nav-vertical-tab-ico-dark4-rev" role= "tabpanel" aria-labelledby= "nav-vertical-tab-ico-dark4-tab-rev" > Contenuto 4</div>
</div>
</div>
</div>
</div>
Tab tipo Card
Aggiungere la classe .nav-tabs-cards
al tag ul
per ottenere un design tipo card.
Contenuto 1
Contenuto 2
Contenuto 3
Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)
<ul class= "nav nav-tabs nav-tabs-cards" id= "card-simple" role= "tablist" >
<li class= "nav-item" ><a class= "nav-link active" id= "card-simple1-tab" data-bs-toggle= "tab" href= "#card-simpletab1" role= "tab" aria-controls= "card-simpletab1" aria-selected= "true" > Tab 1</a></li>
<li class= "nav-item" ><a class= "nav-link" id= "card-simple2-tab" data-bs-toggle= "tab" href= "#card-simpletab2" role= "tab" aria-controls= "card-simpletab2" aria-selected= "false" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" id= "card-simple3-tab" data-bs-toggle= "tab" href= "#card-simpletab3" role= "tab" aria-controls= "card-simpletab3" aria-selected= "false" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" id= "card-simple4-tab" data-bs-toggle= "tab" href= "#card-simpletab4" role= "tab" aria-controls= "card-simpletab4" aria-selected= "false" aria-disabled= "true" tabindex= "-1" > Tab 4 Disabilitato</a></li>
<li class= "nav-item-filler" ></li>
</ul>
<div class= "tab-content" id= "card-simpleContent" >
<div class= "tab-pane p-4 fade show active" id= "card-simpletab1" role= "tabpanel" aria-labelledby= "card-simple1-tab" > Contenuto 1</div>
<div class= "tab-pane p-4 fade" id= "card-simpletab2" role= "tabpanel" aria-labelledby= "card-simple2-tab" > Contenuto 2</div>
<div class= "tab-pane p-4 fade" id= "card-simpletab3" role= "tabpanel" aria-labelledby= "card-simple3-tab" > Contenuto 3</div>
<div class= "tab-pane p-4 fade" id= "card-simpletab4" role= "tabpanel" aria-labelledby= "card-simple4-tab" > Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)</div>
</div>
Tab tipo Card con pulsanti aggiungi/elimina
Aggiungere le classi .nav-tabs-editable
e .nav-tabs-cards
al tag ul
per ottenere un design tipo card editabili. Includere l’hmtl degli ulteriori elementi di interfaccia come da esempio.
Contenuto 1
Contenuto 2
Contenuto 3
Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)
<div class= "nav-tabs-wrapper" >
<ul class= "nav nav-tabs nav-tabs-cards nav-tabs-editable" id= "card-simple-btn" role= "tablist" >
<li class= "nav-item" >
<a class= "nav-link active" id= "card-simple-btn1-tab" data-bs-toggle= "tab" href= "#card-simple-btntab1" role= "tab" aria-controls= "card-simple-btntab1" aria-selected= "true" > Tab 1 </a>
<a class= "nav-link-close" href= "#" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-close" ></use></svg><span class= "visually-hidden" > Chiudi tab 1</span></a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "card-simple-btn2-tab" data-bs-toggle= "tab" href= "#card-simple-btntab2" role= "tab" aria-controls= "card-simple-btntab2" aria-selected= "false" > Tab 2</a>
<a class= "nav-link-close" href= "#" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-close" ></use></svg><span class= "visually-hidden" > Chiudi tab 2</span></a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "card-simple-btn3-tab" data-bs-toggle= "tab" href= "#card-simple-btntab3" role= "tab" aria-controls= "card-simple-btntab3" aria-selected= "false" > Tab 3</a>
<a class= "nav-link-close" href= "#" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-close" ></use></svg><span class= "visually-hidden" > Chiudi tab 3</span></a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" id= "card-simple-btn4-tab" data-bs-toggle= "tab" href= "#card-simple-btntab4" role= "tab" aria-controls= "card-simple-btntab4" aria-selected= "false" aria-disabled= "true" tabindex= "-1" > Tab 4 Disabilitato</a>
<a class= "nav-link-close disabled" href= "#" ><svg class= "icon" ><use href= "/dist/svg/sprites.svg#it-close" ></use></svg><span class= "visually-hidden" > Chiudi tab 4</span></a>
</li>
<li class= "nav-item-filler" ></li>
<li class= "nav-item" >
<a class= "nav-tab-add" ><span class= "visually-hidden" > Aggiungi un tab</span></a>
</li>
</ul>
</div>
<div class= "tab-content" id= "card-simple-btnContent" >
<div class= "tab-pane p-4 fade show active" id= "card-simple-btntab1" role= "tabpanel" aria-labelledby= "card-simple-btn1-tab" > Contenuto 1</div>
<div class= "tab-pane p-4 fade" id= "card-simple-btntab2" role= "tabpanel" aria-labelledby= "card-simple-btn2-tab" > Contenuto 2</div>
<div class= "tab-pane p-4 fade" id= "card-simple-btntab3" role= "tabpanel" aria-labelledby= "card-simple-btn3-tab" > Contenuto 3</div>
<div class= "tab-pane p-4 fade" id= "card-simple-btntab4" role= "tabpanel" aria-labelledby= "card-simple-btn3-tab" > Contenuto 4 (non raggiungibile, il tab relativo è disabilitato)</div>
</div>
Effetto “a comparsa”
Per fare in modo che i tab appaiano con un’animazione “a comparsa” (fade in), è sufficiente aggiungere la classe .fade
ad ogni .tab-pane
. Il primo .tab-pane
dovrà anche avere la classe .show
per rendere il contenuto iniziale visibile.
<div class= "tab-content" >
<div class= "tab-pane fade show active" id= "tab1" role= "tabpanel" aria-labelledby= "content-tab-tab" > ...</div>
<div class= "tab-pane fade" id= "tab2" role= "tabpanel" aria-labelledby= "tab2-tab" > ...</div>
<div class= "tab-pane fade" id= "tab3" role= "tabpanel" aria-labelledby= "tab3-tab" > ...</div>
<div class= "tab-pane fade" id= "tab4" role= "tabpanel" aria-labelledby= "tab4-tab" > ...</div>
</div>
Si possono trovare dettagli aggiuntivi sulla gestione attraverso JavaScript di metodi ed eventi sui tab alla pagina corrispondente sul sito di Bootstrap.
Implementazione
Tramite data attributes
Puoi attivare una navigazione a tab senza scrivere JavaScript, semplicemente utilizzando la proprietà data-bs-toggle="tab"
nel link all’interno di liste di tipo .nav-tabs
:
<!-- Nav tabs -->
<ul class= "nav nav-tabs" id= "myTab" role= "tablist" >
<li class= "nav-item" >
<a class= "nav-link active" id= "data-ex-tab1-tab" data-bs-toggle= "tab" href= "#tab1" role= "tab" aria-controls= "tab1" aria-selected= "true" > Tab 1</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "data-ex-tab2-tab" data-bs-toggle= "tab" href= "#tab2" role= "tab" aria-controls= "tab2" aria-selected= "false" > Tab 2</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "data-ex-tab3-tab" data-bs-toggle= "tab" href= "#tab3" role= "tab" aria-controls= "tab3" aria-selected= "false" > Tab 3</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" id= "data-ex-tab4-tab" data-bs-toggle= "tab" href= "#tab4" role= "tab" aria-controls= "tab4" aria-selected= "false" > Tab 4</a>
</li>
</ul>
<!-- Tab panes -->
<div class= "tab-content" >
<div class= "tab-pane active" id= "data-ex-tab1" role= "tabpanel" aria-labelledby= "data-ex-tab1-tab" > ...</div>
<div class= "tab-pane" id= "data-ex-tab2" role= "tabpanel" aria-labelledby= "data-ex-tab2-tab" > ...</div>
<div class= "tab-pane" id= "data-ex-tab3" role= "tabpanel" aria-labelledby= "data-ex-tab3-tab" > ...</div>
<div class= "tab-pane" id= "data-ex-tab4" role= "tabpanel" aria-labelledby= "data-ex-tab4-tab" > ...</div>
</div>
Tramite JavaScript
Alternativamente, è possibile attivare i tab utilizzando JavaScript:
var triggerTabList = []. slice . call ( document . querySelectorAll ( ' #myTab a ' ))
triggerTabList . forEach ( function ( triggerEl ) {
var tabTrigger = new bootstrap . Tab ( triggerEl )
triggerEl . addEventListener ( ' click ' , function ( event ) {
event . preventDefault ()
tabTrigger . show ()
})
})
È possibile attivare tab individualmente in diversi modi:
var triggerEl = document . querySelector ( ' #myTab a[href="#profile"] ' )
bootstrap . Tab . getInstance ( triggerEl ). show () // Select tab by name
var triggerFirstTabEl = document . querySelector ( ' #myTab li:first-child a ' )
bootstrap . Tab . getInstance ( triggerFirstTabEl ). show () // Select first tab