【发布时间】:2021-05-06 22:57:11
【问题描述】:
Codepen 链接:https://codepen.io/AnirudhMS/pen/oNYXaNo
您好,我一直在尝试学习网格布局,但偶然发现了这个我以前没有注意到的问题。在呈现上述 HTML 时,html 标记似乎添加了额外的顶部填充,尽管我在 CSS 中特别提到了 padding: 0。而且,p 标签的默认上边距溢出到这个奇怪的空间。
最简单的做法可能是删除每个元素的边距和填充并自己定义它们。但由于这只是练习代码,我可以使用除html 和body 之外的所有元素的默认边距和填充。
HTML:
<body>
<p class="note">Note: Check the console log for resources.</p>
<div class="grid_wrapper normal_grid">
<p>This is a p tag which is a block element.</p>
<span>This is a span which is an inline element.</span>
<span>And this is another span which is an inline element.</span>
</div>
</body>
相关的 CSS:
html, body {
box-sizing: border-box;
height: 100%;
margin: 0;
padding: 0;
}
这是html 标签覆盖的屏幕部分:
这是body标签覆盖的屏幕部分:
从上面两张图可以看出,在 html 和 body 标签之间肯定有某种填充/边距。我认为这是 html 标记的填充,因为这似乎是一个很好的假设。
可以看出,p标签的上边距与html和body的间隙重叠。
谁能解释为什么会这样?
提前致谢。
编辑:我认为这可能是上下边距折叠的问题,并尝试使用 overflow: auto 创建块格式上下文,它有效,但我仍然无法解释它为什么有效。
【问题讨论】:
-
@Paulie_D 更新了问题以包含可重现的代码。