Indice dei contenuti

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