Hello!
Voici une page simple:
HTML:
<BODY>
<DIV class="header">
<P>En-tête
</DIV>
<DIV class="menu">
<P>Barre de menu
<UL>
<LI>Menu 1</LI>
<LI>Menu 2</LI>
<LI>Menu 3</LI>
<LI>Menu 4</LI>
<LI>Menu 5</LI>
</UL>
</DIV>
<DIV class="footer">
<P>Pied de page
</DIV>
<P>Paragraphe
</BODY> |
CSS:
body {
background: orange;
font-family: sans-serif;
font-size: small;
}
li {
background: blue;
}
.header {
background: yellow;
height: 100px;
}
.menu {
background: green;
width: 150px;
}
.footer {
background: red;
} |
Voici ce que j'ai lu dans les recommendations du W3C au sujet des CSS:
Citation :
4.1.1 Mise en forme verticale
Pour les éléments de type bloc non-flottants, la largeur de la marge correspond à une distance minimum entre le contenu et le bord des boîtes qui l'entourent. Si aucune bordure, ni espacement, ni contenu ne séparent deux (ou plus) marges verticales adjacentes, alors elles fusionnent et la résultante est la plus grande de ces valeurs de marge. Dans la plupart des cas, cette fusion des marges verticales donne un meilleur aspect visuel, plus proche des attentes de l'auteur.
|
A priori, "header" devrait partager sa marge inférieure avec "menu" puisque je n'ai spécifié aucune bordure, ni marge, ni padding. Idem pour "menu" et "footer". Pourtant, même en forcant la valeur de "margin", de "padding" et de "border" à zéro, j'ai toujours un décalage entre les deux. C'est à s'arracher les cheveux.
J'aimerais comprendre pourquoi ce décalage apparaît, savoir ce qu'il représente (est-ce une marge?), et comment le supprimer le plus simplement possible.
Voilà ce que ça donne:
D'avance merci.
---------------
last.fm