【问题标题】:Why doesn't HTML body background-color obey margin?为什么 HTML 正文背景颜色不服从边距?
【发布时间】:2016-01-08 15:59:43
【问题描述】:

根据 w3,元素的 ma​​rgin 是透明的:

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

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

在 Chrome 中,检查器报告“body”有 8px 的边距:

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

这是怎么回事?

【问题讨论】:

  • HTML default body margin的可能重复
  • @Ranveer 不是重复的
  • @Ranveer 这似乎充其量只是切线相关,根本不是重复的。
  • 哎呀,很抱歉这样标记它,我不知道这不是 w3 约定的一部分。这是很常见的,我认为它是那样的:/

标签: html css margin document-body


【解决方案1】:

CSS specification特例吧。

根元素的背景变成了元素的背景 画布并覆盖整个画布,锚定(对于 '背景位置')在同一点,如果它是 仅为根元素本身绘制。根元素不 再次绘制此背景。

但是,对于 HTML 文档,我们建议作者指定 BODY 元素而不是 HTML 元素的背景。为了 根元素是 HTML“HTML”元素或 XHTML 的文档 “html”元素的计算值为“透明” 'background-color' 和 'none' 对于 'background-image',用户代理必须 而是使用该背景属性的计算值 元素的第一个 HTML“BODY”元素或 XHTML“body”元素的子元素 为画布绘制背景,不得绘制背景 对于那个子元素。这样的背景也必须锚定在 与仅为根部绘制相同的点 元素。

...大概是因为人们太习惯了 &lt;body background="#ff0000"&gt; 从糟糕的过去。

【讨论】:

  • 我认为他们必须添加特殊情况以与旧的 HTML 项目兼容,没有边距,然后看起来就会不同
猜你喜欢
  • 1970-01-01
  • 2017-05-08
  • 2011-07-19
  • 2013-10-24
  • 1970-01-01
  • 2014-02-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多