Come creare righe a colori alternati

Per colorare le righe di una tabella html <table> o un elenco di voci puntato <ul> con colori alternati o diversi, utilizzo la pseudoclasse nth-child nel foglio di stile Css della pagina web. Ogni riga viene colorata con un colore differente.

come creare una tabella a righe alternate

La sintassi

[child]:nth-child([even|odd]) {
background-color: [colore];
}

I parametri della proprietà nth-child sono due:

  • even intercetta le righe pari
  • odd intercetta le righe dispari

La proprietà nth-child intercetta l'ennesimo elemento figlio ( child ) di un contenitore ( es. <tr>, <li>, <p>).

riga 1
riga 2
riga 3
riga 4
riga 5

Poi gli assegna un foglio di stile personalizzato. In questo caso, applica un colore di sfondo differente modificando la proprietà background-color.

Il contenitore ( parent ) può essere un elenco puntato <ul> o numerato <ol>, una tabella <table>, un <div>, ecc.

Nota. La classe funziona anche per alternare i paragrafi <p> e qualsiasi altro tag html, posto all'interno di un contenitore <div> specifico o più in generale <body>.

Un esempio pratico

Esempio 1

Ho la seguente tabella html:

riga 1
riga 2
riga 3
riga 4
riga 5

Voglio alternare i colori delle righe:

Quindi definisco nel foglio di stile Css una classe "sorgente" per l'elemento figlio <tr> sia per le righe pari ( even ) che dispari ( odd ) con colori differenti.

.sorgente tr:nth-child(even) { background-color: #CCCCCC; }
.sorgente tr:nth-child(odd) { background-color: #F0F0F0; }

Poi applico la classe sorgente al contenitore (parent) ossia alla tabella <table>.

<table class=sorgente>
<tr><td>riga</td></tr>
<tr><td>riga</td></tr>
<tr><td>riga</td></tr>
<tr><td>riga</td></tr>
</table>

Il risultato finale è il seguente:

riga 1
riga 2
riga 3
riga 4
riga 5

Ho così creato una tabella html a righe alternate.

Esempio 2

Ho un elenco di voci puntate

  • riga 1
  • riga 2
  • riga 3
  • riga 4
  • riga 5

Per colorare soltanto le righe pari (even) creo una classe in Css con la proprietà nth-child sul tag child <li>

.righepari li:nth-child(even) { background-color: #CCCCCC; }

Poi applico la classe al contenitore parent <ul>.

<ul class="righepari">
<li>riga</li>
<li>riga</li>
<li>riga</li>
<li>riga</li>
<li>riga</li>
</ul>

Sul browser la tabella è colorata a righe alternate

  • riga
  • riga
  • riga
  • riga
  • riga

Ho così colorato un elenco con colori diversi.

Come colorare in modo diverso le righe multiple

La proprietà nth-child mi permette anche di colorare soltanto le righe multiple di un numero, non solo quelle pari o dispari.

Esempio

Questa classe colora soltanto le righe multiple di 3.

tr:nth-child(3n + 0) { background-color: #CCCCCC; }

Il risultato finale è il seguente

riga 1
riga 2
riga 3
riga 4
riga 5
riga 6

Come colorare soltanto le prime righe

Per applicare la proprietà nth-child soltanto alle prime righe di un contenitore, utilizzo un contatore negativo più una costante positiva uguale al numero delle righe.

Esempio

Questa classe cambia colore soltante alle prime tre righe.

tr:nth-child(-n + 3) { background-color: #CCCCCC; }

Il risultato finale è il seguente

riga 1
riga 2
riga 3
riga 4
riga 5
riga 6
riga 7

Ogni riga decrementa il contatore di -1.

In questo caso 3, 2, 1 ... alla quarta riga il contatore è zero (0).

Non esistendo nessuna riga zero o negativa, la proprietà nth-child non è più applicata sulle righe successive.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base
  1. Cos'è il CSS