Prerequisiti: Selettore universale e raggruppamento.
Discendenti e figli diretti
Discendenti e figli diretti: fondamenti.
Lo spazio tra due selettori esprime una relazione di discendenza: .scheda p seleziona i paragrafi contenuti nella scheda anche attraverso elementi intermedi. Il combinatore > richiede invece un figlio diretto: .scheda > p esclude i paragrafi annidati in altre sezioni. La relazione dipende dalla struttura HTML, non dalla vicinanza visiva sullo schermo. Una riorganizzazione del markup può quindi cambiare gli elementi corrispondenti.
Come funziona: discendenti e figli diretti
Discendenti e figli diretti: comportamento nel browser.
h2 + p seleziona un paragrafo immediatamente successivo a un h2 e con lo stesso genitore. h2 ~ p seleziona i paragrafi successivi con lo stesso genitore, anche se intervengono altri elementi. Un selettore di attributo come a[target="_blank"] individua collegamenti con quel valore. [disabled] controlla invece la presenza dell’attributo. Queste forme permettono di esprimere condizioni senza creare una classe per ogni caso.
Scelte di utilizzo e limiti
Discendenti e figli diretti: progetto e verifica.
Un selettore p globale è comodo in una piccola pagina, ma in un sito può modificare tutti i paragrafi. Anteporre la classe di un componente limita l’effetto. Evita catene molto lunghe legate a dettagli accidentali dell’HTML: rendono lo stile difficile da mantenere. Scegli una relazione che rappresenti davvero la struttura prevista e prova anche un elemento simile collocato fuori dal componente.
Esempio commentato
Discendenti e figli diretti: HTML e CSS.
Esempio con stile esterno. Il documento index.html collega il file stile.css mediante il tag link nella head.
Documento HTML completo
<!doctype html>
<html lang="it">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Selettori di discendente e figlio diretto</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<section class="scheda">
<p>Figlio diretto.</p>
<div><p>Paragrafo annidato.</p></div>
</section>
<p>Paragrafo esterno.</p>
<a href="https://example.com" target="_blank" rel="noopener">Sito di esempio</a>
</body>
</html>
File stile.css
.scheda p {
color: #174a7e;
}
.scheda > p {
font-weight: bold;
}
a[target="_blank"] {
text-decoration: underline;
}
Risultato nel browser
Entrambi i paragrafi interni diventano blu, ma solo il figlio diretto diventa grassetto. Il paragrafo esterno non viene selezionato.
| Proprietà | Valore nell’esempio | Significato |
|---|---|---|
color | #174a7e | Colore del testo; non imposta lo sfondo. |
font-weight | bold | Peso del carattere. |
text-decoration | underline | Decorazione del testo. |
LABORATORIO
Sperimentare: Discendenti e figli diretti
Entrambi i paragrafi interni diventano blu, ma solo il figlio diretto diventa grassetto. Il paragrafo esterno non viene selezionato.
Obiettivo: Comprendere e applicare discendenti e figli diretti attraverso esempi e verifica nel browser.
Software: editor di testo e browser con DevTools; Tempo: 15 minuti.
Preparazione: scarica l’esempio completo e estrai lo ZIP. Apri index.html nel browser. Puoi anche aprire l’esempio online.
Apri il file stile.css nell’editor. Le lezioni iniziali usano un documento già preparato per concentrarsi sulle regole; il collegamento esterno e lo stile interno vengono spiegati nelle lezioni dedicate. Le modifiche nei DevTools sono normalmente temporanee.
Procedura passo passo
- Osserva il punto di partenza: apri l’esempio, confronta markup e regole e individua il selettore o il contesto di layout rilevante.
- Esegui la modifica: Prevedi quali paragrafi soddisfano i due selettori.
- Salva e ricarica la pagina dopo ogni modifica. Confronta gli elementi che devono cambiare con quelli che devono restare invariati.
- Ispeziona il risultato: usa il menu Ispeziona e controlla Styles/Regole e Computed/Calcolato. Per layout Flex o Grid attiva l’overlay, se disponibile.
- Annota causa ed effetto: scrivi il valore o la struttura iniziale, il cambiamento e il risultato. Ripristina il punto di partenza prima dell’esercizio autonomo.
Dopo lo spostamento nessun paragrafo è figlio diretto della scheda: la regola con > non corrisponde più.
Il font e alcuni dettagli dell’interfaccia dipendono dal browser. Valuta la proprietà e il comportamento descritti, non una corrispondenza perfetta con uno screenshot.
Verifica del risultato
| Controllo | Criterio |
|---|---|
| Effetto specifico | Dopo lo spostamento nessun paragrafo è figlio diretto della scheda: la regola con > non corrisponde più. |
| Corrispondenza del codice | Individua la dichiarazione o la relazione HTML responsabile della differenza. |
| Persistenza | Riporta la modifica nel file e verifica dopo un ricaricamento. |
| Spiegazione | Motiva la differenza senza affidarti soltanto a uno screenshot. |
Esercizio autonomo
Assegna un margine superiore nullo al paragrafo immediatamente successivo a un h2.
Consegna: file modificati e una breve spiegazione di selettore, proprietà e risultato. Criterio di riuscita: il cambiamento richiesto funziona dopo il ricaricamento e non taglia informazioni indispensabili.
h2 + p {
margin-top: 0;
}Integra la soluzione nel punto pertinente: modifica o sostituisci le regole coinvolte invece di accumulare dichiarazioni contraddittorie. Le altre parti dell’esempio restano necessarie.
Verifica dei concetti
Discendenti e figli diretti: interpretazione e applicazione.
Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.
1. Quale combinatore richiede un figlio diretto? ▾
2. Come si interpreta il codice dell’esempio? ▾
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Riferimento tecnico: MDN — riferimento CSS. Cerca le proprietà o i selettori utilizzati nell’esempio.