Un menu horizontal CSS
Ce menu horizontal est basé sur des propriétés CSS (avec la pseudo-classe :hover). Il ne fonctionne sur des navigateurs récents (exit IE6). Les rubriques et les sous-rubriques s’adaptent automatiquement en largeur et elles sont fonction de leur contenu. En survol d’une sous rubrique, la rubrique principale reste sélectionnée.
Code XHTML
<ul class="menu"> <li><a href="">Qui sommes-nous ?</a> <ul> <li><a href="">Historique</a></li> <li><a href="">Société</a></li> <li><a href="">Recrutement</a></li> <li><a href="">Chiffres</a></li> </ul> </li> <li><a href="">Métiers</a> <ul> <li><a href="">Conseil</a></li> <li><a href="">Graphisme</a></li> <li><a href="">Développement</a></li> <li><a href="">Marketing</a></li> </ul> </li> <li><a href="">Solutions</a> <ul> <li><a href="">OxyCMS</a></li> <li><a href="">OxyMUTUA</a></li> <li><a href="">OxyNDD</a></li> <li><a href="">OxyPRINT</a></li> </ul> </li> <li><a href="">Support</a> <ul> <li><a href="">Compte client</a></li> <li><a href="">S'inscrire</a></li> </ul> </li> <li><a href="">Contact</a></li> </ul>
Code feuille de style CSS
La liste à puces verticale va être transformer en une liste horizontale.
ul.menu {
width: auto;
height: 35px;
line-height: 35px;
}
ul.menu li {
float: left;
height: 35px;
width: auto;
}
ul.menu li a {
padding: 0px 10px 0px 10px;
color: #FFFFFF;
background: #000000;
font-weight: bold;
margin: 0;
display: block;
}
ul.menu li a:hover {
color: #FFFFFF;
background: #ed7928;
}
Pour faire disparaître les sous-rubriques, il suffit d’ajouter display:none à la sous-rubrique de la classe menu :
ul.menu li ul {
display:none; /* masques les sous-rubriques */
width: auto; /* largeur automatique */
/* remise à 0 des valeurs du parent */
margin: 0;
padding: 0;
/* end */
}
Maintenant, il nous suffit de mettre les sous rubriques en vertical car elles ont hérités de leur parent une mise en forme horizontale et de faire apparaître les sous-rubriques en survol de la rubrique.
Sous-rubrique en vertical
ul.menu li:hover ul {
display:block;
}
ul.menu li:hover ul li {
float:none;
/* remise à 0 des valeurs du parent */
width: inherit;
margin: 0;
}
En se déroulant, les sous rubriques sont en dessous et décalé. Pour cela il faut attribuer une position absolue aux sous-rubrique.
ul.menu li ul {
position:absolute;
width:auto; /* largeur automatique */
}
Votre menu est quasiment finalisé, il ne vous reste plus qu’à avoir un survol qui reste actif sur la rubrique. Il faut ajouter “ul.menu li:hover > a” à la déclaration “ul.menu li a:hover” comme sur l’exemple suivant :
ul.menu li a:hover, ul.menu li:hover > a {
color: #FFFFFF;
background: #ed7928;
}
Votre feuille de style finale est la suivante :
body {
font-family: Arial;
font: 12px;
}
ul.menu {
width: auto;
height: 35px;
line-height: 35px;
}
ul.menu li {
float: left;
height: 35px;
width: auto;
}
ul.menu li a {
padding: 0px 10px 0px 10px;
color: #FFFFFF;
background: #000000;
font-weight: bold;
margin: 0;
display: block;
}
ul.menu li a:hover, ul.menu li:hover > a {
color: #FFFFFF;
background: #ed7928;
}
ul.menu li ul {
display:none; /* masques les sous-rubriques */
width: auto; /* largeur automatique */
/* remise à 0 des valeurs du parent */
margin: 0;
padding: 0;
/* end */
}
ul.menu li ul li a {
background: #ed7928;
color: #FFFFFF;
display: block;
padding: 0px 10px 0px 10px;
margin: 0;
}
ul.menu li ul li a:hover {
background: #ffebd3;
color: #ed7928;
}
ul.menu li:hover ul {
display:block;
}
ul.menu li:hover ul li {
float:none;
/* remise à 0 des valeurs du parent */
width: inherit;
margin: 0;
}
ul.menu li ul {
position:absolute;
width:auto; /* largeur automatique */
}
Voir le résultat et téléchargement
Compatible avec :
- Firefox 3
- Firefox 3.5
- IE 7
- IE 8
- Chrome
- Safari 3
- Safari 4
Note :
Nous avons du ajouté un div avant chaque lien afin de permettre à IE7 d’interpréter correctement le menu sans bug d’affichage.
Articles relatifs
Date: 9th January 2010 | Auteur: Fabien | Catégorie: Intégration | Tags: menu CSS rubrique selectionne, menu CSS simple, menu horizontal, menu horizontal CSS, menu horizontal css dropdown | 1 commentaires »

Un menu horizontal CSS avec ‘rubrique active’ lors du survol des sous rubriques – http://bit.ly/7RYgXO
This comment was originally posted on Twitter