HTML & CSS per principianti

HTML & CSS per principianti (parte 27): Ecco come funziona l'accesso con i selettori (2)

Tutti i video del tutorial HTML & CSS per principianti

È possibile indirizzare i cosiddetti elementi figli. Questi sono quelli che sono direttamente subordinati ad altri elementi. Ammettiamolo, suona un po' astratto, ma può essere spiegato molto bene con un esempio.

<body>
<p>Paragrafo 1</p>
<p>Paragrafo 2</p>
<p>Paragrafo 3</p>
</body>

In questo caso, body è l'elemento genitore. Gli elementi p sono figli diretti di body. Basandosi su questa conoscenza, è possibile utilizzare il selettore degli elementi figli.

body>p { 
   color: blue; 
}



Questa sintassi imposta tutti i paragrafi che sono figli diretti di body di colore blu.

L'esempio seguente mostra ancora una volta le differenze tra le due istruzioni body p e body>p.

<!DOCTYPE html>
<html lang="de">
<head>
<title>PSD-Tutorials.de</title>
<meta charset="UTF-8" />
<style>
body>p {
   font-family:"Courier New", Courier, monospace;
   font-size: 200%;
}
body p {
   color:#0066FF;
}
</style>
</head>
<body>
<p>Paragrafo 1</p>
<p>Paragrafo 2</p>
<p>Paragrafo 3</p>
<div>
  <p>Paragrafo 4</p>
</div>
</body>
</html>

I primi tre paragrafi di testo definiti sono figli diretti di body. L'istruzione body p assegna un colore blu a tutti i paragrafi di testo. body>p, d'altra parte, influisce solo sui primi tre paragrafi di testo. Di conseguenza, questi paragrafi vengono visualizzati in un carattere più grande.

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

Successivamente, vorrei presentarvi il selettore degli elementi successivi. Questo selettore identifica un elemento che segue immediatamente un altro elemento e condivide lo stesso elemento genitore. Anche in questo caso, un esempio:

h1+p { 
   color: blue; 
}



Questa sintassi imposta il colore del testo di un paragrafo su blu. Tuttavia, ciò vale solo se il paragrafo segue direttamente un'intestazione di primo livello.

<!DOCTYPE html>
<html lang="de">
<head>
<title>PSD-Tutorials.de</title>
<meta charset="UTF-8" />
<style>
h1+p {
   color: blue;
}
</style>
</head>
<body>
<h1>Intestazione</h1>
<p>Paragrafo 1</p>
<h2>Intestazione</h2>
<p>Paragrafo 2</p>
<p>Paragrafo 3</p>
<div>
  <p>Paragrafo 4</p>
</div>
</body>
</html>

Osservate il risultato nel browser.

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



Solo il primo paragrafo verrà visualizzato in blu. Gli altri paragrafi sono neri. Questo perché questi elementi p non seguono un h1, ma un h2.

Per quanto riguarda gli elementi successivi, in CSS3 sono state introdotte altre possibilità. Da adesso è possibile accedere a tutti gli elementi successivi di un elemento specifico. Un esempio:

h1~p { 
   color: red; 
}



Attraverso questa sintassi, vengono indirizzati tutti i paragrafi successivi a h1.

HTML & CSS per principianti (Parte 27): Così funziona l'accesso con i selettori (2)

Inoltre, è possibile indirizzare non solo gli elementi direttamente. È possibile anche accedere agli attributi degli elementi.

Ecco alcuni di questi selettori:

• [att] – L'elemento deve contenere solo l'attributo. È irrilevante se viene fornito un valore o meno.

• a[href] – Vengono evidenziati tutti i collegamenti ipertestuali (<a href=…>). Questo non si applica alle definizioni degli anchor (<a name=…>).

• [align=left] – Evidenzia tutti gli elementi il cui attributo align contiene il valore left.

• [attr~=value] – Vengono evidenziati tutti gli elementi in cui il valore è contenuto in un elenco di valori separati da spazio.

• [attr|=value] – Evidenzia un elemento se il valore specificato si trova all'inizio di una stringa di caratteri separata da un trattino.

• img[width="200"] – Vengono evidenziate tutte le immagini che hanno una larghezza di 200 pixel.

