为什么HTML正文背景颜色不服从边距?

时间:2016-01-08 15:59:43

标签: html css margin document-body

根据w3,元素的边距是透明的:

Box-Model Diagram

我已经构建了一个非常基本的HTML页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
    <style>
        body {
            background-color: red;
        }
    </style>
</head>
<body></body>
</html> 

在Chrome中,检查员报告“正文”的边距为8px:

Picture of Chrome Inspector showing 8px margin

但是在页面上,边距充满了背景色! (请注意,我的书签栏和红色背景之间没有空格 - 我保证我没有滚动。

Picture showing no margin at all

这是怎么回事?

1 个答案:

答案 0 :(得分:5)

CSS specification特殊情况。

  

根元素的背景成为背景   帆布和覆盖整个画布,锚定(为   '背景位置')与它的相同点   仅为根元素本身绘制。根元素没有   再次画这个背景。

     

但是,对于HTML文档,我们建议作者指定   BODY元素的背景而不是HTML元素。对于   其根元素是HTML“HTML”元素或XHTML的文档   “html”元素,计算出'transparent'的值   'background-color'和'none'代表'background-image',用户代理必须   而是使用背景属性的计算值   element的第一个HTML“BODY”元素或XHTML“body”元素的子元素   绘画画布背景,不得画背景   对于那个子元素。这样的背景也必须固定在   如果它们仅为根绘制,它们将是相同的点   元件。

...大概是因为人们在过去的糟糕时期过于习惯<body background="#ff0000">