CSS Fogli Di Stile

Specificita Dei Selettori

Specificita dei selettori: teoria, esempi e sperimentazione nel browser.

Prerequisiti: Come funziona la cascata.

Confrontare la specificità

Confrontare la specificità: fondamenti.

La specificità aiuta a scegliere fra dichiarazioni concorrenti quando i criteri precedenti della cascata sono equivalenti. Per i selettori comuni di questa lezione contiamo tre componenti: ID; classi, attributi e pseudo-classi; tipi e pseudo-elementi. Il confronto è lessicografico: si confronta prima la prima componente, poi le successive in caso di parità. Non sommare i valori come un normale numero decimale.

Come funziona: confrontare la specificità

Confrontare la specificità: comportamento nel browser.

#messaggio ha specificità (1,0,0), .nota (0,1,0), p (0,0,1). Più selettori di tipo non compensano un ID. Combinatori e selettore universale non aggiungono peso. La specificità riguarda selettori applicati allo stesso elemento: una proprietà ereditata dal genitore non compete allo stesso modo con una dichiarazione diretta sul figlio.

Scelte di utilizzo e limiti

Confrontare la specificità: progetto e verifica.

Un selettore molto specifico può creare difficoltà di manutenzione. Prima di aggiungere un ID o !important individua la dichiarazione vincente nei DevTools. Preferisci componenti con classi stabili e varianti comprensibili. Funzioni come :where() hanno regole particolari di specificità; qui manteniamo il confronto sui selettori già studiati.

Idea chiave: Tutte le regole corrispondono al paragrafo. Nel contesto semplice mostrato prevale il selettore con ID.

Esempio commentato

Confrontare la specificità: 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>Specificità dei selettori</title>
<link rel="stylesheet" href="stile.css">
</head>
<body>
<p id="messaggio" class="nota">Confronto fra selettori.</p>
</body>
</html>

File stile.css

p { color: green; }
.nota { color: blue; }
p.nota { color: orange; }
#messaggio { color: purple; }

Tutte le regole corrispondono al paragrafo. Nel contesto semplice mostrato prevale il selettore con ID.

ProprietàValore nell’esempioSignificato
colorgreenColore del testo; non imposta lo sfondo.
Attenzione: La specificità non è l’unico criterio della cascata. !important cambia importanza, non aggiunge punti al selettore.

LABORATORIO

Sperimentare: Confrontare la specificità

Tutte le regole corrispondono al paragrafo. Nel contesto semplice mostrato prevale il selettore con ID.

Obiettivo: Comprendere e applicare confrontare la specificità 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: Disattiva #messaggio nei DevTools e confronta .nota con p.nota.
  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

Il colore diventa arancione: p.nota ha una componente di tipo aggiuntiva rispetto a .nota.

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 specificoIl colore diventa arancione: p.nota ha una componente di tipo aggiuntiva rispetto a .nota.
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

Sostituisci l’ID con la classe variante e ottieni un colore rosso tramite .nota.variante.

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
.nota.variante { color: darkred; }

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

Confrontare la specificità: interpretazione e applicazione.

Seleziona una domanda per visualizzare la risposta e confrontarla con la tua.

1. Quale selettore ha specificità maggiore nei casi mostrati? ▾
Risposta: #messaggio. La specificità aiuta a scegliere fra dichiarazioni concorrenti quando i criteri precedenti della cascata sono equivalenti. Per i selettori comuni di questa lezione contiamo tre componenti: ID; classi, attributi e pseudo-classi; tipi e pseudo-elementi. Il confronto è lessicografico: si confronta prima la prima componente, poi le successive in caso di parità. Non sommare i valori come un normale numero decimale.
2. Come si interpreta il codice dell’esempio? ▾
Risposta: Tutte le regole corrispondono al paragrafo. Nel contesto semplice mostrato prevale il selettore con ID.
3. Quale risultato permette di verificare la modifica del laboratorio? ▾
Risposta: Il colore diventa arancione: p.nota ha una componente di tipo aggiuntiva rispetto a .nota.
4. Quale attenzione evita un’interpretazione sbagliata? ▾
Risposta: La specificità non è l’unico criterio della cascata. !important cambia importanza, non aggiunge punti al selettore.

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