W3docs

Tabelle in CSS

Per applicare stili alle tabelle con i CSS usa le seguenti proprietà: colore della tabella, bordi collassati, larghezza e altezza della tabella, allineamento del testo, padding. Guarda gli esempi.

Diverse proprietà CSS sono ampiamente usate per applicare stili alle tabelle HTML. Ciascuna è descritta di seguito.

In questo capitolo vedremo come applicare stili alle tabelle, compresa la modifica dei colori delle intestazioni e delle righe.

Proprietà per lo stile delle tabelle

Ecco le proprietà CSS usate per applicare stili a una tabella. Le proprietà background-color e color impostano rispettivamente il colore di sfondo e quello del testo. La proprietà border-collapse collassa i bordi della tabella. La proprietà text-align imposta l'allineamento orizzontale del testo. Inoltre, puoi usare height, width e padding per regolare il layout.

Esempio di applicazione di stili a una tabella:

Esempio di stile per le tabelle HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        width: 100%;
        border-collapse: collapse;
      }
      table,
      th,
      td {
        border: 1px solid black;
      }
      thead {
        background-color: #1c87c9;
        color: #ffffff;
      }
      th {
        text-align: center;
        height: 50px;
      }
      tbody tr:nth-child(odd) {
        background: #ffffff;
      }
      tbody tr:nth-child(even) {
        background: #f4f4f4;
      }
    </style>
  </head>
  <body>
    <table>
      <thead>
        <tr>
          <th>Heading</th>
          <th>Heading</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
        <tr>
          <td>Some text</td>
          <td>Some text</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Risultato

Esempio di tabella

Spieghiamo il codice qui sopra.

Come puoi vedere, la nostra tabella ha due sezioni principali: la sezione <thead> per le intestazioni e la sezione <tbody> per le righe di dati. La tabella usa bordi neri, applicati tramite la proprietà border. Puoi usare il colore e lo stile di bordo che preferisci.

Colore della tabella

Come puoi vedere, la parte <thead> della nostra tabella è blu e tutto il testo è bianco. Per lo sfondo blu usiamo la proprietà background-color, mentre per il testo bianco usiamo la proprietà color. Gli altri testi sono scritti in nero.

Bordi collassati

La proprietà border-collapse specifica se i bordi di una tabella vengono collassati in un unico bordo o restano separati.

Larghezza e altezza della tabella

La tabella ha anche le proprietà width e height. Come puoi vedere, usiamo queste proprietà nel nostro stile. Usiamo la proprietà width per l'intera tabella e la proprietà height per le intestazioni. Possiamo usare queste proprietà con i pixel e con le percentuali.

Allineamento del testo nella tabella

Ora parliamo dell'allineamento del testo nella tabella. Come sai, in precedenza abbiamo usato la proprietà text-align per la posizione del testo. Nel nostro esempio, come puoi vedere, usiamo la proprietà text-align per l'intestazione. A questo scopo usiamo "text-align: center". Puoi leggere il capitolo precedente per sapere come usarla.

Padding della tabella

Per controllare lo spazio tra il bordo e il contenuto di una tabella, usa la proprietà padding sugli elementi <td> e <th>:

Padding delle tabelle HTML

td, th {
  padding: 15px;
}

Allineamento orizzontale con la proprietà text-align

Con l'aiuto della proprietà CSS text-align, puoi impostare l'allineamento orizzontale del contenuto in <th> o <td>.

Per impostazione predefinita, il contenuto degli elementi <td> è allineato a sinistra e quello degli elementi <th> è allineato al centro. Nell'esempio seguente, il contenuto degli elementi <th> e <td> è allineato a destra:

Esempio di allineamento a destra del contenuto degli elementi <th> e <td>:

Esempio di allineamento a destra del contenuto degli elementi <th> e <td>

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table,
      td,
      th {
        border: 1px solid black;
      }
      table {
        border-collapse: collapse;
        width: 100%;
      }
      th,
      td {
       text-align: right;
      }
    </style>
  </head>
  <body>
    <h2>Horizontal alignment example</h2>
    <table>
      <thead>
        <tr>
          <th>Firstname</th>
          <th>Lastname</th>
          <th>Money</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Sherlock</td>
          <td>Holmes</td>
          <td>$200</td>
        </tr>
        <tr>
          <td>John</td>
          <td>Watson</td>
          <td>$250</td>
        </tr>
        <tr>
          <td>Mary</td>
          <td>Whatson</td>
          <td>$500</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Allineamento verticale con la proprietà vertical-align

Usando la proprietà CSS vertical-align, puoi impostare l'allineamento verticale del contenuto in <th> o <td>.

Per impostazione predefinita, il contenuto sia degli elementi <th> che <td> è allineato verticalmente al centro.

Nell'esempio seguente, il contenuto degli elementi <td> è allineato verticalmente in basso:

