back to top

Selettori CSS: universale, per tipo, classe e ID

Nella precedente lezione abbiamo visto come costruire una regola CSS ed abbiamo visto che il primo elemento (partendo da sinistra) prende il nome di selettore.

Il selettore, come il nome lascia intuire, serve "per selezionare" il o gli elementi della pagina cui applicare le dichiarazioni contenute tra le parentesi graffe (il cosiddetto "blocco dichiarativo").

Pubblicitร 

Sino ad ora abbiamo utilizzato come selettore semplicemente il tipo del tag:

p { color: #FF0000; }

Cosรฌ facendo, come giร  detto, lo stile definito verrร  applicato a tutti i tag di "tipo paragrafo" (<p>) della nostra pagina.

In realtร  i selettori offerti da CSS sono molteplici e consentono di effettuare selezioni molto precise. Nel corso di questa lezione li affronteremo ad uno ad uno, partendo da quello piรน generico, il selettore universale.

Selettore universale

Come accade per altri ambiti dellโ€™ecosistema informatico, anche i selettori CSS hanno il loro carattere jolly; un "carattere jolly" รจ un metacarattere (detto anche wildcard) che, quando posizionato allโ€™interno di una stringa, non ha il compito di offrire una rappresentazione di sรฉ stesso, ma quello di rappresentare unโ€™altra sequenza di caratteri.

Nello specifico lโ€™asterisco, riguardo al caso dei fogli di stile, rappresenta tutti gli elementi. In pratica il simbolo dellโ€™asterisco potrร  essere utilizzato per settare una regola globale per tutti gli elementi della pagina o per stilizzare tutti gli elementi allโ€™interno di un dato selettore.

Per fare un esempio, sarebbe possibile adottare il carattere jolly come nellโ€™esempio seguente:

* { color: #FF0000; }

Con il codice qui sopra assegno il colore rosso a tutti gli elementi della pagina: quindi ogni testo scritto allโ€™interno di un paragrafo, di una cella di tabella, di un DIV, di un elenco puntato, ecc. sarร  di colore rosso.

#blah * { display: block; }

In tal modo si avrร  la possiilitร  di mostrare tutti gli elementi relativi al selettore indicato (id "blah") come block elements.

Lโ€™utilizzo dei selettori universali puรฒ rivelarsi comodo per effettuare il reset degli stili predefiniti dei browser.

Selettori di tipo

Si tratta del selettore che abbiamo utilizzato, per motivi di semplicitร  espositiva, sino a questo punto della guida. Mediante questo selettore si applica uno stile a tutti i tag di un dato tipo: tutti i link, tutti i paragrafi, tutti i DIV, ecc. Vediamo un esempio:

/* imposto il testo in rosso per tutti i paragrafi */
p { color: #FF0000; }

/* imposto il colore verde acido per tutti i link */
a { color: #00FF00; }

Selezione mediante classe

Nella prima lezione della nostra guida abbiamo giร  detto che il modo per collegare le regole CSS ai singoli tag dellโ€™HTML รจ offerto dallโ€™utilizzo di classi e ID. Fino ad ora, infatti, abbiamo visto come agire sullโ€™universalitร  degli elementi o su specifiche tipologie di tag, ma se volessimo applicare un dato stile solo ad uno o piรน tag ben specifici di un determintao tipo? Se, cioรจ, non volessimo colorare di rosso tutti i paragrafi di testo ma solo alcuni?

La risposta a questa esigenza ci รจ offerta dallโ€™utilizzo, appunto, delle classi. Mediante una classe รจ possibile definire uno o piรน elementi cui applicare un dato stile. Vediamo un esempio, partendo dal codice HTML:

<p>...paragrafo 1...</p>
<p class="rosso">...paragrafo 2...</p>
<p>...paragrafo 3...</p>
<p class="rosso">...paragrafo 4...</p>

Come possiamo vedere al secondo ed al quarto paragrafo abbiamo applicato un attributo class al quale abbiamo assegnato valore "rosso". Questo valore (che ho scelto in modo del tutto arbitrario) mi servirร  per collegare questi due paragrafi ad una precisa regola di stile. Vediamo il CSS:

p.rosso { color: #FF0000; }

Cosรฌ facendo il colore rosso verrร  applicato solo ai paragrafi 2 e 4.

Come potete vedere il mio selettore รจ cambiato: allโ€™indicazione del tipo (p) segue la specifica della classe (si usa il punto seguto dal nome della classe).

Volendo avrei potuto indicare anche solo il nome della classe:

.rosso { color: #FF0000; }

La differenza tra le due sintassi non รจ marginale: nel primo caso lo stile verrร  applicato solo ai paragrafi con classe "rosso", nel secondo caso lo stile verrร  applicato a qualsiasi tag avente classe "rosso".

Eโ€™ importante precisare che ogni elemento della pagina puรฒ essere associato anche a piรน classi; per farlo, allโ€™interno dellโ€™attributo class, i diversi nomi delle classi sono separati da uno spazio come nellโ€™esempio qui sotto:

<p class="rosso maiuscolo">...paragrafo 2...</p>

Cosรฌ facendo il nostro elemento "riceverร " gli stili associati sia alla classe "rosso" che alla classe "grassetto". Lโ€™ordine con cui vengono specificate le classi non ha alcuna rilevanza.

p.rosso { color: #FF0000; }
p.grassetto { font-weight: bold; }

Allโ€™interno di un foglio di stile รจ anche possibile concatenare piรน classi, ad esempio:

p.rosso { color: #FF0000; }
p.rosso.grassetto { font-weight: bold; }

In pratica questa seconda definizione dello stile della classe "grassetto" รจ dipendente dalla classe "rosso": in pratica lo stile grassetto verrร  applicato solo agli elementi che possiedono entrame le classi ("rosso" e "grassetto").

Una precisazione conclusiva: ad una classe si puรฒ assegnare il nome che si vuole e lo si puรฒ scrivere indifferentemente in maiuscolo ed in minuscolo, purchรจ il nome non presenti spazi e sia composto esclusivamente da caratteri alfanumerici (numeri e lettere), underscore (_) e trattino (-).

Selezione mediante ID

La selezione di un elemento mediante ID funziona in modo molto simile a quanto visto per le classi. La differenza principale tra classi e ID รจ una sola: le classi possono riguardare una pluralitร  di elementi, lโ€™ID รจ sempre univoco! Ogni elemento puรฒ avere uno ed un solo ID ed al contempo non possono esistere due diversi elementi col medesimo ID.

A livello di codice HTML lโ€™ID viene specificato mediante lโ€™omonimo attributo:

<h1 id="titolo">...titolo...</h1>

Per quanto riguarda il CSS la sintassi del selettore cambia nuovamente:

h1#titolo { color: #FF0000; }

Come potete vedere ho scritto il selettore specificando il tipo del tag seguito da cancelletto (#) e valore dellโ€™attributo ID. In questo caso il selettore avrebbe potuto scriversi piรน brevemente in questo modo:

#titolo { color: #FF0000; }

omettendo, cioรจ, lโ€™indicazione del tipo. Essendo lโ€™ID univoco, infatti, lโ€™indicazione del tipo รจ assolutamente superflua.

Da un punto di vista pratico la scelta tra classe e ID dipende da quanti elementi sono coinvolti nella stilizzazione. Se si tratta di stilizzare un solo elemento sarร  possibilre riccorere allโ€™ID, viceversa sarร  necessario utilizzare una classe (o un altro tipo di selettore che consenta di identificare una molteplicitร  di elementi).

Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).