X

Creare un menù a scomparsa con jQuery

Pubblicato da il giorno 16 marzo 2010

Ai lettori più esperti del mondo del web sarà capitato di vedere in molti siti, più o meno famosi, dei menù che nascondono altri link. Tra questi anche lo stesso Skimbu ne nasconde uno, che vi si rivelerà non appena passerete col mouse sulla pagina dei progetti.

Il menù che andremo a creare

Oggi vi spiegherò come creare un menù come questo, che, una volta cliccato il pulsante, mostrerà altri menù nascosti. Utilizzeremo jQuery, spiegato in breve nel mio articolo precedente.

Per prima cosa inseriamo nell’head alcuni semplici comandi per caricare il nostro foglio di stile e jQuery che troverete in allegato nel file al termine della pagina.

<link href="style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>

Per prima cosa ci occuperemo del body, aprite quindi il vostro foglio di stile (nel nostro caso style.css) e scrivete questi semplici comandi:

body {
 font-family:Arial, Helvetica, sans-serif;
 font-size:12px;
 background-color: #FFF;
}

Per continuare creiamo un div che sarà il nostro vero e proprio pulsante, che noi chimeremo pulsante, nel quale inseriamo una semplice immagine precedentemente disegnata (trovate il .psd nel file in fondo all’articolo). Ecco il codce:

<div id="pulsante">
<img src="images/button.png" width="516" height="43" class="pulsante_sliding" />
</div>

Ed ecco lo stile da applicare:

#pulsante {
 height: 43px;
 width: 516px;
 margin: auto;
}

A questo punto dovremmo aver un risultato simile a quello sotto, in base alle immagini che utilizzerete, che però non ha alcun azione/effetto. E’ molto importante applicare la classe pulsante_sliding alla nostra immagine perchè il nostro menù risulti funzionante.

Occupiamoci adesso del menù vero e proprio. Inserite questo codice prima della chiusura del div dove avete messo l’immagine.

<ul>
<li><a href="#">Skimbu</a></li>
<li><a href="#">Tutorial</a></li>
<li><a href="#">By</a></li>
<li><a href="#">Kikkozzo</a></li>
</ul>

Ecco lo stile che ho deciso di applicare:

ul, li {
 margin:0;
 padding:0;
 list-style:none;
}

.menu {
 display:none;
 margin: auto;
 width:500px;
 border: 1px solid  #CCC;
 border-top: none;
}

.menu li {
 background-color: #FFF;
}

.menu li:hover {
 background-color: #D7D7D7;
}

.menu li a {
 color:#000;
 text-decoration:none;
 padding:10px;
 display:block;
}

.menu li a:hover {
 font-weight:bold;
 color: #0075e1;
}

Se volete che il menù sia nascosto prima che clicchiate sul pulsante è molto importante che non eliminiate dallo stile la riga

display: none;

Se invece desiderate avere una preview di quello che state programmando, eliminatela pure, ma ricordatevi di rimetterla! Anche il comando list-style: none; è fondamentale. Cancellandolo otterette infatti un “classico” menù a pallini.

Per ultimo, arriviamo finalmente al codice che ci permette di creare il menu. Ovviamente è scritto in jQuery, motivo per cui in precedenza lo abbiamo caricato.

<script type="text/javascript">
$(document).ready(function () {
 $('img.pulsante_sliding').click(function () {
 $('ul.menu').slideToggle('medium');
 });
});
</script>

Come potete vedere vengono richiamate le classi pulsante_sliding e menu, quindi, qualora decideste di chiamarle in un altro modo, ricordatevi di cambiare il nome che è riportato in questo script.
Per spiegarvi brevemente questo codice, il comando $(‘img.pulsante_sliding’).click(function () { richiama la nostra immagine con classe pulsante_sliding e gli assegna una funzione al “click” del mouse, che è proprio quella di richiamare l’”ul” con classe menu.

Il risultato finale dovrebbe essere, una volta premuto il pulsante, quello in apertura. L’esempio utilizzato per il tutorial è davvero semplice, ma con questa tecnica possiamo ottenere risultati davvero strabilianti. Ecco il file per ogni dubbio:

N.B.: come ci suggerisce il nosro utente WebDesigner92, è possibile anche creare lo stesso effetto, ma che avviene quando si passa sopra il pulsante, non quando invece lo clickiamo. Per farlo è sufficiente campiare .click(function in .hover(function

, 30 articoli pubblicati

Appassionato webdesigner e grafico, a detta degli altri, abbastanza capace. Sono entrato in Skimbu per sviluppare progetti con l'aiuto di altre persone.

Visita il sito web di questo autore

Condividi l'articolo!

  • http://www.manuelcop.altervista.org ManuelCop

    Come posso fare per fare in modo che il menù si apra anche al passaggio del mouse e non cliccando come avviene ora??
    Grazie

  • http://www.youtube.com/user/WebDesigner92 WebDesigner92

    @ ManuelCop:
    Ti basta che al posto di click() sostituisci il comando hover() 8)

  • Kikkozzo

    @ WebDesigner92:
    giusto non ci avevo pensato a scriverlo, adesso modifico l’articolo e faccio un nota bene per chi vuole farlo.

  • http://www.skimbu.it Alberto Ziveri

    Bene, per la demo la prossima volta prova ad uploadare il file html e vedere se funziona e poi metti il link diretto all’anteprima HTML ed anche al file zip con i files.
    Per il resto ho modificato solo la prima parte mettendo un link al tuo articolo precedente.
    L’articolo di per sé è ottimo per coloro che si vogliono avvicinare a jQuery ;-)

  • darkhouse

    ma nel file css quel “.menu” da dove proviene???

  • checco

    C’è un modo per fare un menù così in wordpress?
    grazie mille