CSS Fogli Di Stile

Selettori Di Discendente E Figlio Diretto

Selettori di discendente e figlio diretto: teoria, esempi e sperimentazione nel browser.

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.

Idea chiave: Entrambi i paragrafi interni diventano blu, ma solo il figlio diretto diventa grassetto. Il paragrafo esterno non viene selezionato.

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;
}

Entrambi i paragrafi interni diventano blu, ma solo il figlio diretto diventa grassetto. Il paragrafo esterno non viene selezionato.

ProprietàValore nell’esempioSignificato
color#174a7eColore del testo; non imposta lo sfondo.
font-weightboldPeso del carattere.
text-decorationunderlineDecorazione del testo.
Attenzione: + richiede il fratello immediatamente successivo; ~ permette altri fratelli intermedi.

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

  1. Osserva il punto di partenza: apri l’esempio, confronta markup e regole e individua il selettore o il contesto di layout rilevante.
  2. Esegui la modifica: Prevedi quali paragrafi soddisfano i due selettori.
  3. Salva e ricarica la pagina dopo ogni modifica. Confronta gli elementi che devono cambiare con quelli che devono restare invariati.
  4. Ispeziona il risultato: usa il menu Ispeziona e controlla Styles/Regole e Computed/Calcolato. Per layout Flex o Grid attiva l’overlay, se disponibile.
  5. 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.
Cosa devi vedere — Output atteso

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

ControlloCriterio
Effetto specificoDopo lo spostamento nessun paragrafo è figlio diretto della scheda: la regola con > non corrisponde più.
Corrispondenza del codiceIndividua la dichiarazione o la relazione HTML responsabile della differenza.
PersistenzaRiporta la modifica nel file e verifica dopo un ricaricamento.
SpiegazioneMotiva la differenza senza affidarti soltanto a uno screenshot.
Se il risultato non coincide: verifica file aperto, salvataggio, percorso del CSS, selettore e validità dei valori. Controlla poi la cascata e le dimensioni del viewport. Cambia una sola causa alla volta.

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.

Una possibile soluzione dell’esercizio
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? ▾
Risposta: >. 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.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: Entrambi i paragrafi interni diventano blu, ma solo il figlio diretto diventa grassetto. Il paragrafo esterno non viene selezionato.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: Dopo lo spostamento nessun paragrafo è figlio diretto della scheda: la regola con > non corrisponde più.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: + richiede il fratello immediatamente successivo; ~ permette altri fratelli intermedi.

Riferimento tecnico: MDN — riferimento CSS. Cerca le proprietà o i selettori utilizzati nell’esempio.