Bootstrap prevede una serie di regole stilistiche per la formattazione delle tabelle. Per applicare questi stili si aggiunge la classe .table al tag <table>.
Il markup HTML di base da usare è questo:
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Cognome</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Marco</td>
<td>Rossi</td>
<td>marcoR</td>
</tr>
<tr>
<td>2</td>
<td>Paolo</td>
<td>Bianchi</td>
<td>paoloB</td>
</tr>
<tr>
<td>3</td>
<td>Sandro</td>
<td>Verdi</td>
<td>sandroV</td>
</tr>
</tbody>
</table>
Il risultato è questo:
| ID | Nome | Cognome | Username |
|---|---|---|---|
| 1 | Marco | Rossi | marcoR |
| 2 | Paolo | Bianchi | paoloB |
| 3 | Sandro | Verdi | sandroV |
Le tabelle di Bootstrap hanno di default una larghezza massima (max-width) e una larghezza (width) del 100%. Per modificare queste impostazioni si può intervenire su queste regole:
table {
max-width: 100%;
background-color: transparent;
}
.table {
width: 100%;
margin-bottom: 20px;
}
A livello tipografico e per il colore di sfondo vengono ereditate le impostazioni globali. Il testo della testata della tabella (thead e <th>) è in grassetto e allineato a sinistra.
th {
text-align: left;
}
Nella configurazione di base, viene assegnato un bordo superiore alle celle. Il colore e lo spessore del bordo, oltre al padding per le celle, può essere modificato a partire da questa regola:
.table thead > tr > th,
.table tbody > tr > th,
.table tfoot > tr > th,
.table thead > tr > td,
.table tbody > tr > td,
.table tfoot > tr > td {
padding: 8px;
line-height: 1.428571429;
vertical-align: top;
border-top: 1px solid #dddddd;
}
A partire dalla configurazione di base, possiamo modificare l'aspetto della tabella con l'aggiunta di ulteriori classi nel markup HTML, sempre a livello del tag <table>.
La classe .table-striped consente di ottenere una tabella con righe a colori alternati.
<table class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Cognome</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Marco</td>
<td>Rossi</td>
<td>marcoR</td>
</tr>
<tr>
<td>2</td>
<td>Paolo</td>
<td>Bianchi</td>
<td>paoloB</td>
</tr>
<tr>
<td>3</td>
<td>Sandro</td>
<td>Verdi</td>
<td>sandroV</td>
</tr>
</tbody>
</table>
| ID | Nome | Cognome | Username |
|---|---|---|---|
| 1 | Marco | Rossi | marcoR |
| 2 | Paolo | Bianchi | paoloB |
| 3 | Sandro | Verdi | sandroV |
Si può personalizzare il colore delle righe dispari (di default è un grigio chiaro) agendo su questa regola:
.table-striped > tbody > tr:nth-child(odd) > td,
.table-striped > tbody > tr:nth-child(odd) > th {
background-color: #f9f9f9;
}
Per ottenere una tabella con bordi che racchiudono le celle su tutti i lati, si aggiunge la classe .table-bordered.
<table class="table table-bordered">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Cognome</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Marco</td>
<td>Rossi</td>
<td>marcoR</td>
</tr>
<tr>
<td>2</td>
<td>Paolo</td>
<td>Bianchi</td>
<td>paoloB</td>
</tr>
<tr>
<td>3</td>
<td>Sandro</td>
<td>Verdi</td>
<td>sandroV</td>
</tr>
</tbody>
</table>
| ID | Nome | Cognome | Username |
|---|---|---|---|
| 1 | Marco | Rossi | marcoR |
| 2 | Paolo | Bianchi | paoloB |
| 3 | Sandro | Verdi | sandroV |
Anche in questo caso possiamo modificare la configurazione di default, per personalizzare il bordo. Ecco le regole CSS da tenere in considerazione:
.table-bordered {
border: 1px solid #dddddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #dddddd;
}
La classe .table-hover consente di evidenziare le righe della tabella quando si passa sopra di esse con il mouse.
<table class="table table-hover">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Cognome</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Marco</td>
<td>Rossi</td>
<td>marcoR</td>
</tr>
<tr>
<td>2</td>
<td>Paolo</td>
<td>Bianchi</td>
<td>paoloB</td>
</tr>
<tr>
<td>3</td>
<td>Sandro</td>
<td>Verdi</td>
<td>sandroV</td>
</tr>
</tbody>
</table>
| ID | Nome | Cognome | Username |
|---|---|---|---|
| 1 | Marco | Rossi | marcoR |
| 2 | Paolo | Bianchi | paoloB |
| 3 | Sandro | Verdi | sandroV |
Il colore di sfondo dell'hover può essere impostato a piacere modificando questa regola:
.table-hover > tbody > tr:hover > td,
.table-hover > tbody > tr:hover > th {
background-color: #f5f5f5;
}
L'ultima classe prevista in Bootstrap per le tabelle è .table-condensed. Consente di ottenere tabelle più compattate, con meno padding sulle celle e sulle righe.
<table class="table table-condensed">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Cognome</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Marco</td>
<td>Rossi</td>
<td>marcoR</td>
</tr>
<tr>
<td>2</td>
<td>Paolo</td>
<td>Bianchi</td>
<td>paoloB</td>
</tr>
<tr>
<td>3</td>
<td>Sandro</td>
<td>Verdi</td>
<td>sandroV</td>
</tr>
</tbody>
</table>
| ID | Nome | Cognome | Username |
|---|---|---|---|
| 1 | Marco | Rossi | marcoR |
| 2 | Paolo | Bianchi | paoloB |
| 3 | Sandro | Verdi | sandroV |
Per adattare una tabella a schermi inferiori in larghezza a 768px, la si racchiude in un div con la classe .table-responsive. La tabella viene adattata rendendola scrollabile in senso orizzontale.
<div class="table-responsive">
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Nome</th>
<th>Cognome</th>
<th>Username</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Marco</td>
<td>Rossi</td>
<td>marcoR</td>
</tr>
<tr>
<td>2</td>
<td>Paolo</td>
<td>Bianchi</td>
<td>paoloB</td>
</tr>
<tr>
<td>3</td>
<td>Sandro</td>
<td>Verdi</td>
<td>sandroV</td>
</tr>
</tbody>
</table>
</div>
Il risultato è questo:
| ID | Nome | Cognome | Username | ID | Nome | Cognome | Username |
|---|---|---|---|---|---|---|---|
| 1 | Marco | Rossi | marcoR | 1 | Marco | Rossi | marcoR |
| 2 | Paolo | Bianchi | paoloB | 1 | Marco | Rossi | marcoR |
| 3 | Sandro | Verdi | sandroV | 1 | Marco | Rossi | marcoR |