in questo breve e semplice tutorial, ho realizzato un menu animato utlizzando HTML e un pò di CSS mescolato a CSS3 con la pseudo classe :last-child.

Come nel precedente tutorial, anche questa volta la pseudo classe :hover unito alla proprietà transition dei css3 sono i principali elementi su cui mi sono basato.
per realizzare il menu sono partito da un div che contenesse una lista non ordinata ul con all’ interno alcune voci inserite tra i tag li.
<div id="menu"> <ul> <li><a href="#">home</a></li> <li><a href="#">about</a></li> <li><a href="#">portfolio</a></li> <li><a href="#">Rss</a></li> </ul> </div>
Per cominciare ho dato uno stile al div menu, facendo in modo che fosse centrato automaticamente nello schermo, assegnandoli una larghezza e uno spazio dal limite alto dello schermo grazie al valore padding:10%
#menu { width:500px; margin:auto; padding: 10% 0 0 0; }
Subito dopo ho creato lo stile per i tag ul, li e a.
ul { font-size:18px; font-family: Arial, Helvetica, sans-serif; text-transform: uppercase; color: #333333; border-bottom: solid thin #333333; } ul li { display:block; //Serve per visualizzare il menu in blocchi disposti orizzontalmente. padding:30px; //Decido un margine interno di 30px per ogni voce del menu. border-bottom: solid thin #ccc; border-top: solid thin #333; } ul li a { color: #333333; text-decoration: none;}
ul li:hover { background-color:#D3E3E3; padding: 30px 30px 30px 100px; -moz-transition: all 0.7s ease-out; /* FF3.7+ */ -o-transition: all 0.7s ease-out; /* Opera 10.5 */ -webkit-transition: all 0.7s ease-out; /* Saf3.2+, Chrome */ transition: all 0.7s ease-out; }
L’ ultimo valore della proprietà padding 100px è quella fondamentale per fare spostare la voce del menu da sinistra verso destra mentre 0.7s è il tempo in secondi che impiegherà a eseguire lo spostamento di 70px.
#ul li:hover:last-child { background-image:url(rss.png); background-repeat: no-repeat; background-position: 200px 0px; //l'icona compirà un movimento di 200px da sinistra verso destra all'icona. }
:last-child è una pseudo classe intodotta con i CSS3, questa è molto utile per semplificare alcuni tipi di operazioni con i fogli di stile, in questo caso farà in modo che al passaggio del mouse sull’ultima voce del menu li compaia una icona.
Il problema è che su IE e nelle versioni un pò datate dei browser più famosi non è riconosciuta, quindi non funzionante, per questo un altro metodo per ottenere lo stesso risultato sarà aggiungere una classe all’ultimo tag li del menu ul.
Quinidi:
<div id="menu"> <ul> <li><a href="#">home</a></li> <li><a href="#">about</a></li> <li><a href="#">portfolio</a></li> <li class="icona"><a href="#">Rss</a></li> </ul> </div>
e associargli di conseguenza questo CSS.
ul li.icona:hover { background-image:url(rss.png); background-repeat: no-repeat; background-position: 200px 0px;}
Bella questa animazione
Grazie Rocco
Bello, mi piace!
ma non sarebbe stato meglio applicare il padding e l’effetto hover al link (impostato come display:block) piuttosto che al li? in modo tale che tutta la striscia sia cliccabile.
Non so se ho reso l’idea.
Si capisco, è una soluzione anche quella, forse anche migliore, è che mi sembrava più corretto così.
Ciao, se volessi farlo in orizzontale il menu’ invece che in verticale cosa devo scrivere dopo display?
Ciao Matteo non so se è da un pò che segui il blog o sei appena arrivato comunque, benvanuto.
Per fare in modo che il menu venga visualizzato in orizzontale devi cambiare la proprietà Display:block in Display:inline.
Vedrai che però dovrai anche cambiare altri parametri perchè la visualizzazione non sarà il massimo dato che questo menu è stato pensato verticalmente, ti consiglio di cambiare subito anche la dimensione in larghezza del men width:500px aumentandola a 960px per esempio, oppure width:100%
Grazie mille, è da pochissimo che seguo il blog, mi piace moltissimo e credo che ci faro’ molte visite