CSS规范中"传播到视口"的含义是什么?

eve*_*ill 4 css specifications

CSS规范中有一些章节提到"传播到视口"; 例如:计算高度.

当"溢出"不计算为"可见"但已传播到视口时,此部分也适用于正常流中的块级非替换元素.

什么样的属性可以传播?它是否与子元素从其父元素继承属性的规则相矛盾?

Bol*_*ock 7

随着报价的状态,该overflow属性是能够被传播bodyhtml,从html视口:

UA必须将根元素上的"溢出"属性集应用于视口.当根元素是HTML"HTML"元素或XHTML"html"元素,并且该元素具有HTML"BODY"元素或XHTML"body"元素作为子元素时,用户代理必须改为应用"溢出"属性从第一个这样的子元素到视口,如果根元素上的值是"可见的".用于视口时的"可见"值必须解释为"自动".传播值的元素必须具有"可见"的"溢出"的已使用值.

可以这种方式传播的另一个属性是background:

由于没有元素对应于画布,为了允许画布的样式,CSS传播根元素的背景(或者,在HTML的情况下,传播<body>元素),如下所述.

3.11.1.画布背景和根元素

根元素的背景成为画布的背景,其背景绘画区域扩展到覆盖整个画布.但是,任何图像的大小和位置都相对于根元素,就像它们仅为该元素绘制一样.(换句话说,背景定位区域是根元素确定的.)根元素不会再次绘制此背景,即其背景的使用值是透明的.

3.11.2.画布背景和HTML <body>元素

对于其根元素是HTML HTML元素[HTML401]或XHTML html元素[XHTML11]的文档:如果根元素上的'background-image'的计算值为'none'且其'background-color'为'transparent',用户代理必须从该元素的第一个HTML BODY或XHTML body子元素传播背景属性的计算值.该BODY元素的背景属性的已使用值是它们的初始值,并且传播的值被视为在根元素上指定它们.建议HTML文档的作者指定BODY元素的画布背景而不是HTML元素.

此传播行为是出于历史原因(<body background="..." bgcolor="...">)以及使作者能够设置整个页面背景的样式而设置的,这通常不能仅通过htmlbody元素完成,而无需先删除其默认边距并强制它们填充页面.

作者没有意识到这种行为谁尝试这两个属性适用于bodyhtml惊讶结果,尤其是在比较与其他元素的行为.另一方面,作者也利用这种行为为可追溯到15年前的浏览器错误创建了有趣的解决方法.

此行为与继承不冲突,因为它在相反的方向上工作.继承将属性值从父元素"传播"到子元素; 此行为从子盒到父盒传播属性值(bodyhtml,并html分别对视口).