这的确令人费解,但它是在CSS2.1规范规定,第14.2背景:如果计算出的值
background-color是
transparent和的计算值
background-image是
none对
html元素(如东西都默认情况下),浏览器必须改用的计算值
body元素的背景属性,并且不得渲染背景
body(即使其透明)。也就是说,如果缺少自己的背景,
body背景就会神奇地变成
html背景
html-这只会影响背景属性,而不会影响
body元素的真实高度。
我还没有看到这种奇怪规则的任何原理,该规则规定了一种“反向继承”。但是它在CSS 2.1中明确指定并由浏览器应用。
如其他答案所述,您可以通过将背景设置为
html(使
body背景仅实际应用
body)或在其中使用wrapper元素
body并在其上设置高度(因为应用了特殊规则)来使内容具有特定高度的背景到
body)。
感谢当我在WHATWG邮件列表中询问CSS规范时,Anne van Kesteren指出了CSS规范。(我以为我很了解CSS 2.1,但实际上不知道。)



