Qual è la differenza tra l'utilizzo di .container div
e .container > div
?
Nel primo esempio viene utilizzato il combinatore ␣
(spazio bianco), chiamato descendant (discendente), mentre nel secondo esempio, il combinatore è >
che prende il nome di child (figlio).
Il combinatore ␣
ha effetto su tutti gli elementi specificati nel secondo selettore che hanno come elemento genitore quello specificato nel primo selettore. Ma vediamo con un esempio:
Dato questo CSS:
.container div {
background-color: red;
}
e questo frammento di codice HTML:
<div class="container">
<section>
<div>Questo testo avrà sfondo rosso</div>
</section>
<div>Anche questo testo avrà sfondo rosso</div>
</div>
Qui entrambe le div
avranno all'interno un testo con sfondo rosso, nonostante la prima si all'interno di un tag section
. Ma se proviamo a sostituire lo spazio con >
nel nostro CSS:
.container > div {
background-color: red;
}
Il risultato ottenuto sarà il seguente:
<div class="container">
<section>
<div>Questo testo NON avrà sfondo rosso</div>
</section>
<div>Solo questo testo avrà sfondo rosso</div>
</div>
In questo caso invece, la prima div
all'interno di un ulteriore tag non sarà selezionata perché è nipote di .container
e non figlia.
Quindi capiamo che >
ha effetto solo sugli elementi specificati nel secondo selettore che hanno come genitore l'elemento specificato nel primo selettore, a patto che non ci siano altri elementi tra loro.
Ecco i due combinatori in azione: