“边框”使“背景颜色”的效果不同

bac*_*ire 0 html css border margin

这个问题似乎不像其他问题那么重要,但我想了解它 是如何工作的以及为什么会这样工作。

我们这里有一个非常简单的代码笔:

html, body {
  margin: 0;
  padding: 0;
}
.header {
  background-color: #ccc;
  /* border: 3px solid pink; */
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test1</title>
</head>
<body>
  <div class="header">
    <h1>Header</h1>
    <h2>Subheader</h2>
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

当边框被注释时,笔的工作方式如下:

边距未着色

我们可以看到,边距h1h2没有被“背景颜色”属性着色。在这里我想‘好吧,因为它只是div.header包含的内容。

但如果我们删除评论并为其设置边框,div.header它的行为就会突然变得不同。 边距已按边框着色

现在h1h2边距成为了一部分,div.header尽管边框只是发生了变化。你能帮我解释一下这个现象吗?我知道这有一个合乎逻辑的解释。非常感谢。

Que*_*tin 8

边框对背景颜色没有任何(直接)影响,它对边距有影响

如果没有边框,子元素的顶部和底部边距会通过元素的边缘折叠。

添加边框时,这些边距会停止在边框处,将子元素推离边框,并增加边框内元素的大小(填充背景颜色)。

请参阅本文以进一步阅读。