CSS,Internet Explorer和神奇的!ie

17

今晚我偶然发现了这样一段奇怪的CSS代码...

display: inline !ie;

我已经创建并查看了很多CSS,但我从未见过这个或它的神奇力量。

你可以在任何规则的末尾添加“!ie”,它只会被M $ Internet Explorer 6&7应用

有人能解释一下这是什么鬼?


2
即使现在它能够工作,我建议你避免使用它。如果另一个浏览器展示了这个“特性”,但不需要你为IE设置的hack,那么可能会导致一些奇怪的样式。最好使用条件注释来针对IE。 - akamike
我想知道除了微软之外,谁会在自己的浏览器中实现!ie作为有效的CSS规则。 - easwee
2个回答

9

Internet Explorer 7及以下版本在使用!important声明方面有几个怪异之处,该声明应该比普通声明具有更高的优先级[3]。 IE7及早期版本接受任何字符串代替important,正常处理该值,而其他浏览器将忽略它。

摘自CSS过滤器-Wikipedia中的!Important Quirks部分


4
我猜测,Internet Explorer试图从明显的错误中恢复过来。以下内容也可以起到同样的作用:
display: inline !pudding;

规范说明如果指定了无效值或规则出现错误,则应将其忽略。大多数浏览器似乎遵循此规则,但IE会针对此特定情况进行恢复。
在某些情况下,用户代理必须忽略非法样式表的一部分。本规范将“忽略”定义为用户代理解析非法部分(以查找其开头和结尾),但在其他方面表现得好像它不存在一样。

http://www.w3.org/TR/CSS21/syndata.html#parsing-errors


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接