HTML & CSS per principianti

HTML & CSS per principianti (Parte 28): Come funziona l'accesso con i selettori (3)

Tutti i video del tutorial HTML & CSS per principianti

In questo ultimo tutorial sui selettori, vi presenterò una forma molto particolare di selettori. Si tratta delle cosiddette pseudoclassi e pseudoelementi. Questi sono selettori che non si riferiscono a specifici elementi HTML, ma vengono generati dal dispositivo di output.

Con le pseudoclassi e i pseudoelementi è possibile definire dichiarazioni per parti dell'HTML che non possono essere descritte chiaramente da un singolo elemento HTML. Esempi tipici sono un hyperlink appena cliccato o un hyperlink non ancora visitato.

Stilizzare gli Hyperlink

Spesso si desidera stilizzare gli hyperlink della pagina. A tale scopo, il CSS offre numerose possibilità per indirizzare e personalizzare visivamente i diversi stati degli hyperlinks.

Se volete assegnare ad un hyperlink un colore rosso, il codice sarà il seguente:

a:link {
   color: red; 
}



Con a:visited si identificano invece gli hyperlinks già visitati. Con la seguente sintassi è possibile rappresentare tali hyperlinks, che sono stati cliccati almeno una volta, di colore blu.

a:visited { 
  color:blue;  
  text-decoration:none; 
}

Nel browser apparirà così:

HTML & CSS per principianti (Parte 28): Ecco come funziona l'accesso con i selettori (3)

Se volete personalizzare gli hyperlinks appena cliccati, è possibile farlo anche.

a:active { 
   font-weight: bold; 
   color: blue; 
   text-decoration: none; 
}



Per farlo, si utilizza la sintassi a:active.

HTML & CSS per principianti (Parte 28): Ecco come funziona l'accesso con i selettori (3)



La sintassi a:hover si riferisce, invece, allo stato in cui il cursore viene posizionato sull'hyperlink. Inoltre, con a:focus c'è un altro pseudoelemento. Descrive il momento in cui l'hyperlink ottiene il focus.

Altri Pseudoelementi

Esistono pseudoelementi che consentono di indirizzare parti di altri elementi. Un esempio tipico è ::first-letter. Questo pseudoelemento seleziona il primo carattere dell'elemento corrente. Può essere utilizzato per tutti gli elementi che contengono testo. Ma attenzione: i pseudoelementi devono essere inseriti solo alla fine di tutti i selettori. Quindi devono essere posizionati prima delle parentesi graffe di apertura.

h1::first-letter { 
   color: blue; 
}



Con ::first-line è possibile indirizzare la prima riga di un elemento. Questo pseudoelemento è applicabile esclusivamente agli elementi di livello blocco. Un esempio:

p::first-line { 
   background-blue; 
}



Ecco il risultato nel browser:

una

HTML & CSS per principianti (Parte 28): Ecco come funziona l'accesso con i selettori (3)

Con i due pseudoelementi :after e :before è possibile visualizzare contenuti aggiuntivi prima e dopo un elemento. Con content si specifica cosa deve essere visualizzato.

• normal - il pseudoelemento definito di solito non è generato.

• none - il pseudoelemento non è generato.

- la stringa specificata qui viene visualizzata. Le stringhe vanno tra virgolette semplici o doppie.

- la risorsa specificata tramite URI viene inserita.

- definisce un contatore o si rivolge a un contatore specifico.

• attr() - viene inserito il valore dell'attributo specificato tra parentesi.

• close-quote - inserisce un apice di chiusura.

• no-close-quote - anche se non inserisce un apice di chiusura, aumenta di uno il livello di annidamento.

• no-open-quote - anche se non inserisce un apice di apertura, aumenta di uno il livello di annidamento.

• open-quote - inserisce un apice di apertura.

Un esempio:

ul li:before { 
   content: uri("bullet.gif"); 
}



Inoltre, con CSS3 è stato introdotto il pseudoselettore :not. Questo permette di selezionare facilmente contenuti specifici. Un primo esempio mostra quanto sia potente effettivamente questo pseudoselettore. Supponiamo che si vogliano selezionare tutti gli hyperlinks che non hanno un attributo href. La sintassi corrispondente sarebbe la seguente:

a:not([href])



Gli hyperlinks "normali" non verrebbero influenzati da questa sintassi. Ma sarebbe possibile accedere alle definizioni degli anchor.

<a name="top">Inizio della pagina</a>

Un esempio più dettagliato illustra la potenza di :not. All'interno di un documento sono state definite diverse frasi di testo.

