Istituto Cilea, navigazione veloce.
menu principale | contenuto principale | menu secondario | piè di pagina
Benvenuti in Porte Aperte sul Web, Comunità di pratica per l'accessibilità dei siti scolastici - USR Lombardia

link alla home page di  Porte Aperte sul Web [logo]

chi siamo | mappa | guida | faq | contatti

sei in home - tutorial - liste annidate


contenuto principale

Liste annidate

Fonte

wiki di Porte Aperte sul Web, dove troverai l'articolo completo con possibilità di commentarlo, integrarlo, modificarlo.

Autrice del tutorial è Claudia Cantaluppi.

Introduzione

L'xhtml strict richiede che tutti gli elementi del codice siano annidati nel modo giusto. Quindi un elemento genitore si deve chiudere DOPO che si è chiuso un elemento figlio; non si può chiudere un contenitore senza averne prima chiuso contenuto.

Un esempio di sintassi errata è <div><p>bla bla bla</div></p> laddove dovremmo invece avere <div><p>bla bla bla</p></div> . Il <div> contiene <p> e si deve chiudere dopo.

Si sa che i browser sono di bocca buona e potrebbero anche visualizzare il contenuto nel modo giusto, rendendo difficile la percezione dell'errore, ma un parser non potrà certo lasciar passare una cosa simile!

Questo stesso principio si applica alle liste annidate, cioè quelle liste (ordinate o non) composte da voci principali e voci secondarie; queste ultime si riconoscono per il maggior rientro a sinistra e per l'uso, talvolta, di un simbolo diverso.

Lista semplice

I due elementi necessari a comporre una lista sono <ul> oppure <ol> - l'elemento contenitore che apre la lista - e <li> - l'elemento che identifica ogni voce. Per una lista normale l'annidamento è molto semplice: prima di poter chiudere il contenitore <ul> devo avere chiuso tutte le voci da esso contenute.

<ul>
<li>prima voce</li>
<li>seconda voce</li>
</ul>

Lista annidata errata

Ma come procedere per le liste annidate? Gli elementi che servono sono gli stessi; ogni volta che voglio inserire della voci secondarie basta che apra un nuovo contenitore <ul>. Ma dove metterlo? Esaminiamo il seguente esempio:

<ul>
<li>prima voce principale</li>
<ul><li>voce secondaria</li>
<li>altra voce secondaria</li>
</ul>
<li>seconda voce principale</li>
<ul><li>voce secondaria</li>
<li>altra voce secondaria</li> </ul>
</ul>

A prima vista non sembrano esserci errori, e probabilmente anche il browser visualizzerà la lista nella maniera corretta, dando perciò più rientro a sinistra e usando un pallino diverso per "voce secondaria" e "altra voce secondaria". Ma c'è un problema! Il primo </ul> noi lo sappiamo che chiude il secondo <ul>, cioè il contenitore della lista secondaria, ma chi ce lo può assicurare? Inoltre il <li> di "seconda voce principale" è preceduto da questo famigerato </ul>, mentre si suppone che un elemento <li> sia preceduto o da un <ul> (d'apertura) o dalla chiusura di un'altra voce, quindi da </li>. Tutto ciò manda il parser in confusione...

Lista annidata corretta

La sintassi corretta richiede un po' più di attenzione ma a ben guardare è più logica. In fondo ogni voce principale è sì contenuto del primo contenitore <ul> ma è anche a sua volta contenitore del contenitore <ul> che serve per le voci secondarie… quindi non può chiudersi prima! In pratica la sintassi giusta è la seguente:

<ul>
<li>prima voce principale
<ul><li>voce secondaria</li>
<li>altra voce secondaria</li>
</ul></li>
<li>seconda voce principale
<ul><li>voce secondaria</li>
<li>altra voce secondaria</li>
</ul></li>
</ul>

E' un po' un gioco di scatole cinesi. L'importante è chiedersi sempre quale scatola contiene quale altra!


menu secondario
Creative Commons License
I contenuti di questo sito, salvo diversa indicazione, sono rilasciati sotto una licenza Creative Commons License.
Tutti i marchi sono proprietà dei rispettivi proprietari