Home > realizzare > accessibilità: fogli di stile > Trasformare liste ordinate in menu di navigazione
Le potenzialità dei CSS2 ci permettono di trasformare, con poche e semplici operazioni, le liste ordinate in eleganti menu di navigazione. Trucchi, suggerimenti e risorse sul web.
a cura di: Vincenzo Mania | 15 luglio 2005
La separazione tra contenuto e presentazione offre, tra gli innumerevoli vantaggi, quello di usare un codice XHTML scarno, veloce ed essenziale e di delegare al foglio di stile tutti gli aspetti di presentazione.
Nel caso delle liste ordinate è possibile ottenere gradevoli menu di navigazione, sia orizzontali che verticali, applicando poche e semplici regole al foglio di stile.
Usare l'elemento lista ordinata per i menu di navigazione è l'approccio semanticamente più corretto: che cos'è un menu di navigazione se non una lista di link? Inoltre l'uso della lista ordinata, nel caso di CSS disabilitati o di browser che non li supportino, ci consente di visualizzare il nostro menu di navigazione come una semplice ed efficace lista dove ogni termine è preceduto da un punto elenco.
Questo articolo contiene due tutorial per realizzare un menu orizzontale e un menu verticale, inoltre alla fine dell'articolo troverete un elenco di risorse sul web che trattano questo argomento.
Il codice XHTML:
<div id="menu"> <ul> <li><a href="#" id="evidenziato">Homepage</a></li> <li><a href="#">Chi siamo</a></li> <li><a href="#">Attività</a></li> <li><a href="#">Risorse</a></li> <li><a href="#">Link</a></li> <li><a href="#">Contatti</a></li> </ul> </div>
Visualizza come appare la lista priva di CSS
Trasformiamola dunque in un menu orizzontale attraverso il CSS.
Per prima cosa definiamo i margini interni (padding) ed esterni (margin) della
nostra lista a zero, assegnamo un coloro di sfondo, e racchiudiamo il nostro
menu tra due righe orizzontali rosse, infine stabiliamo il tipo di carattere
che vogliamo usare.
#menu{
margin: 0;
padding:0;
background:#eee;
border-bottom: 1px solid #c00;
border-top: 1px solid #c00;
font-family: Arial, Helvetica, sans-serif, Verdana;
}
Ecco come appare la lista dopo aver applicato lo stile
Diciamo agli elementi di lista di disporsi in orizzontale attraverso la proprietà display:inline
e portiamo a zero i margini interni ed esterni, inoltre mediante la proprietà list-style-type:none facciamo in modo che non vengano visualizzati i punti elenco.
#menu li{
display: inline;
margin: 0;
padding: 0;
list-style-type: none;
}
Il menù si dispone orizzontalmente e spariscono i punti elenco
A questo punto diamo uno unico stile ai link e ai link visitati: assegnamo il grassetto, il margine destro pari ad 1 em per distanziare orizzontalmente
gli elementi di lista tra di loro, facciamo in modo che i nostri link non vengano
sottolineati attraverso la proprietà text-decoration:none e li definiamo
di colore nero.
#menu a:link#evidenziato,
#menu a:visited#evidenziato, #menu a:hover{
border-top: 2px solid #c00;
color: #c00;
}
Ecco il risultato finale della trasformazione della nostra lista
ordinata in menù orizzontale, provate a passare con il mouse sopra i link per vedere l'effetto hover assegnato.
Il codice XHTML è il medesimo del menu orizzontale
<div id="menu"> <ul> <li><a href="#" id="evidenziato">Homepage</a></li> <li><a href="#">Chi siamo</a></li> <li><a href="#">Attività</a></li> <li><a href="#">Risorse</a></li> <li><a href="#">Link</a></li> <li><a href="#">Contatti</a></li> </ul> </div>
la differenza sta nel foglio di stile, trasformiamo dunque la medesima lista ordinata in un menu verticale attraverso il CSS.
Definiamo l'ampiezza del nostro menu attraverso la proprietà width:150px
e i margini interni (padding)ed esterni (margin) pari a zero, stabiliamo il
tipo di carattere che vogliamo usare e la dimensione del carattere.
#menu{
width: 150px;
padding: 0;
margin: 0;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 80%;
}
In questa fase l'unico cambiamento della lista riguarda il carattere e le dimensioni.
Attraverso la proprietà list-style-type:none facciamo in modo che
non vengano visualizzati i punti elenco, portiamo a zero i margini interni
ed esterni della nostra lista.
#menu ul{
list-style: none;
margin: 0;
padding: 0;
}
Il risultato sarà appunto la mancanza dei punti elenco
Azzeriamo anche i margini degli elementi di lista
#menu ul li {
margin: 0;
padding: 0;
}
Definiamo il comportamento dell'elemento "a" - a:display:block
fa sì che gli eventi associati al passaggio del mouse (ad esempio il
cambiamento di forma del puntatore del mouse o l'effetto hover definito
nel passo successivo) si verifichino per tutta l'ampiezza definita per
l'elemento "a" (150px), facciamo in modo che i nostri link
non vengano sottolineati attraverso la proprietà text-decoration:none
e li definiamo di colore grigio scuro, inoltre assegnamo un valore al margine
interno (padding) superiore (5px), inferiore (2px) e sinistro (4px), il destro
lo fissiamo a zero
#menu ul li a {
display: block;
width:150px;
border-bottom: 1px dashed #999;
text-decoration: none;
padding: 5px 0 2px 4px;
color: #666;
}
Dopo questi due passaggi la nostra lista ha già l'aspetto di un menù di navigazione verticale
Stabiliamo che al passaggio del mouse i nostri link del menu di navigazione debbano diventare di colore nero e e che lo sfondo assuma un colore grigio chiaro.
#menu a:hover{
color: #000;
background-color: #eee;
}
Nel nostro ultimo passo facciamo in modo che il link evidenziato appaia in grassetto sia quando evidenziato che quando visitato
#menu a:link#evidenziato,
#menu a:visited#evidenziato{
font-weight:bold;
}
Ecco il risultato finale della trasformazione della nostra lista ordinata in menù verticale.
Esistono molti siti in rete con svariati esempi ai quali ispirarsi per trasformare le liste ordinate in menu di navigazione, la maggior parte sono in lingua inglese:
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
[ Torna all’inizio della pagina ]
Sito realizzato dal Laboratorio di Accessibilità e Usabilità del CSI-Piemonte - Dichiarazione di accessibilità