考虑 CSS 属性缺少单位(px、em、pt、%)的场景:
<body>
<div
style= "width:170;
border:1 dotted PaleGreen;
background-color:MistyRose">
The quick brown
</div>
</body>
问题:
- 为什么它会回退到 px?像素总是首选单位吗? W3C 工作草案或建议中是否定义了任何规则?
- 是否存在强制 UA 回退到首选单位的规则?
- Given the above example, which of the following is a correct behavior:
- Internet Explorer:在 Quirks 模式 (IE6,5,4..) 中,宽度和边框宽度用于回退到 px。从 IE7(到目前为止,IE10RP)开始,如果缺少单位,它会忽略整个规则。因此这两条规则都被忽略了。
- Firefox 13:在上面的示例中,宽度回退到 px,但忽略了 border-width。
- Chrome 19、Opera 12、Safari 5.1.2:宽度和边框宽度均回退为 px。
注意:在 Microsoft-Connect 上,他们说:
您报告的问题是设计使然。标准模式下的 IE10 会忽略没有符合 CSS 标准的单位的宽度或高度。该单位不是可选的。
我在 HTML 中没有看到 doctype 声明,因此我只能假设您的测试页面正在以怪异模式呈现。
-
为什么它会回退到 px?像素总是首选单位吗? W3C 工作草案或建议中是否定义了任何规则?
只会回落到px
在怪癖模式下(我相信仅适用于某些属性)。是的,px
是首选的后备单元。这让人回想起传统的 HTMLwidth
and height
接受像素长度作为无单位数字的属性。
-
是否存在强制 UA 回退到首选单位的规则?
不,因此您观察到的行为不一致。但在标准模式下,UA 需要忽略没有单位的长度值;正如您引用的 Microsoft Connect 中所述,该单元不是可选的。
在CSS2.1中 http://www.w3.org/TR/CSS21/syndata.html#length-units,所有非零长度值必须有单位。
-
鉴于上面的示例,以下哪项是正确的行为:
- Internet Explorer:在 Quirks 模式 (IE6,5,4..) 中,宽度和边框宽度用于回退到 px。从 IE7(到目前为止,IE10RP)开始,如果缺少单位,它会忽略整个规则。因此这两条规则都被忽略了。
- Firefox 13:在上面的示例中,宽度回退到 px,但忽略了 border-width。
- Chrome 19、Opera 12、Safari 5.1.2:宽度和边框宽度均回退为 px。
再次,基于您的页面处于怪异模式的假设,我只能说,虽然规范提到了怪异行为,但规范中没有定义这种怪异行为的具体细节(对于明显的和不明显的)如此明显的原因)。
我猜测微软改变了 IE7+ 中的怪异模式行为以反映无单位值的标准行为,因为怪异模式存在于所有浏览器(IE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)