为什么身体内的顶级元素的边缘会改变身体的高度?

时间:2015-05-21 19:47:55

标签: html css

我有以下html:

<style>
    body {
        margin: 0;
        height: 100vh;
    }
    div {
        margin: 1px;
    }
</style>


<body>
<div>feck</div>
</body>

div的边距会导致滚动条,甚至div本身也不会靠近页面的高度。没有div的边距,没有滚动条。这是怎么回事?这是一个浏览器错误吗?

3 个答案:

答案 0 :(得分:5)

缩减保证金。因为div是身体中最顶层的元素,div的边缘会随着身体的边缘而折叠。也就是说,身体也有相同的余量。

你可能认为“崩溃”对于这种行为来说不是正确的词,你是对的,但这就是他们所选择的词。遗憾。

有几种解决方案:

  • Sean将div简单地向下移动的解决方案
  • 您自己使用计算身体高度的解决方案
  • 在主体上设置填充,并使用box-sizing:border-box。

答案 1 :(得分:1)

因为div是块元素。它在Dom中定位,因此占用空间。当您向顶部添加边距时,您将向下推动其空间,从而增加其占用的总空间量。

如果你想在不改变整个容器(主体)高度的情况下按下div,你可以给div一个相对的位置,以及1px的顶部。

div {
  position: relative;
  top: 1px;
}

答案 2 :(得分:0)

查看this回答它应该足够清楚。

主要观点是相邻元素的边距(在这种情况下是你的div和body)正在折叠,取两个边距的最大值​​。