Documentazione ed esempi del componente di paginazione utile per indicare una serie di contenuti correlati tra più pagine.
Panoramica
I collegamenti della paginazione sono contenuti per praticità in un elemento <nav class="pagination-wrapper"> per dare la possibilità agli screenreader, e altre tecnologie assistive, di identificarli come una sezione di navigazione.
Accessibilità
Poiché è molto probabile che la pagina possa contenere più di un elemento <nav class="pagination-wrapper"> è consigliabile inserire un attributo aria-label con la descrizione del suo scopo. Ad esempio, se il componente di impaginazione viene utilizzato per navigare tra una serie di risultati di ricerca, un’etichetta appropriata potrebbe essere aria-label="Pagine dei risultati di ricerca".
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<navclass="pagination-wrapper"aria-label="Esempio di navigazione della pagina"><ulclass="pagination"><liclass="page-item disabled"><aclass="page-link"href="#"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><aclass="page-link"aria-current="page"href="#">1</a></li><liclass="page-item"><aclass="page-link"href="#">2</a></li><liclass="page-item"><aclass="page-link"href="#">3</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul></nav>
Stato disabilitato e attivo
I link della paginazione assumono uno stato disabilitato usando la classe .disabled nel tag <li>.
Per indicare la pagina attiva corrente utilizzare l’attributo aria-current="page" nel tag <a>, l’aspetto grafico cambierà di conseguenza.
Disabilitazione link
La classe .disabled usa pointer-events: none per provare a disabilitare l’attivazione dei comportamenti di default dei link <a>, ma tale funzionalità non è gestita in alcuni browsers. Oltre a questo, la navigazione attraverso tastiera rimane abilitata, per cui utenti che utilizzano tecnologie assistive saranno comunque in grado di attivare tali link. Per ovviare a questo problema, è possibile aggiungere l’attributo tabindex="-1", e utilizzare JavaScript per disabilitare le loro funzionalità.
È inoltre consigliabile applicare aria-hidden="true" ai link disabilitati per evitare che vengano considerati nel conteggio degli elementi totali in lista fornito dagli screen reader.
In alternativa per la paginazione si può sostituire il link disabilitato con uno <span> avente classe .page-link e contenuto in un <li> con classe .nolink (es.: <li class="page-item"><span class="page-link">1</span></li>).
Con i dovuti accorgimenti sopraelencati e inserendo alcune classi delle utilità display si può trasformare la paginazione in base alla risoluzione del dispositivo in uso dell’utente.
La paginazione base può essere integrata con elementi aggiuntivi per rendere più fruibile la navigazione quando il numero di pagine è elevato. È inoltre disponibile una versione semplificata ottimizzata per dispositivi mobile.
More
Quando è presente un grande numero di pagine è consigliabile visualizzare unicamente le pagine più prossime a quella corrente, inserendo delle ellissi (…) fra queste e la prima ed ultima pagina. Non essendo collegate a nessuna pagina le ellissi vanno inserite in un tag <span>.
<navclass="pagination-wrapper"aria-label="Esempio di navigazione con jump to page"><ulclass="pagination"><liclass="page-item"><aclass="page-link"href="#"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><aclass="page-link"href="#">1</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">24</a></li><liclass="page-item"><aclass="page-link"href="#">25</a></li><liclass="page-item active"><aclass="page-link"href="#"aria-current="page"><spanclass="d-inline-block d-sm-none">Pagina </span>26
</a></li><liclass="page-item"><aclass="page-link"href="#">27</a></li><liclass="page-item"><aclass="page-link"href="#">28</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">50</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul><divclass="form-group"><inputtype="text"class="form-control"id="jumpToPage"maxlength="3"><labelfor="jumpToPage"><spanaria-hidden="true">Vai a ...</span><spanclass="visually-hidden">Indica la pagina desiderata</span></label></div></nav>
Simple mode
La paginazione in versione “Simple mode” è ottimizzata per i dispositivi mobile. Può essere utilizzata anche su tablet e desktop quando il numero di pagine è ridotto.
<navclass="pagination-wrapper"aria-label="Esempio di navigazione simple mode"><ulclass="pagination"aria-label="Pagina 1 di 5"><liclass="page-item disabled"><aclass="page-link"href="#"tabindex="-1"aria-hidden="true"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><spanclass="page-link"aria-current="page">1</span></li><liclass="page-item"><spanclass="page-link">/</span></li><liclass="page-item"><spanclass="page-link">5</span></li><liclass="page-item visually-hidden"><aclass="page-link"href="#"aria-current="page">Pagina 1 di 5</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul></nav>
Link testuali
Le icone chevron utilizzate come link di navigazione possono essere sostituite da link testuali come “precedente” e “successiva”. In tal caso al tag <a> contenente il testo dovrà essere aggiunta la classe .text. Es: <a class="page-link text" href="#">Precedente</a>.
Notare come sia stato inserito il testo “Pagina” in un elemento <span class="visually-hidden"> invisibile su schermo ma enunciabile dagli screen reader per facilitare la comprensione agli utenti che utilizzano tecnologie assistive.
<navclass="pagination-wrapper"aria-label="Esempio di navigazione con link testuali"><ulclass="pagination"><liclass="page-item"><aclass="page-link text"href="#"><spanclass="visually-hidden">Pagina </span>Precedente</a></li><liclass="page-item"><aclass="page-link"href="#">1</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">24</a></li><liclass="page-item"><aclass="page-link"href="#">25</a></li><liclass="page-item active"><aclass="page-link"href="#"aria-current="page"><spanclass="d-inline-block d-sm-none">Pagina </span>26
</a></li><liclass="page-item"><aclass="page-link"href="#">27</a></li><liclass="page-item"><aclass="page-link"href="#">28</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">50</a></li><liclass="page-item"><aclass="page-link text"href="#"><spanclass="visually-hidden">Pagina </span>Successiva</a></li></ul></nav>
Total number
Aggiungendo la classe .pagination-total al tag <nav> che contiene la paginazione è possibile indicare il numero totale di elementi o il numero totale di elementi per pagina all’interno di un tag <p> collocato priam della chiusura del <nav>.
<navclass="pagination-wrapper pagination-total"aria-label="Esempio di navigazione con total number"><ulclass="pagination"><liclass="page-item"><aclass="page-link"href="#"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><aclass="page-link"href="#">1</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item active"><aclass="page-link"href="#"aria-current="page"><spanclass="d-inline-block d-sm-none">Pagina </span>24
</a></li><liclass="page-item"><aclass="page-link"href="#">25</a></li><liclass="page-item"><aclass="page-link"href="#">26</a></li><liclass="page-item"><aclass="page-link"href="#">27</a></li><liclass="page-item"><aclass="page-link"href="#">28</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">50</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul><p>Totale 300 elementi </p></nav>
<navclass="pagination-wrapper pagination-total"aria-label="Esempio di navigazione con total number"><ulclass="pagination"><liclass="page-item"><aclass="page-link"href="#"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><aclass="page-link"href="#">1</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item active"><aclass="page-link"href="#"aria-current="page"><spanclass="d-inline-block d-sm-none">Pagina </span>24
</a></li><liclass="page-item"><aclass="page-link"href="#">25</a></li><liclass="page-item"><aclass="page-link"href="#">26</a></li><liclass="page-item"><aclass="page-link"href="#">27</a></li><liclass="page-item"><aclass="page-link"href="#">28</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">50</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul><p>100-110 di 300 elementi</p></nav>
<navclass="pagination-wrapper justify-content-center pagination-total"aria-label="Esempio di navigazione con total number"><ulclass="pagination"><liclass="page-item"><aclass="page-link"href="#"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><aclass="page-link"href="#">1</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item active"><aclass="page-link"href="#"aria-current="page"><spanclass="d-inline-block d-sm-none">Pagina </span>24
</a></li><liclass="page-item"><aclass="page-link"href="#">25</a></li><liclass="page-item"><aclass="page-link"href="#">26</a></li><liclass="page-item"><aclass="page-link"href="#">27</a></li><liclass="page-item"><aclass="page-link"href="#">28</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">50</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul><p>100-110 di 300 elementi</p></nav>
<navclass="pagination-wrapper justify-content-end pagination-total"aria-label="Esempio di navigazione con total number"><ulclass="pagination"><liclass="page-item"><aclass="page-link"href="#"><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-left"></use></svg><spanclass="visually-hidden">Pagina precedente</span></a></li><liclass="page-item"><aclass="page-link"href="#">1</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item active"><aclass="page-link"href="#"aria-current="page"><spanclass="d-inline-block d-sm-none">Pagina </span>24
</a></li><liclass="page-item"><aclass="page-link"href="#">25</a></li><liclass="page-item"><aclass="page-link"href="#">26</a></li><liclass="page-item"><aclass="page-link"href="#">27</a></li><liclass="page-item"><aclass="page-link"href="#">28</a></li><liclass="page-item"><spanclass="page-link">...</span></li><liclass="page-item"><aclass="page-link"href="#">50</a></li><liclass="page-item"><aclass="page-link"href="#"><spanclass="visually-hidden">Pagina successiva</span><svgclass="icon icon-primary"><usehref="/bootstrap-italia/dist/svg/sprites.svg#it-chevron-right"></use></svg></a></li></ul><p>100-110 di 300 elementi</p></nav>
Breaking change
Il toggle del dropdown diventa <button> invece di <a>.