Après m’être amusé longuement à la visite de nombreux sites habillés de jolis menus déroulant, il m’a pris l’envie de réaliser un plugin facile d’installation pour les utilisateurs de jQuery.
Sur un design léger et des fichiers qui le sont tout autant, celui-ci reste grandement personnalisable.
Le principe
En partant de simples listes imbriquées (sur un niveau de profondeur uniquement, pour le moment…), l’activation de ce plugin provoquera la mise en place d’un menu déroulant avec comme effet un slidedown
au survol, un fadeout
lorsqu’on quitte le sous-menu. Un petit effet gadget a été ajouté sur les liens des sous-menus au survol. Je vous laisse prendre connaissance de cela :
Plugin jQuery – DropDown Menu
Le code de base
Il vous faudra simplement un menu non-ordonné dans un autre menu non-ordonné.
Exemple :
<div id="dropdown">
<ul>
<li><a href="#accueil">Accueil</a></li>
<li><a href="#rea">Nos services</a>
<ul>
<li><a href="#print">Print</a></li>
<li><a href="#web">Web</a></li>
<li><a href="#marketing">Marketing</a></li>
<li><a href="#ref">Référencement</a></li>
<li><a href="#access">Accessibilité</a></li>
</ul>
</li>
<li><a href="#comp">À propos</a>
<ul>
<li><a href="#who">Qui sommes nous ?</a></li>
<li><a href="#what">Nos compétences</a></li>
<li><a href="#ref">Nos références</a></li>
</ul>
</li>
<li><a href="#contact">Contact</a></li>
</ul>
</div>
L’important c’est d’avoir de quoi cibler votre menu précisément grâce à un élément de type block conteneur (par l’utilisation d’une classe ou d’un identifiant soit directement sur l’élément soit sur un parent assez proche).
Mise en place et personnalisation
Je ne vais pas vous redonner le contenu de la page du plugin, je vous laisse en prendre connaissance :
Plugin jQuery – DropDown Menu – Utilisation
La personnalisation passe principalement par du CSS écrit grâce à jQuery. Une multitude de variables sont donc disponibles et modifiables. J’admets que ce n’est pas forcément le plus aisé pour une personne qui s’y connait en CSS, car en plus des modifications à effectuer il faut s’habituer aux noms des variables (rendues les plus explicites possible) ; mais ce plugin s’adresse justement à un public plutôt large, et doit comprendre les novices en ce langage de style.
Améliorations
Pour toute suggestion d’amélioration ou rapport de bogue, n’hésitez pas à me contacter ici ou via le formulaire de contact du blog, des plugins, du book, etc. (au choix, pas partout en même temps :p )
Merci, et amusez-vous bien !
Liens utiles :
– Plugin jQuery – DropDown Menu
– Les Plugins jQuery sur CreativeJuiz
Salut,
Bravo pour ce plugin, il fonctionne parfaitement.
Bon après c’est plutôt amusant de passer plusieurs fois sur un lien dans le menu déroulant puisque l’animation continuera de se faire sur le lien alors qu’on aura arrêté de bouger la souris 😀
Par contre, j’ai plutôt utilisé un SlideUp pour remonter le menu, après c’est une question de goût.
En tout cas, bravo pour ce joli menu déroulant =)
Merci Atinux !
Oui effectivement les effets d’animation en jQuery sont variées, et les goûts aussi 😛
Je pensais justement offrir le choix en option du style d’animation à utiliser. Ton commentaire me conforte dans l’idée de le proposer aux utilisateurs.
D’ailleurs il faut que je mette à jour le code, j’ai optimisé son fonctionnement dernièrement.
Merci pour ton commentaire, au plaisir !
Bonsoir,
Merci beaucoup pour ce plugin, il est très intéressant.
J’ai juste un soucis, je n’arrive pas à faire en sorte que la largeur du sousmenu s’adapte à la longueur du lien le plus long.
Il reste à la taille du li du dessus…
Si vous avez une idée pour ça!!!
Merci beaucoup et bonne soirée
Bonsoir Caroline,
Merci pour votre intérêt envers ce plugin 🙂
Après l’avoir terminé j’ai eu l’occasion de beaucoup étudier les menus déroulants sur d’autres projets.
Aussi une mise à jour est prévue pour ce plugin incluant :
– meilleure prise en charge des vieux navigateurs
– navigation au clavier (tabulation simple)
– prise en charge d’un deuxième sous-niveau
– extériorisation des styles CSS
Cette mise à jour s’inclut dans une mise à jour globale du site accueillant les différents plugins.
Je vous propose donc de vous contacter par e-mail pour vous prévenir de la prochaine mise à jour (avec votre autorisation bien entendu).
En attendant essayez quelque chose dans ce goût là :
A placer après l’appel de la fonction, et à personnaliser bien entendu (sélecteur et valeur).
Bizarrement je n’avais pas prévu de variable pour régler la largeur… erreur ! :p
Merci pour votre retour, ça va me motiver à mettre à jour tout ça !
Bonne continuation, n’hésitez pas à me solliciter si besoin.
PS : sinon j’accepte volontiers le tutoiement si c’est réciproque
Merci pour ta réponse, et oui j’accepte le tutoiement!!
En fait j’aimerais reproduire ton exemple, j’ai testé en allongeant les liens et ça s’adapte en taille, mais je dois avoir des styles qui interfèrent!!
Je regarde ça de plus près aujourd’hui!!
Bonne journée
Re bonjour,
En fait j’aimerais arriver au même résultat que pour le sous menu Nos services. Avec firebug, quand tu doubles les textes, le menu s’étire, pas pour le 2ème, qui reste fixe, et je ne vois pas ce qui change…
Si tu as une idée!!
Bonne soirée
Hello,
J’ai peur de ne pas tout comprendre.
Mais si j’en reste à ce que j’ai compris, le sous-menu de « Nos services » dispose d’encore un peu de place en largeur sur mon exemple, en jouant un peu sur celle-ci il est normal qu’elle s’adapte.
Mais le souci réside bien dans le fait que la largeur
auto
sur unul
de sous-menu permet à cet élément de faire, au maximum, la largeur duli
parent.Bon week-end 😉
Bonsoir!!
Je suis arrivée à ce que je voulais!
Maintenant j’essaye de debugguer sur IE, mais j’ai la même erreur que toi… As tu trouvé d’où ça venait?
Bonne soirée en tous cas et bonne fin de week end!
Hello,
J’ai tenté un nouveau débogage pour IE, mais impossible de voir l’erreur.
Celle-ci se produit lorsque je clique sur le bouton qui me permet de transformer ma liste en menu, donc j’imagine dès l’activation du plugin.
Je verrais lors de la prochaine mise à jour si le problème revient.
Bonne soirée, et navré pour le dérangement que cela peut produire.
Bravo pour ce plugin très efficace!
Affichage impécable sur Firefox mais gros problème de rendu sur IE8.
Bonjour,
Merci pour ce retour.
Oui effectivement il y a de gros soucis pour IE, mais aussi du côté de l’utilisabilité du plugin et des personnalisations.
Une refonte du site et des plugins est en cours, je vous tiendrai au courant de la prochaine mise à jour.
Bonne continuation
Bonjour et bravo franchement pour ce plugin très super.
J’avais une question je veux réaliser un troisième niveau de menu, mon problème c’est que je veux que l’affichage du troisième niveau s’aligne sur le sous menu le concernant.
Bonjour,
Navré pour le temps de réponse, ton commentaire est passé automatiquement dans les indésirables.
Le plugin a été mis à jour dans une version qui sera mise en ligne dans la semaine. Un article sur ce blog est en cours d’édition. Je t’invite à attendre cet article afin de voir les nouveautés apportées par ces mises à jour.
Merci pour ton retour en tout cas 🙂
Merci pour ce partage! après plusieurs recherche je suis tombé sur ce site et j’ai trouvé mon bonheur!
Bonjour,
Pour commencer merci pour ce plugin il est très jolie mais j’ai deux petits soucis:
Le premier et lorsque je couple ce menu avec un diaporama (lui aussi en JQuery) les menus disparaissent … Et je n’ai pas réussi à réparer se problème …
Le second est bien évidement celui de IE (bon on se demande pourquoi il l’utilise mais bon… faut les satisfaire eux aussi) est tu toujours sur se petit problème de compatibilité ?
Bonjoir,
Pour le premier souci, il faudrait que je vois la chose directement en ligne, sur la page sur laquelle tu travailles, pour éventuellement voir s’il y a conflit, et si c’est le cas déterminer pourquoi.
Pour le second souci, oui, j’ai noté la chose sur ma "to do list", mais je n’ai pas encore eu le temps de m’y pencher.
Je peux te tenir au courant par e-mail lorsque le bogue sera corrigé si tu le souhaites.
Bon week-end !
Bonjour, je voudrais inclure le menu deroulant dans plusieurs pages en faisant appel à un seul fichier template
Pour cela j’utilise la fonction
load()
de jquery.Mon code jquery ressemble à çà:
$(document).ready(
function(){
//chargement code html du menu
$("#barmenu").load("include/menu.html");
}
//initialisation menu deroulant
$("#dropdown").juizDropDownMenu({
'showEffect' : 'fade',
'hideEffect' : 'slide'
});
);
Savez vous pourquoi, le menu ne s’initialise pas de cette facon?
Connaissez vous un moyen de réaliser l’inclusion du menu en utilisant seulement jquery? ( je n’ai pas accès à php).
Merci beaucoup pour votre aide.
Sylvain
Bonsoir Sylvain,
J’utilise très peu la fonction load(), mais a priori la syntaxe serait plutôt :
La fonction étant initialisée que lorsque
load()
donne un résultat.Bonne soirée.
merci désolé jrépond un peu tard.
en fait ca a fonctionné en mettant la fonction d’initialisation directement dans le fichier menu.html.
merci encore et bonne continuation.
Bonsoir, super plugin et merci beaucoup 🙂
Alors moi, j’ai un souci qui peu paraître carrément con, mais je n’ai encore jamais installé de plugin et voilà pourquoi je vais demandé : Comment dois-je faire ?
En effet, je suis en train de refaire le design de mon forum à l’occasion d’un nouvel évent qui sera bientôt disponible et j’aurais aimé changer le menu déroulant que je possède déjà par celui que tu proposes, hors, je ne comprends pas comment l’installer, ni même comment le personnalisé. J’ai un forum sur forumactif, si tu pouvais éventuellement m’expliquer la démarche que je dois suivre ou me rediriger vers un tutoriel expliquant comment installer un plug sur un F.A, ce serait sympa 🙂
Merci beaucoup ♥
Bonjour 🙂
À ma connaissance Forum actif ne permet pas d’ajouter de script proprement sans passer par le système de template. Je t’invite à contacter les utilisateurs du forum des forums pour plus de précisions sur l’insertion d’un script JS. Bon courage.
Bonjour j’ai essayé de faire un slidshow avec ce code :
Mais j’ai un problème cela ne fonctionne pas alors qu’est ce que je peux améliorer pour que ça fonctionne?
Bonjour,
Je ne peux pas trop vous aider avec si peu d’information. Une démonstration en ligne serait bien plus parlante. Merci.
Bonjour. Il est très cool ce menu.
Toute fois j’ai un problème de compatibilité avec d’autres version de JQuery. J’utilise la version 1.11 qui est utile pour mes formulaires JQuery-UI; mais dès que je l’inclus le menu déroulant ne fonctionne plus. Comment y remédier?
Bonjour,
Ce plugin commence à dater (5 ans à l’heure où je vous parle), certaines fonctions sont probablement devenues obsolètes.
Il faut regarder du côté de jQuery Migrate qui permet d’assurer une certaines retro compatibilité avec les vieux plugins :
https://github.com/jquery/jquery-migrate/
C’est un complément au reste : charger votre nouvelle version de jQuery, charger jQuery Migrate, puis charger les différents plugins.
Bon courage !