CSS 的一个奇怪之处:<body> 的背景

Avatar of Chris Coyier
Chris Coyier 发布

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

所以你想让你的网站背景变成红色,对吧?你可能会在你的 CSS 中这样写

body {
  background: red;
}

搞定!

Check out this Pen!

你正在处理你的事情,然后突然有一天发生了这种情况

Check out this Pen!

怎么回事?为什么红色被切断了?我明明在 body 上设置了红色的背景颜色?

你确实设置了,但是红色背景填充整个页面只是 CSS 的一个奇怪异常。body 元素实际上并没有像浏览器窗口一样高。它只有其内部内容的高度,就像 div 或其他任何元素一样。

如果 html 元素没有背景,则 body 背景将覆盖整个页面。如果 html 元素有背景,则 body 背景的行为就像任何其他元素一样。

在某个地方,html 元素上设置了 background-color

也许您正在使用 normalize.css 2.1.1,其中包括将 html 元素的背景设置为白色以“防止 Firefox、IE 和 Opera 使用系统颜色方案的背景颜色”。此更改现已撤销,可能是因为它导致了此问题过于普遍。

要“修复”它,只需删除 html 元素上的背景,或将您希望“填充”的所有内容移动到 html 元素上,因为它的行为是一致的。