Cette page-ci montre comment construire un menu déroulant. Selon nos conventions, les encadrés rouge pâle et vert pâle contiennent respectivement du code HTML et CSS ; le CSS peut être modifié, pour vérifier le rôle de chaque règle. Le bouton bleu situé en bas vous permet de visualiser l'effet de chaque modification (s'il se passe des choses bizarres, c'est qu'il y a des erreurs quelque-part dans les modifications que vous avez faites). Vous pouvez réinitialiser le code n'importe quand en poussant la touche « F5 » du clavier. Le menu déroulant généré par le code est situé en dessous.
Cliquez le bouton pour tester le CSS. Pour réinitialiser, appuyez sur la touche « F5 ».
Voici les étapes pour générer le menu :
Étape #1 : La première chose à faire est de créer la barre du menu. Cela est fait en utilisant une liste non-ordonnée. Comme nous voulons que les éléments de la liste soient disposés horizontalement
plutôt que verticalement, nous utilisons la déclaration « display: inline-block;
» pour « .menu>li
». Ceci a aussi pour effet d'éliminer les
puces¹. Pour éviter le
déportement à droite associé aux listes, nous utilisons également la déclaration « padding-left: 0;
» pour « .menu
».
Étape #2 : Il faut ensuite créer les listes du menu déroulant. Ceci se fait également en utilisant des listes non-ordonnées. La partie la plus importante du code est constituée des déclarations
« display: none;
» pour « .dd_list
» et « display: block;
» pour « .drop_down:hover .dd_list
». Ce sont
elles qui font que les listes restent cachées en temps normal, mais qu'elles apparaissent lorsque la souri est au-dessus de « propriété 1 », « propriété 2 », etc. De nouveau nous utilisons la déclaration
« padding-left: 0;
» pour éviter un déportement à droite. Nous utilisons également la déclaration « list-style-type: none;
» pour éliminer les
puces².
La déclaration « position: absolute;
» pour « .dd_list
» est nécessaire pour assurer que les articles du menu ne se déplacent pas lorsque les listes apparaissent. La règle
« .drop_down { position:relative; }
» est optionnelle ; elle est là au cas où on voudrait positionner les listes déroulantes.
Le reste du code est là pour des raisons cosmétiques.
Étape #3 : Pour un menu de navigation, la fonctionalité serait obtenue tout simplement en insérant des hyperliens dans les listes déroulantes. Pour un autre type de menu, il faudrait faire appel à du JavaScript.
¹ Si on voulait garder les puces, on pourrait plutôt utiliser la déclaration « float: left;
» pour « .menu>li
».
² Le même résultat peut être obtenu avec la déclaration « display: block;
» pour « dd_list li
».