Explications
- Bordures et arrières plans des éléments servent à les visualiser et les positionner (bordure, margin et padding prennent de la largeur dont il faut tenir compte).
- Les li de premier niveau flottent à gauche et ont une position relative pour servir de référence au positionnement des éléments de 2ème niveau
- Lorsque les li de premier niveau ne sont pas survolés, les listes de 2ème niveau ne s'affichent pas
- Annuler le flottement des li de 2ème niveau
- Lorsque un li de premier niveau est survolé, il prend :
- une position absolute permettant de le positionner par des décalages
- un affichage de type block
- les liens de la liste de 2ème niveau prennent aussi un affichage de type block
- et une position absolute permettant de modifier au besoin leur position
- #menuHD
- #menuHD li
- #menuHD li ul
- #menuHD li ul li
- #menuHD li:hover ul
- #menuHD li:hover ul li
- #menuHD li:hover ul li a
- #menuHD li:hover ul li a:hover
- Le point de référence pour les positions absolute est le coin haut gauche du conteneur parent placé en position relative.
- Pour que le menu fonctionne il ne doit pas y avoir d'espace entre les li de premier niveau et le menu de 2ème niveau : hauteur25 px + padding-top2px + (bordures 1px x 2) = 29 px
- L'avantage avec l'interface graphique c'est qu'il est facile de trouver les positions exactes sans trop de calculs.
- Décoration : pour le menu de premier niveau la bordure est appliquée à li alors que pour le menu de 2ème niveau toutes les décorations sont appliquées au lien a et a:hover.
#menuHD | #menuHD li | #menuHD li ul | #menuHD li ul li | #menuHD li:hover ul | #menuHD li:hover ul li | #menuHD li:hover ul li a | #menuHD li:hover ul li a:hover |
---|---|---|---|---|---|---|---|
color: #663300; height: 112px; padding-left: 200px; background-color: #e8c8bd; |
border-style: dotted; border-width: 1px; float: left; width: 150px; position: relative; padding-top: 2px; height: 25px; padding-left: 8px; margin-right: 10px; |
display: none; | float: none; |
border-style: none; position: absolute; display: block; margin-left: 0; left: -2px; top: 29px; |
border-style: none; |
border-style: dotted; border-width: 1px; color: #dda49d; background-color: #eed5ec; display: block; position: absolute; height: 26px; width: 146px; padding-left: 12px; top: -1px; left: 1px; |
border-right-style: dotted; border-left-style: dotted; border-right-width: 1px; border-left-width: 1px; background-color: #e8d9cf; |