考虑CSS属性缺少单位的场景(px,em,pt,%):
<body>
<div
style= "width:170;
border:1 dotted PaleGreen;
background-color:MistyRose">
The quick brown
</div>
</body>
问题:
注意:在Microsoft-Connect上,他们说:
您报告的问题是设计问题。标准模式下的IE10忽略宽度或高度,没有符合CSS标准的单元。 该单位不是可选的。
答案 0 :(得分:15)
我在HTML中看不到doctype声明,所以我只能假设你的测试页面是以怪癖模式呈现的。
为什么它会回退到px?像素总是首选单位吗? W3C工作草案或建议中是否定义了任何规则?
它只会在怪癖模式下回落到px
(我相信只适用于某些属性)。是的,px
是首选的后备单位。这可以追溯到遗留的HTML width
和height
属性,这些属性将像素长度视为无单位数。
是否有规则要求UA必须回退到首选单位?
不,因此您观察到的行为不一致。但是,在标准模式下,UA需要忽略没有单位的长度值;该单元不是可选的,如您引用的Microsoft Connect中所述。
In CSS2.1,所有非零长度值都必须包含单位。
鉴于以上示例,以下哪项是正确的行为:
- Internet Explorer:在Quirks模式下(IE6,5,4 ..)宽度和边框宽度用于回退到px。从IE7(直到现在,IE10RP)开始,如果缺少单元,它将忽略整个规则。因此,这两条规则都被忽略了。
- Firefox 13:在上面的示例中,宽度回退到px,但忽略了border-width。
- Chrome 19,Opera 12,Safari 5.1.2:宽度和边框宽度都回退到px。
同样,基于您的页面处于怪癖模式的假设,我只能说虽然规范提到了古怪的行为,但这些古怪行为的具体细节并未在规范中定义(对于明显的和不那么明显的原因)。
我猜测Microsoft改变了IE7 +中的怪癖模式行为以反映无单位值的标准行为,因为所有浏览器(IE&lt; 6除外)中存在怪癖模式并被触发使用相同的不正确的doctype或缺少doctype。但是,据我所知,标准模式下的行为没有改变。
答案 1 :(得分:0)
px
是最常用的单位,因此通常浏览器使用其“常识”并使用px
,因为如果未指定单位,它是网页设计中使用最多的单位。 px
并继续前进而不忽略其他样式,但是没有这样的规则,所以当你看到不同的浏览器不同的东西时,他们实际上有自己的逻辑来对抗这些错误。在这种情况下没有人遵守规则。这取决于浏览器的功能。您永远不应该依赖浏览器来纠正您的错误。始终依靠自己以获得更好的跨浏览器兼容性