为什么HTML正文背景颜色不遵守边距?

Ert*_*ohl 3 html css margin document-body

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

箱型图

我建立了一个非常基本的HTML页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
    <style>
        body {
            background-color: red;
        }
    </style>
</head>
<body></body>
</html> 
Run Code Online (Sandbox Code Playgroud)

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

Chrome检查器图片显示8px的边距

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

图片完全没有裕度

那是怎么回事?

Que*_*tin 5

CSS规范特殊情况下。

根元素的背景成为画布的背景,并覆盖整个画布,将其锚定(用于“背景位置”),与仅针对根元素本身进行绘制时的锚定点相同。根元素不会再次绘制此背景。

但是,对于HTML文档,我们建议作者为BODY元素而不是HTML元素指定背景。对于其根元素是HTML“ HTML”元素或XHTML“ html”元素的文档,其值为“ background-color”为“ transparent”,为“ background-image”为“ none”,则用户代理必须改用在为画布绘制背景时,该元素的第一个HTML“ BODY”元素或XHTML“ body”元素子元素的背景属性的计算值,并且不得为该子元素绘制背景。如果仅为根元素绘制背景,则这些背景也必须锚定在同一点。

……大概是因为人们已经习惯<body background="#ff0000">了糟糕的过去。