Esempio di allineamento verticale in basso del contenuto degli elementi <td>:

<!DOCTYPE html>
<html>
  <head>
    <style>
      table,
      td,
      th {
        border: 1px solid black;
      }
      table {
        border-collapse: collapse;
        width: 100%;
      }
      td {
        height: 50px;
        vertical-align: bottom;
        text-align: right;
        padding-right: 10px;
      }
    </style>
  </head>
  <body>
    <h2>Vertical alignment example</h2>
    <table>
      <thead>
        <tr>
          <th>Firstname</th>
          <th>Lastname</th>
          <th>Money</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Sherlock</td>
          <td>Holmes</td>
          <td>$300</td>
        </tr>
        <tr>
          <td>John</td>
          <td>Watson</td>
          <td>$250</td>
        </tr>
        <tr>
          <td>Mary</td>
          <td>Watson</td>
          <td>$500</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Divisori orizzontali

Aggiungendo la proprietà CSS border-bottom agli elementi <td> e <th>, creerai dei divisori orizzontali.

Esempio di creazione di divisori orizzontali:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        border-collapse: collapse;
        width: 100%;
      }
      th,
      td {
        padding: 10px;
        text-align: left;
        border-bottom: 1px solid #cccccc;
      }
    </style>
  </head>
  <body>
    <h2>Horizontal dividers example</h2>
    <table>
      <thead>
        <tr>
          <th>Firstname</th>
          <th>Lastname</th>
          <th>Money</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Sherlock</td>
          <td>Holmes</td>
          <td>$200</td>
        </tr>
        <tr>
          <td>John</td>
          <td>Watson</td>
          <td>$350</td>
        </tr>
        <tr>
          <td>Mary</td>
          <td>Watson</td>
          <td>$500</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Tabelle con effetto hover

Usando il selettore CSS :hover sull'elemento <tr>, renderai la tabella sensibile al passaggio del mouse.

Esempio di creazione di una tabella con effetto hover:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        border-collapse: collapse;
        width: 100%;
      }
      tr {
        background-color: #f5f5f5;
      }
      th,
      td {
        padding: 15px;
        text-align: left;
        border-bottom: 1px solid #ccc;
      }
      tr:hover {
        background-color: #cdcdcd;
      }
    </style>
  </head>
  <body>
    <h2>Hoverable table example</h2>
    <table>
      <thead>
        <tr>
          <th>First Name</th>
          <th>Last Name</th>
          <th>Money</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Sherlock</td>
          <td>Holmes</td>
          <td>$200</td>
        </tr>
        <tr>
          <td>John</td>
          <td>Watson</td>
          <td>$350</td>
        </tr>
        <tr>
          <td>Mary</td>
          <td>Watson</td>
          <td>$500</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Tabella a righe alternate (zebra)

Usando il selettore nth-child() e aggiungendo la proprietà CSS background-color alle righe dispari (o pari) della tabella, puoi creare una tabella a righe alternate.

Esempio di creazione di una tabella a righe alternate:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      table {
        border-collapse: collapse;
        width: 100%;
      }
      th,
      td {
        text-align: left;
        padding: 10px;
      }
      tr:nth-child(even) {
        background-color: #6eeccf;
      }
      tr:nth-child(odd) {
        background-color: #2d7f88;
      }
    </style>
  </head>
  <body>
    <h2>Striped table example</h2>
    <table>
      <thead>
        <tr>
          <th>First name</th>
          <th>Last name</th>
          <th>Points</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Sherlock</td>
          <td>Holmes</td>
          <td>$250</td>
        </tr>
        <tr>
          <td>John</td>
          <td>Watson</td>
          <td>$350</td>
        </tr>
        <tr>
          <td>Mary</td>
          <td>Watson</td>
          <td>$500</td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

Tabelle responsive

Per rendere una tabella responsive, racchiudila in un elemento contenitore e applica overflow-x: auto a quel contenitore.

Esempio di creazione di una tabella responsive:

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        overflow-x: auto;
      }
      table {
        border-collapse: collapse;
        width: 100%;
      }
      th,
      td {
        text-align: left;
        padding: 8px 5px;
      }
      tr:nth-child(even) {
        background-color: #6eeccf;
      }
      tr:nth-child(odd) {
        background-color: #2d7f88;
      }
    </style>
  </head>
  <body>
    <h2>Responsive table example</h2>
    <div>
      <table>
        <thead>
          <tr>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
            <th>Money</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Sherlock</td>
            <td>Holmes</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
            <td>$150</td>
          </tr>
          <tr>
            <td>John</td>
            <td>Watson</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
            <td>$350</td>
          </tr>
          <tr>
            <td>Mary</td>
            <td>Watson</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
            <td>$500</td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>

Pratica

Pratica
What properties of CSS can be applied on tables?
What properties of CSS can be applied on tables?
Was this page helpful?