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
.
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" href= "#" > Attivo</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" href= "#" > Link</a>
</li>
<li class= "nav-item" >
<a class= "nav-link" href= "#" > Link</a>
</li>
<li class= "nav-item" >
<a class= "nav-link disabled" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" >
<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" href= "#" 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" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" 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" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" 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" href= "#" aria-current= "page" > Tab 1 Attivo</a></li>
<li class= "nav-item" ><a class= "nav-link" href= "#" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" href= "#" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" href= "#" 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" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" 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" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" 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" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" 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" href= "#" 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" href= "#" >
<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" href= "#" >
<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" href= "#" >
<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" href= "#" >
<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" href= "#" >
<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" href= "#" >
<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 garantiore 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" href= "#" > Tab 1 Attivo</a></li>
<li class= "nav-item" ><a class= "nav-link" href= "#" > Tab 2</a></li>
<li class= "nav-item" ><a class= "nav-link" href= "#" > Tab 3</a></li>
<li class= "nav-item" ><a class= "nav-link disabled" href= "#" 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" href= "#" ><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" href= "#" ><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" href= "#" ><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" href= "#" 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 href= "#" class= "nav-link-close" ><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 href= "#" class= "nav-link-close" ><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 href= "#" class= "nav-link-close" ><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 href= "#" class= "nav-link-close disabled" ><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 href= "#" 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