Tutorial: Accordion con Moo.fx

L'accordion è un effetto molto bello che fa lo "sliding" tra diverse div: è un modo elegante per tenere compatto un menù: potete vedere un esempio di accordion sul blog di Federico Fasce.

Per realizzare velocemente un menù con l'effetto accordion possiamo utilizzare le ultra-premiate, ultra-utilizzate e italianissime Moo.fx. Scaricate la versione per prototype.

Dopo aver scaricato le Moo.Fx partiamo con il nostro menù. Create un file HTML, includete prototype.lite.js, moo.fx.js e accordion.js. Inserite all'interno del body 4 coppie di div: le coppie saranno composte da una div con attributo class "titolo" seguita da una div con attributo class "contenuto".

La div "div.titolo" corrisponde sezioni del menù, mentre "div.contenuto" conterrà le sottovoci del menù. Il sorgente dell'esempio è molto più chiaro al riguardo :P

La funzione init(), chiamata al caricamento della pagina, si occuperà di creare il nostro effetto, vediamola nel dettaglio.

function init()
{
// Prende gli elementi tramite la classe
var titoli = document.getElementsByClassName('titolo');
var contenuti = document.getElementsByClassName('contenuto');
 
// Crea Accordion
var myEffect = new fx.Accordion(titoli, contenuti, {opacity: false, duration: 300 });
}

Niente di fantascientifico... Tramite la funzione getElementByClassName() inseriamo in un vettore tutti gli elementi che hanno come classe "titolo" e "contenuto". Di seguito creiamo l'effetto con fx.Accordion().

Le opzioni passate riguardano in questo caso la trasparenza e la durata in millisecondi delle transizioni. Maggiori dettagli sulle opzioni potete trovarli sulla documentazione ufficiale: ad esempio l'opzione alwaysHide permette di chiudere completamente il menù.

Tutorial breve, giusto per riprendere un po' la mano ;)

Esempio funzionante

, , , ,
1 Star2 Stars3 Stars4 Stars5 Stars Vota!
Loading ... Loading ...
Condividi

Articoli che potrebbero interessarti

Un post al mese…
A chi serviva il PDF?
Abbonatevi a questo feed. Ora
Il meglio della settimana - 31
Due tutorial natalizi

