TechWeb
Accueil Codage HTML CSS DESIGN XML LaboCSS

Construire un menu

menu unique

Soit le code suivant :

<div id="menu">
<p>menu</p>
<p>item1</p>
<p>item2</p>
<p>item3</p>
<p>item4</p>
<p>item5</p>
<p>item6</p>
</div>

1) Mise en forme

En appliquant les propriétés CSS obtenir les résultats successifs suivants :

fond
bordure
dimensions
ligne de
séparation
réduction
des marges
texte grisé titre
gras noir
menu1 menu2 menu3 menu4 menu5

2) Effets de survol

Forme repliée Survol
hauteur
réduite
débordement
masqué
changer
le curseur
déploiement
au survol
titre au
survol
items au
survol
menu6 menu7 menu8 menu9 menu10 menu11

3) Transition

Appliquer des transition pour :

4) Empêcher le déplacement du contenu situé sous le menu

En utilisant la position "absolute", le menu est extrait du flux. En conséquence le menu non déployé se supperpose au contenu qui le suit.

menu20

On peut certes ajouter une marge au haut de l'élément suivant pour résoudre le problème. Cependant lors d'une modification des contenus, il sera à chaque fois nécessaire de veiller à la préservation de cette marge

Une meilleure solution consiste à englober le menu dans un élément en position relative. Un élément en position absolue se positionne par rapport à son plus proche parent en position relative ou absolue. Comme l'élément en position relative reste dans le flux la place ocupée par le menu non dépoloyé est préservée à condition de fixer une hauteur à l'élément en position relaive au moins égale à la hauteur du menu non déployé.

(ci-dessous en rouge l'élément en position relative)

menu21

En effet l'élément en position relative a par défaut une hauteur nulle puisqu'il ne contient que le menu qui est en position absolue, donc hors du flux.

menu22

5) Donner un effet de transparence au menu

En utilisant la propriété opacity, la transparence s'applique autant au fond qu'au texte qui peut devenir illisible

menu23

Pour ne pas appliquer de transparence au texte il suffit d'utiliser une couleur rgba pour le la couleur de fond (techweb)

menu24

Menus multiples

Soit le code suivant :

<div class="menus">
<div class="menu">
<p>menu1</p>
<p>item1</p>
<p>item2</p>
<p>item3</p>
<p>item4</p>
<p>item5</p>
<p>item6</p>
</div>
<div class="menu">
<p>menu2</p>
<p>item1</p>
<p>item2</p>
<p>item3</p>
</div>
<div class="menu">
<p>menu3</p>
<p>item1</p>
<p>item2</p>
<p>item3</p>
<p>item4</p>
<p>item5</p>
</div>
<div class="menu">
<p>menu4</p>
<p>item1</p>
<p>item2</p>
<p>item3</p>
<p>item4</p>
</div>
</div>

Généraliser le résultat précédent de sorte à obtenir un menu horizontal

Déploiement en accordéeon

Concevoir le déploiement en jouant sur la hauteur des items :

menu35

Valid XHTML 1.0 Strict Valid CSS!

Copyright Gabriel Braun 2007