Tutorial Jquery : Menu déroulant simple Print E-mail
Computer Science - Jquery
Written by Guillaume   
There are no translations available.

logo jquery uiDans cet article, nous allons voir comment réaliser et personnaliser facilement un menu déroulant avec la librairie javascript jquery.

Tutorial Jquery : Menu déroulant simple

Découvrons comment réaliser simplement un menu déroulant (drop down en anglais) grâce à la librairie Jquery 1.3.2 et une pincée de style CSS. Le menu présenté se limite à 2 niveaux de titres (titre > libellés sections), libre à vous d'adapter le code pour définir des niveaux supplémentaires.

 

Le menu est compatible avec les navigateurs suivants : IE6+, Firefox 1.5+, Opera 8+, Safari 3+, Chrome 0.2+

 

Un aperçu du résultat final :

 

 

 

 

 

 

 

Tout d'abord il faut faire référence à la librairie javascript jquery à utiliser. Contrairement à mon article sur Jquery UI , nous allons ici faire référence à la librairie via le site de google, le visiteur aura ainsi plus de chance d'avoir déjà chargé  la librairie dans le cache de son navigateur.

Insérer la ligne suivante entre les balises <head></head> de votre code

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js" type="text/javascript"></script>
 

 

Dans le corps de notre page (entre <body></body>) préparons le squelette du menu déroulant. Rappelons si nécessaire que les balises <ul> et <li> sont les balises HTML à utiliser pour créer un menu et plus généralement une liste.

<ul id="MenuDeroulant">

    <li><a href="#">Informatique</a>

        <ul>            

            <li><a target="_blank"href="http://computure.net/fr/articles-informatique/10-csharp">C#</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-informatique/3-vbaarticles">Excel/VBA</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-informatique/14-free">Jquery</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-informatique/14-free">Free</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-informatique/12-qualitycenter">Quality Center</a></li>

        </ul>

    </li>

    <li><a href="#">Culture</a>

        <ul>

            <li><a target="_blank" href="/ http://computure.net/fr/articles-culture/6-bd">BD</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-culture/13-cinema">Cinéma</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-culture/15-generale">Générale</a></li>

            <li><a target="_blank" href="http://computure.net/fr/articles-culture/11-serietv">Série TV</a></li>            

        </ul>

    </li>

    <li><a href="#">Voyage</a></li>

    <li><a href="#">Boutique</a></li>

    <li><a href="#">Contact</a></li>

</ul>
 

 

Ajoutons quelques lignes de CSS dans l'entête (entre <head> et </head>) pour définir les styles à appliquer à votre menu. N'hésitez pas à personnaliser le votre en changeant les couleurs, la taille et la police du texte.  :

<style type="text/css">

#MenuDeroulant

{

    margin: 0;

    padding: 0}

        

    #MenuDeroulant li

    {    float: left;

        list-style: none;

        font: 12px Tahoma, Arial // La taille et la police du texte du menu }



    #MenuDeroulant li a

    {    display: block;

        background: #20548E; /* Couleur de fond des titres du menu (bleu foncé) */

        padding: 5px 12px;

        text-decoration: none;

        border-right: 1px solid white;

        width: 70px;

        color: #FFFFFF; // Couleur de police des titres du menu (blanc)

        white-space: nowrap}


    #MenuDeroulant li a:hover

    {    background: #1A4473} /* Couleur de fond des titres du menu au survol de la souris (bleu encore plus foncé) */

        

        #MenuDeroulant li ul

        {    margin: 0;

            padding: 0;

            position: absolute;

            visibility: hidden;

            border-top: 1px solid white}

        

        #MenuDeroulant li ul li

        {    float: none;

            display: inline}

        

        #MenuDeroulant li ul li a

        {    width: auto;

            background: #9F1B1B} /* Couleur de fond des items déroulant du menu (rouge bordeaux) */

        

        #MenuDeroulant li ul li a:hover

        {    background: #7F1616} /* Couleur de fond des items déroulant du menu au survol de la souris(rouge bordeaux encore plus foncé) */

        

</style>
 

 

Enfin, définissons le moteur du menu déroulant avec des fonctions jquery pour animer le CSS et définir le comportement du menu.

 

<script type="text/javascript">

// Au chargement du document, le code javascript suivant sera exécuté

$(document).ready(  

 function()

 {


var timeout    = 500;

var closetimer = 0;

var ddmenuitem = 0;


function MenuDeroulant_open()

{  MenuDeroulant_canceltimer();

   MenuDeroulant_close();

   ddmenuitem = $(this).find('ul').css('visibility', 'visible');}


function MenuDeroulant_close()

{  if(ddmenuitem) ddmenuitem.css('visibility', 'hidden');}


function MenuDeroulant_timer()

{  closetimer = window.setTimeout(MenuDeroulant_close, timeout);}


function MenuDeroulant_canceltimer()

{  if(closetimer)

   {  window.clearTimeout(closetimer);

      closetimer = null;}}


$(document).ready(function()

{  $('#MenuDeroulant > li').bind('mouseover', MenuDeroulant_open)

   $('#MenuDeroulant > li').bind('mouseout',  MenuDeroulant_timer)});


document.onclick = MenuDeroulant_close;


});

</script>
 

 

Cet article est tiré du site javascript-array.com (en anglais)

 

Pour aller plus loin :

17 plugins jquery pour réaliser différents types de menu  : http://www.webair.it/blog/2009/01/20/17-must-see-menu-in-jquery/

 


Comments
Add New Search
Thomas  - Je n'arrive pas à le faire marcher sur IE8   |90.20.175.xxx |2010-04-12 11:21:51
Tout est dans le titre ... Tout marche sur Firefox et Safari mais IE il ne se passe rien ...
Guillaume   |88.181.121.xxx |2010-04-14 22:54:55
@Thomas : Code testé sous IE8, aucun soucis !
nobo   |82.64.45.xxx |2010-08-23 03:19:04
très bon tuto ! simple et facilement customisable.
J'ai eu un peu de mal à center le menu et sinon j'ai déplacé le background de #MenuDeroulant li a(:hover) à #MenuDeroulant li(:hover), pour que le titre de chaque ul reste foncé lors du suvol des li. Comme ça le visiteur sait toujours quelle entrée est déroulée.
joey  - FF   |82.239.26.xxx |2010-10-03 17:46:06
essaie juste de télécharger firefox alors
bmayer  - Contenu à suivre ...   |192.44.63.xxx |2010-11-18 10:50:50
Ce menu fonctionne sous IE6, IE7, et FF (novembre 2010).

Toutefois, je n'arrive pas à ouvrir un nouvel élément de type "bloc" à la suite du menu. Ou plus exactement, un ... s'affiche à droite du menu, et non en dessous.
Bien sur, j'ai encadré le menu d'éléments "bloc"
Alain Tajchman   |213.189.170.xxx |2012-02-17 00:29:14
Ok, le code fonctionne et j'arrive à paramétrer, mais comment faire pour élargir les cellules (avec trop de caractères, le nom du menu est coupé) et comment déterminer la largeur de tout le menu (taille fixée)
Write a comment
Your name:
E-mail:
 
Web site:
Title:
UBB Code:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."