Ovviamente sorge la domanda su quando potrebbero essere necessari tali selettori di attributi. Pensate, per esempio, a un modulo e alle caselle di controllo definite al suo interno. Le caselle di controllo vengono – come ormai sapete – definite tramite l'elemento input. Il problema è che l'elemento input viene utilizzato anche per definire normali campi di testo. Di conseguenza, non è possibile applicare una formattazione diversa alle caselle di controllo e ai campi di testo. Ecco dove entrano in gioco i selettori di attributi. Per una migliore comprensione, date un'occhiata all'esempio seguente:

<body>
 Nome: <input type="text" id="name" />
 <br />
 Uomo: <input type="checkbox" name="sesso" id="sesso" />
 <br />
 Donna: <input type="checkbox" name="sesso" id="sesso" />
 </body>



Sono stati definiti vari elementi di modulo.

• un campo di inserimento testo

• due caselle di controllo

Questi campi devono essere formattati.

input { 
    border:3px solid #000;
    width: 10em;
 }

Assegniamo ai campi un bordo e una larghezza.

HTML & CSS per principianti (parte 27): Ecco come funziona l'accesso con i selettori (2)

Il problema è che la larghezza definita dovrebbe essere applicata solo al campo di input di testo, non alle caselle di controllo. Tuttavia, con il selettore dell'elemento non è possibile distinguere tra i diversi tipi di campi. Per far sì che questa distinzione funzioni, si fa ricorso ai selettori degli attributi. Ecco un esempio di come potrebbe apparire:

input[type="checkbox"] {
    width: auto;
 }



Con il selettore mostrato si accede effettivamente solo agli elementi di input che possiedono la combinazione attributo-valore type="checkbox".

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

Ripetizioni

CSS offre finalmente la possibilità di gestire le ripetizioni. Ovviamente sorge la domanda su a cosa possa servire tutto ciò. Questi selettori sono utili ad esempio quando si desidera stilare in modo diverso ogni seconda riga di una tabella. Prima di presentare i selettori disponibili, ecco un tipico esempio:

<ol id="sprachen">
    <li>HTML</li>
    <li>HTML5</li>
    <li>CSS</li>
    <li>CSS3</li>
    <li>JavaScript</li>
    <li>JScript</li>
    <li>Java</li>
    <li>PHP</li>
    <li>Python</li>
</ol>



Si tratta di un elenco puntato normale. Con CSS, ogni terza voce dell'elenco deve ricevere un colore di sfondo.

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

Viene utilizzato il selettore nth-child(). Con questo selettore viene preso in considerazione ogni ennesimo figlio.

#sprachen li:nth-child(3n) {
    background-color: red;
}



I seguenti selettori sono disponibili:

• :root - Utilizzando il selettore :root si può fare riferimento alla radice di un documento.

• :nth-child(n) - Indirizza ogni ennesimo elemento all'interno di un elemento genitore. Questo selettore è particolarmente utile quando si desidera stilare in modo diverso più elementi. n è una parola chiave fissa su cui è possibile applicare operazioni matematiche. n può essere equiparato al valore 1.

• :nth-last-child(n) - Indirizza ogni ennesimo elemento all'interno di un elemento, scansionando i figli dall'ultimo.

• :nth-of-type(n) - Indirizza ogni ennesimo elemento dello stesso tipo HTML allo stesso livello.

• :nth-last-of-type(n) - Indirizza ogni ennesimo elemento dello stesso tipo HTML allo stesso livello, scansionando i figli dall'ultimo.

• :first-child - Indirizza il primo figlio all'interno di un elemento.

• :last-child - Indirizza l'ultimo figlio all'interno di un elemento.

• :first-of-type - Indirizza il primo elemento dello stesso tipo HTML all'interno di un elemento genitore.

• :last-of-type - Indirizza l'ultimo elemento dello stesso tipo HTML all'interno di un elemento genitore.

• :only-child - Indirizza un elemento che non ha elementi fratelli ed è l'unico figlio nell'elemento genitore.

• :only-of-type - Indirizza un elemento che non ha elementi fratelli dello stesso tipo HTML ed è l'unico figlio di quel tipo nell'elemento genitore.

• :empty - Indirizza gli elementi vuoti.

I selettori presentati semplificano notevolmente il lavoro con HTML, eliminando le complesse definizioni delle classi del passato.