W3docs

CSS :first-child Pseudo Classe

La pseudo-classe CSS :first-child seleziona il primo figlio del suo genitore. Scopri sintassi, errori comuni ed esempi pratici.

La pseudo-classe CSS :first-child corrisponde a un elemento che è il primo figlio del suo genitore. Viene usata più spesso per stilizzare il primo elemento di un elenco, il primo paragrafo di una sezione, o per rimuovere il margine superiore/bordo dal primo elemento di un gruppo.

Esempio della pseudo-classe CSS :first-child

Questa pagina tratta la sintassi, l'errore comune che confonde la maggior parte delle persone, diversi esempi interattivi e le differenze tra :first-child e i suoi stretti parenti.

L'insidia: "primo figlio" non significa "primo di quel tipo"

Un selettore come p:first-child non significa "il primo <p> all'interno del genitore." Significa "un <p> che è anche il primissimo figlio del suo genitore." Se un elemento diverso precede il paragrafo, la regola non corrisponde a nulla.

<div>
  <h2>Heading</h2>
  <p>This paragraph is NOT styled — the &lt;h2&gt; is the first child.</p>
</div>

<div>
  <p>This paragraph IS styled — it is the first child of its &lt;div&gt;.</p>
</div>

Quindi p:first-child si legge da destra a sinistra come: seleziona <p>, ma solo quando quel <p> è il primo figlio del suo genitore. Quando vuoi "il primo paragrafo indipendentemente da ciò che lo precede", usa invece :first-of-type.

:first-child vs. selettori correlati

SelettoreCorrisponde a
:first-childUn elemento che è il primo figlio del suo genitore
:last-childUn elemento che è l'ultimo figlio del suo genitore
:first-of-typeIl primo elemento del suo tipo tra i suoi fratelli
:only-childUn elemento che è il solo figlio del suo genitore
:nth-child(n)L'ennesimo figlio, con qualsiasi formula (2n, 3n+1, ecc.)

:first-child è equivalente a :nth-child(1). La differenza principale rispetto a :first-of-type è la condizione: :first-child corrisponde solo se l'elemento è il primo figlio del suo genitore, mentre :first-of-type corrisponde al primo elemento del suo tipo specifico tra i fratelli — indipendentemente da ciò che lo precede.

Versione

Selectors Level 4

Selectors Level 3

CSS Level 2

Sintassi

Esempio di sintassi CSS :first-child

:first-child {
  css declarations;
}

Esempi

Con il tag <p>

Qui il primo <p> è il primo figlio di <body>, quindi viene stilizzato. Il secondo <p> segue un <h2>, quindi non lo è.

Esempio di codice CSS :first-child

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      p:first-child {
        background-color: #1c87c9;
        color: #fff;
      }
    </style>
  </head>
  <body>
    <p>Lorem ipsum is simply dummy text...</p>
    <h2>First-child selector example</h2>
    <p>Lorem Ipsum is simply dummy text...</p>
  </body>
</html>

Con il tag <li>

li:first-child evidenzia il primo elemento di ogni elenco. Poiché sia <ul> che <ol> reimpostano il conteggio dei figli, il primo <li> di ciascuno ottiene il colore di sfondo.

Altro esempio di codice CSS :first-child

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      li:first-child {
        background: #8ebf42;
      }
    </style>
  </head>
  <body>
    <h2>:first-child selector example</h2>
    <ul>
      <li>Paris</li>
      <li>Moscow</li>
      <li>Rome</li>
    </ul>
    <ol>
      <li>Paris</li>
      <li>Moscow</li>
      <li>Rome</li>
    </ol>
  </body>
</html>

Con il tag <ol>

Due elementi <ol> si trovano affiancati in <body>. Solo il primo è il primo figlio di <body>, quindi solo esso riceve il colore di sfondo.

Esempio del selettore :first-child con il tag HTML ol

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      ol:first-child {
        background: #8ebf42;
      }
    </style>
  </head>
  <body>
    <ol>
      <li>London</li>
      <li>Paris</li>
      <li>Rome</li>
    </ol>
    <ol>
      <li>London</li>
      <li>Paris</li>
      <li>Rome</li>
    </ol>
  </body>
</html>

Con il tag <em>

p em:first-child punta a un <em> solo quando è il primo figlio di un <p>. In ciascun paragrafo seguente il primo <em> viene dopo le parole "Here is a", quindi non è il primo figlio — la regola non corrisponde a nulla. Questa è un'illustrazione intenzionale dell'insidia descritta sopra.

Esempio del selettore :first-child con il tag HTML em

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      p em:first-child {
        background: #82b534;
      }
    </style>
  </head>
  <body>
    <h2>:first-child selector example</h2>
    <article>
      <p>Here is a <em>some</em> text. This is a <em>example</em>.</p>
      <p>Here is a <em>some</em> text. This is a <em>example</em>.</p>
      <p>Here is a <em>some</em> text. This is a <em>example</em>.</p>
    </article>
  </body>
</html>

Con il tag <ul>

:first-child funziona a ogni livello di annidamento. Il primo elemento dell'elenco esterno e il primo elemento dell'elenco annidato corrispondono entrambi a ul li:first-child.

Esempio del selettore :first-child con il tag HTML ul

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      ul li {
        color: blue;
      }
      ul li:first-child {
        color: #8ebf42;
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <h2>:first-child selector example</h2>
    <ul>
      <li>List Item 1</li>
      <li>List Item 2</li>
      <li>
        List Item 3
        <ul>
          <li>List Item 3.1</li>
          <li>List Item 3.2</li>
          <li>List Item 3.3</li>
        </ul>
      </li>
    </ul>
  </body>
</html>

Supporto browser

:first-child è supportato in tutti i browser moderni e funziona in Internet Explorer 9 e versioni successive. Fa parte di CSS Level 2 e non ha subito modifiche in Selectors Level 3 e Level 4, quindi può essere usato senza alcun prefisso vendor.

Selettori correlati

  • :last-child — stilizza l'ultimo elemento di un gruppo
  • :first-of-type — il primo elemento di un dato tipo, indipendentemente da ciò che lo precede
  • :only-child — corrisponde a un elemento privo di fratelli
  • :nth-child() — corrisponde per posizione con una formula (:first-child equivale a :nth-child(1))

Esercitati

Pratica
Cosa rappresenta la pseudo-classe :first-child in CSS?
Cosa rappresenta la pseudo-classe :first-child in CSS?
Was this page helpful?