D'après Tuto-fr.com : menu déroulant en CSS
A visionner avec Firefox, ne fonctionne pas sous IE

Faire la liste à puces

liste à puces                        étape 1

Pour voir fonctionner ce menu, mettre des liens inactifs provisoires # aux li tant que les pages ne sont pas créées.

CSS : première étape

#menu ul {
border-style: solid; border-width: 1px; margin:0;
padding 0; width:100px;
}
#menu ul li {
border-bottom-style: solid; border-bottom-width:1px; position: relative;
list-style-type: none;
}
#menu ul ul {
position: absolute; top:0; left:100px;
display: none;
}

CSS et html : deuxième étape

      <div id="menu">
        <ul class="niveau1">
          <li><a href="#">menu1</a></li>
          <li class="racinesousmenu">menu2</li>
          <li>
            <ul class="niveau2">
              <li><a href="#">ssmenu2_1</a></li>
              <li><a href="#">ssmenu2_2</a></li>
            </ul>
          </li>
          <li><a href="#">menu3</a></li>
          <li class="racinesousmenu">menu4</li>
          <li>
            <ul class="niveau2">
              <li class="racinesousmenu">ssmenu4_1</li>
              <li>
                <ul class="niveau3">
                  <li><a href="#">sssmenu4_1.1</a></li>
                  <li><a href="#">sssmenu4_1.2</a></li>
                  <li><a href="#">sssmenu4_1.3</a></li>
                </ul>
              </li>
              <li><a href="#">ssmenu4_2</a></li>
            </ul>
          </li>
          <li><a href="#">menu5</a></li>
        </ul>
      </div>
Pour rendre le menu déroulant évolutif nous allons nommer, en leur appliquant une class, les différents ul, en fonction de leur niveau. Pour cela il est inutile de définir ces class dans cascade, il suffit de travailler dans le code avec l'éditeur Notepad++.
Nous avons :
Nous allons aussi  nommer et styler les li qui sont racine de sous menus (fond jaune pour bien les distinguer) en leur appliquant la class racinesousmenu      
   .racinesousmenu { background-color: #ffffcc; }
Il y en a 3 en tout. Voir le code html ci-contre :

CSS : troisième étape

Nous cachons les sous menus en rajoutant dans la définition de style de ul ul,  la propriété display:none
#menu ul ul {
position:absolute;
top:0;
left:100px;
display:none;
}
ul de niveau 3 déroulé
Lors du survol avec la souris, les sous menus apparaissent grâce à display:block
#menu ul.niveau1 li.racinesousmenu:hover ul.niveau2 {
display: block;
}
#menu ul.niveau2 li.racinesousmenu:hover ul.niveau3 {
display: block;
}

CSS : quatrième étaperésultat final


.racinesousmenu {
background-color: #ffffcc;
background-image: url(fleche.png);
background-repeat: no-repeat;
background-position: right top;
}
#menu li:hover {
background-color: #eceff4;
}
#menu li.racinesousmenu:hover {
background-color: #ffcc66;
}
a {
text-decoration: none;
color: black;
}
#menu li a {
display: block;
padding-left: 2px;
}






Quand nous sommes sûrs du bon fonctionnement du menu aux 3 niveaux, nous pouvons l'enjoliver avec des arrières plans, et des flèches pour indiquer les cases à dérouler.
Haut de page