Z ciekawości, biorąc pod uwagę poniższy przykład, dlaczego margines na div #container
powoduje, że w przeglądarce pojawia się pionowy pasek przewijania? Wysokość pojemnika jest znacznie mniejsza niż wysokość body ustawiona na 100%.
Ustawiłem marginesy i marginesy na 0 dla wszystkich elementów oprócz #container. Zauważcie, że celowo pominąłem bezwzględne pozycjonowanie na div #container
. W takim przypadku, jak przeglądarka oblicza wysokość body i jak wpływa na to margines?
<!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>
1 odpowiedź
Jeśli pomalujesz tła html i body (nadając każdemu swój własny kolor), szybko zauważysz, że body jest przesuwane w dół wraz z #container, a sam #container w ogóle nie jest przesunięty względem górnej części body. Jest to efekt uboczny zawinięcia marginesu.
To zachowanie powoduje wyświetlenie paska przewijania, ponieważ zadeklarowałeś, że body ma 100% wysokości HTML. Należy pamiętać, że faktyczna wysokość bo body ozostaje nienaruszona, ponieważ marginesy nigdy nie są uwzględniane w obliczeniach wysokości.