<body>
<h1>PSD-Tutorials.de</h1>
<p>Questa è una frase di testo.</p>
<p>Questa è un'altra frase di testo.</p>
<div>Questa è un'area di testo.</div>
<a href="http://www.psd-tutorials.de" target="_blank">PSD-Tutorials.de</a>
</body>



Oltre ai paragrafi contrassegnati con p, ci sono anche una sezione div ed un collegamento ipertestuale. Ora dovrebbe accadere quanto segue:

• Tutti i paragrafi marcati con p avranno il colore del testo nero.

• Invece, ovunque non ci siano paragrafi p, sarà utilizzato il colore rosso come colore del testo.

La sintassi CSS corrispondente è la seguente:

p {
    color:#000;
}
:not(p) {
    color:#ff0000;
}

Il principio dell'ereditarietà

Una delle cose più importanti quando si tratta di comprendere le definizioni CSS è l'ereditarietà. Infatti, in CSS le proprietà di stile vengono ereditate da un elemento all'altro.

Un esempio:

html {
    color: red
}

Con questa definizione viene assegnato all'elemento html il colore del testo rosso.

HTML & CSS per principianti (Parte 28): Ecco come funziona l'accesso con i selettori (3)

A causa del principio dell'ereditarietà, questa definizione di colore si applica inizialmente a tutti gli elementi sottohtml. Quindi, di base, tutti gli elementi situati sotto html vengono mostrati in rosso. Vantaggio di questa variante: per questi elementi non è necessario definire esplicitamente il rosso come colore. Ma cosa succede se il contenuto dei paragrafi p non dovrebbe essere mostrato in rosso? In tal caso, è necessario sovrascrivere la definizione di colore superiore di html.

html {
   color: red;
}
p {
   color: #000;
}



Cosa accade se ci sono due elementi p e div ora?

<body>
<p>PSD-Tutorials.de</p>
<div>Mondo</div>
</body>



Il risultato appare così:

HTML & CSS per principianti (Parte 28): Ecco come funziona l'accesso con i selettori (3)

La definizione di colore di html influisce esclusivamente sul contenuto di div. Il paragrafo p, invece, viene mostrato con il colore del testo nero.

In CSS ci sono diverse modalità per definire gli stili. Questo è il motivo per cui per un elemento possono esistere istruzioni contrastanti. Per tali casi, CSS prevede un principio di ponderazione. Seguendo questo principio, è determinato quale delle istruzioni ha la precedenza per un elemento. Non intendo approfondire in dettaglio questo principio in questo momento. Tuttavia, potete trovare informazioni dettagliate a riguardo ad esempio sul sito http://wiki.selfhtml.org/wiki/CSS/Kaskade o anche su http://www.thestyleworks.de/basics/cascade.shtml.

Quello che mi interessa è mostrare su cosa dovete fare attenzione quando definite le proprietà CSS. A tal scopo, ecco un esempio:

<!DOCTYPE html>
<html lang="de">
<head>
<title>PSD-Tutorials.de</title>
<meta charset="UTF-8" />
<style>
body {
   font-family:Arial, Helvetica, sans-serif;
   font-size: 90%;
}
p {
   color: #000;
}
h1 {
   font-size: 120%;
   font-weight: normal;
}
strong {
   color:#CCCCCC;
}
h2 strong {
   color: red;
}
</style>
</head>
<body>
<div>
  <h1>PSD-Tutorials.de</h1>
  <p>Questo è un paragrafo con una <strong>parola in grassetto</strong>.</p>
  <h2>Questa è un'intestazione con una <strong>parola in grassetto</strong>.</h2>
</div>
</body>
</html>

Nel browser appare così:

HTML & CSS per principianti (Parte 28): Come funziona l'accesso con i selettori (3)



Come potete notare, le parole contrassegnate come strong vengono formattate in modo diverso. La formattazione che viene applicata dipende infine dall'ordine delle definizioni.

In alternativa, c'è anche la parola chiave !important, attraverso la quale potete contrassegnare un'istruzione CSS come particolarmente importante.

<style>
body {
   font-family:Arial, Helvetica, sans-serif;
   font-size: 90%;
}
p {
   color: #000;
}
h1 {
   font-size: 120%;
   font-weight: normal;
}
strong {
   color:#CCCCCC !important;
}
h2 strong {
   color: red;
}
</style>

Anche qui diamo uno sguardo al risultato:

HTML & CSS per principianti (Parte 28): Ecco come funziona l'accesso con i selezionatori (3)



Vi invito a leggere assolutamente le fonti menzionate in questo tutorial. (Anche se all'inizio non è necessario approfondire troppo questa tematica).