28 Commenti per “Tutorial: Accordion con Moo.fx”

  1. MyAvatars 0.2 Skyline ha detto:

    odio usare le lib… o framework (chiamiamoli come vogliamo) ma non c’è un modo semplice e corto per fare questo effetto???

  2. MyAvatars 0.2 Napolux ha detto:

    @Skyline
    Se mi trovi qualcosa di più corto e semplice di una funzioncina JS di 3 righe e tre files da includere nella pagina fammelo sapere!

    Anch’io sono per il “fai da te”, ma ci sono casi in cui non è necessario inventare da capo l’acqua calda.

  3. MyAvatars 0.2 Skyline ha detto:

    si beh se tutti la pensano così ci saranno script che consumano 20 mega… VBulletin ne consuma 15 siamo a buon punto :D

  4. MyAvatars 0.2 YouON ha detto:

    perdonate il profano.
    Ho visto quest’effetto fatto molto bene (probabilmente lo conoscete già da mo’)
    http://stickmanlabs.com/accordion/

    Lo stesso autore ha realizzato anche lightwindow (davvero stupenda e semplice).
    Unica cosa fatico a farla funzionare su wordpress.
    Qualcuno di voi maghi ci è già riuscito?

    ciao, Alessio

  5. MyAvatars 0.2 Napolux ha detto:

    In che sezione lo dovresti mettere? Per i post? Per una cosa a parte? Fammi sapere ;)

  6. MyAvatars 0.2 YouON ha detto:

    adesso stavo provando nei post, ma il risultato è che si perde gli effetti.
    http://www.youon.it/lab/wordpress/

    infatti il file si apre ma il background ed un altro paio di cosette se le perde.
    scusa ci ho messo un po’ ma ho dovuto rifare il post di esempio.

  7. MyAvatars 0.2 Luca Togni ha detto:

    Bel tutorial, semplice ma efficace ;-)

  8. MyAvatars 0.2 Bane ha detto:

    Grande Francesco…però non riesco a capire una cosa…sono moooolto noob in queste cose.
    Allora, per l’html non c’è problema, sono già riuscito a farlo funzionare tempo addietro.
    Ma col maledetto WP non riesco proprio ad ottenere l’effetto che voglio.

    Vorrei avere una sidebar tipo quella di Kurai, ma sinceramente, non so dove piazzare tutto il codice. Cioè, la funzione init() la devo mettere in sidebar.php o in qualche altra pagina?

    Salvaaaami ;)

  9. MyAvatars 0.2 Napolux ha detto:

    @Bane
    Devi metterla nell’header e poi aggiungere al body la chiamata come nell’esempio.

  10. MyAvatars 0.2 Bane ha detto:

    Grazie caro, ora provo…se non funziona…avrà presto mie notizie

  11. MyAvatars 0.2 Napolux ha detto:

    @Bane
    Mi trovi su MSN, come al solito.

    P.s.
    Tu VIENI all’iWordCamp. E non è una domanda.

    ;)

  12. MyAvatars 0.2 Bane ha detto:

    Si ho letto e sinceramente l’idea mi stuzzicava…cmq l’accordion funziona, thanks.

    E comunque io son n00b che vengo a fare?

  13. MyAvatars 0.2 Navin Raj ha detto:

    Hi,
    i too have created an accordian in JS which is just 1KB.
    please let me know your comments about it…
    Its on my site :)

  14. MyAvatars 0.2 Napolux ha detto:

    @Navin Raj
    Really neat!!! Do you also have a plain (not encrypted) version?

  15. MyAvatars 0.2 gatiba ha detto:

    Ma non esiste un modo per creare in modo decente accordion annidati?
    Menu, sottomenu, etc…

  16. MyAvatars 0.2 Napolux ha detto:

    @gatiba
    Sai che non ho mai provato? ;)

  17. MyAvatars 0.2 Bane ha detto:

    Ok l’accordion funziona, ne ho approfittato per cambiare di nuovo tema. Thx a lot!

  18. MyAvatars 0.2 YouON ha detto:

    il post è di qualche giorno fa ma questo template per wp merita secondo me http://ensellitis.com/sandbox/

  19. MyAvatars 0.2 Napolux ha detto:

    @YouON
    Carino il template!

  20. MyAvatars 0.2 Lionrob ha detto:

    ciao!!
    Finalmente ho trovato un tutorial chiaro su questo menù!
    Complimenti, solo una cosa però. Ho seguito alla lettera quello che hai scritto, ma ho un problema, anche se passo l’opzione alwaysHide:true il menù non è chiuso al caricamento della pagina. Basta solo passare quello o devo modificare anche qualcos’altro?

    grazie per la risposta

  21. MyAvatars 0.2 Napolux ha detto:

    @Lionrob
    Per quel che ne so una tab deve essere sempre aperta… Però devo controllare ;)

  22. MyAvatars 0.2 Lionrob ha detto:

    mmm a me rimangono tutti aperti i menù fin da subito… purtroppo ho tolto il menù quindi non posso lasciarti neanche un link per vedere l’effetto che fa a me.
    Comunque non sono esperto in ste cose, anzi sono agli inizi, quindi volevo chiederti se per caso c’è qualcosa sottointeso da fare oltre a quello che c’è scritto lì perchè funzioni correttamente?
    grazie ancora e scusami di nuovo per il disturbo ^^

  23. MyAvatars 0.2 Napolux ha detto:

    Allora vuol dire che c’era un qualche errore nel JS. La console di Firefox che diceva?

  24. MyAvatars 0.2 Lionrob ha detto:

    mmm … non l’ho guardata :sad: … anche perchè mi è già successo che in qualche sito non funzionasse qualcosa e si apriva da sola, quindi stavolta che non l’ha fatto pensavo fosse tutto ok.
    ora cmq non posso riprovare a mettere il menù nel sito perchè vado via ^^ .. quando torno al massimo mi rifarò vivo ^^

    grazie ancora della disponibilità ;)

  25. MyAvatars 0.2 robert ha detto:

    hi,
    i try to implement your code (its very nice) to a site. i got a problem with it. it is possible to open a specific content instead of the default first?
    please drop me a mail.

  26. MyAvatars 0.2 Napolux ha detto:

    Hi Robert.
    You have to think of something like a cookie or a PHP trick that opens the specific content you want to show.

    I’ve made something similar for a work project, maybe I’ll post it…

    :-)

  27. MyAvatars 0.2 robert ha detto:

    hmm.. my idea to somehow open a slide with a specific id. as i saw i can open the second slide if i change in the “this.showThisHideOpen(0)” to “this.showThisHideOpen(1)” can you help me to write a “case” that grabs an id?

  28. MyAvatars 0.2 BobMoz ha detto:

    Ciao a tutti.
    Avete modo di dirmi come si fa a far si che non si apra in automatico la prima voce dell’accordion?

Lascia un commento



Chiudi
Invia e-mail