我没有看到以下区别:
html {
background: #f1f1f1;
}
Run Code Online (Sandbox Code Playgroud)
和
body {
background: #f1f1f1;
}
Run Code Online (Sandbox Code Playgroud)
任何解释?
没有真正的区别(如果你只是在谈论应用的地方background
,否则BoltClock对这个问题的回答更合适).html
是一个元素,就像body
是.
两者都是有效的选择,两者都适用于所有常见的浏览器.
例如,YUI重置,选择background
在html
元素上设置一个而不是body
:http:
//yui.yahooapis.com/3.3.0/build/cssreset/reset.css
这需要您将其设置为background
打开html
,例如,请参阅:无法使用CSS重置更改主体背景颜色
请参阅: http ://dev.w3.org/csswg/css3-background/#special-backgrounds
根元素的背景成为画布的背景,其背景绘画区域延伸到覆盖整个画布,尽管任何图像的大小和位置都相对于根元素,就像它们仅为该元素绘制一样.(换句话说,背景定位区域是根元素确定的.)如果根的"背景颜色"值是"透明",则画布的背景颜色取决于UA.根元素不会再次绘制此背景,即其背景的使用值是透明的.
和:
对于其根元素是HTML HTML元素[HTML401]或XHTML html元素[XHTML11]的文档:如果根元素上的'background-image'的计算值为'none'且其'background-color'为'transparent' ',用户代理必须从该元素的第一个HTML BODY或XHTML body子元素传播背景属性的计算值.BODY元素的背景属性的使用值是它们的初始值,传播的值被视为在根元素上指定它们.建议HTML文档的作者指定BODY元素的画布背景而不是HTML元素.
这篇文章的墙壁在这里展示了什么:
background
只是body
:http://jsfiddle.net/hhtzE/background
在html
和body
:http://jsfiddle.net/hhtzE/1/background
只有html
:http://jsfiddle.net/hhtzE/2/