Par curiosité, si l'on considère l'exemple ci-dessous, pourquoi le fait d'avoir la marge sur le div #container provoque-t-il l'apparition d'une barre de défilement verticale dans le navigateur ? Le conteneur est beaucoup plus petit en hauteur que la hauteur du corps, qui est fixée à 100 %.
J'ai fixé le padding et les marges à 0 pour tous les éléments sauf le #container. Notez que j'ai délibérément omis le positionnement absolu sur le div #container. Dans ce cas, comment le navigateur calcule-t-il la hauteur du corps et comment la marge l'affecte-t-elle ?
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
* { padding:0; margin:0;}
html, body { height:100%; }
#container
{
padding:10px;
margin:50px;
border:1px solid black;
width: 200px;
height: 100px;
}
</style>
</head>
<body>
<div id='container'>
</div>
</body>
</html>
Exemple également sur JSFiddle