Accueil >> Articles
Un menu vertical en CSS - Partie 2

En ce beau dimanche de printemps, nous allons voir ensemble la fin de la construction du menu en CSS (pour rappel voir la partie 1).
Prêt ? Alors c'est parti !
Nous allons commencer par rendre le menu de niveau 2 visible au passage de la souris sur le niveau 1
Dans le fichier CSS, ajouter :
div#menu ul.rang1 li.smenu:hover ul.rang2 {
display: block;
}
Pour une présentation identique entre le sous-menu et le menu, remplacer :
div#menu li a {
color: #666;
}
Par :
div#menu li a,
div#menu ul ul li a,
div#menu ul.rang1 li.smenu ul.rang2 a {
color: #666;
}
Pour conserver la couleur de fond et la couleur de police sur le menu lors du survol du sous-menu, remplacer :
div#menu li a:hover,
div#menu ul.rang1 li.smenu:hover a {
color: #FFF;
}
Par :
div#menu li a:hover,
div#menu ul ul li a:hover,
div#menu ul.rang1 li.smenu ul.rang2 a:hover,
div#menu ul.rang1 li.smenu:hover a,
div#menu ul.rang1 li.smenu ul.rang2 li.smenu:hover a {
color: #FFF;
}
Dans un souci de visibilité, nous allons ajouter une flèche sur les menus pour indiquer qu'un sous-menu est disponible.
Après :
div#menu li a:hover,
div#menu ul ul li a:hover,
div#menu ul.rang1 li.smenu ul.rang2 a:hover,
div#menu ul.rang1 li.smenu:hover a,
div#menu ul.rang1 li.smenu ul.rang2 li.smenu:hover a {
color: #FFF;
}
Ajouter :
div#menu ul.rang1 li.smenu {
background: #ddd url(../images/fleche-droite.png) 95% 50% no-repeat;
}
Et pour garder notre background et notre police du menu au survol du sous-menu, ajouter juste en dessous :
div#menu ul.rang1 li.smenu:hover {
background: #666 url(../images/fleche-blanche-droite.png) 95% 50% no-repeat;
}
Vous noterez que j'en ai profité pour changer la couleur de la flèche au survol.
En passant la souris sur le menu 4, on s'aperçoit que le principe est conservé sur le niveau 2 avec l'apparition d'une flèche indiquant un autre niveau. On va donc pouvoir afficher notre menu du niveau 3.
Remplacer :
div#menu ul.rang1 li.smenu:hover ul.rang2 {
display: block;
}
Par :
div#menu ul.rang1 li.smenu:hover ul.rang2,
div#menu ul.rang2 li.smenu:hover ul.rang3 {
display: block;
}
On stylise le sous-menu de niveau 3.
Remplacer :
div#menu li a,
div#menu ul ul li a,
div#menu ul.rang1 li.smenu ul.rang2 a {
color: #666;
}
Par :
div#menu li a,
div#menu ul ul li a,
div#menu ul ul ul li a,
div#menu ul.rang1 li.smenu ul.rang2 a,
div#menu ul.rang1 li.smenu ul.rang2 li.smenu ul.rang3 a {
color: #666;
}
Pour terminer, remplacer :
div#menu li a:hover,
div#menu ul ul li a:hover,
div#menu ul.rang1 li.smenu ul.rang2 a:hover,
div#menu ul.rang1 li.smenu:hover a,
div#menu ul.rang1 li.smenu ul.rang2 li.smenu:hover a {
color: #FFF;
}
Par :
div#menu li a:hover,
div#menu ul ul li a:hover,
div#menu ul ul ul li a:hover,
div#menu ul.rang1 li.smenu ul.rang2 a:hover,
div#menu ul.rang1 li.smenu ul.rang2 li.smenu ul.rang3 a:hover,
div#menu ul.rang1 li.smenu:hover a,
div#menu ul.rang1 li.smenu ul.rang2 li.smenu:hover a {
color: #FFF;
}
Ce tutoriel serait terminé s'il ne restait pas à régler le cas d'Internet Explorer 6. En l'état, le menu ne fonctionne pas sous IE6 puisque ce dernier ne comprend pas la pseudo classe :hover sur un autre élément que la balise a.
Rassurez-vous, il existe une solution. Celle que je vais vous expliquer permettra de conserver un CSS valide W3C.
Nous allons créer un nouveau fichier css que l'on nommera menu-ie6.css.
Ce fichier contiendra uniquement une classe appelant le fichier pour corriger le problème au survol :
body {
behavior: url(css/csshover.htc);
}
Vous pouvez télécharger le fichier en cliquant ici
Pour terminer, nous allons modifier le fichier index.html.
Après :
<link href="css/menu8.css" type="text/css" rel="stylesheet" />
Ajouter :
<!--[if IE 6]> <link rel="stylesheet" type="text/css" href="css/menu8-ie6.css" /> <![endif]-->
La seule différence avec les autres navigateurs est la disparition de la flèche au survol.
Ce tutoriel est à présent terminé. N'hésitez à envoyer vos commentaires :-)
Tweet
4 commentaires :
Le 25/06/2010 à 22h18
bonjour, j'ai essayé de suivre votre tuto car j'essaie désespérément une flèche a mon menu en cas de sous menu, mais rien a faire la flèche s'affiche partout...qu'il y ait des sous menus ou non!
merci d'avance!!
Le 25/06/2010 à 22h26
D'après le code du menu que vous avez posté (non affiché sur le blog), vous avez complètement modifié le code.
Je vous conseille de reprendre le tuto et d'effectuer les modifications une fois votre menu calé.
Le 21/09/2010 à 21h59
Bonjour j'ai deux problèmes
Impossible d'avoir le sous menu et les fleches et cela ne marche pas dutout sous mozilla est ce normal
cordialement
Le 21/09/2010 à 23h15
Bonsoir
Sur quel version de Firefox et quel OS ?

- Divers (3)
- Graphisme (1)
- Guest-Blogging (1)
- Insolites (2)
- Internet (12)
- Interviews (1)
- Logiciels (1)
- Matériels (4)
- Référencement (34)
- Réseaux sociaux (4)
- Tutoriels (8)

- Référencement des images : l'état de l'art
- Gérer la planification de vos soumissions
- Annuaire, CP, digg : une modération exigeante
- Interview de Didier Barbeau, alias Littlebuzz
- Des offres d'un autre temps
- Des liens en nofollow, utile ou pas ?

- rake le 02/02/2012 à 11h13
Pour 149 €, le travail doit être un... - Djolhan le 01/02/2012 à 16h39
Après avoir utilisé plusieurs fois ce système sur... - Cyril le 31/01/2012 à 17h19
Pas trop long Nicolas, non. ;) C’est suffisamment... - Nicolas le 30/01/2012 à 18h40
Tout d’abord joli boulot de synthèse, très clair.... - Bertrand le 30/01/2012 à 16h16
J’adore les défis sous entendus que les blogueurs... - Comm2Presse le 29/01/2012 à 14h32
Ce qui est fou (bien que quelque part...


- Lun
- Mar
- Mer
- Jeu
- Ven
- Sam
- Dim
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29

