在我合作的项目中,我发现了很多这样的规则:
* + html {
/.../
}
我知道*
和+
做了什么,但是我不明白这个结构是什么意思?
我也发现了这个:
* html {
/.../
}
我找不到任何适用这些地方的地方。
AFAIK html
每页都是唯一的,那么为什么不简单地使用html
选择器呢?这有点神奇吗?
答案 0 :(得分:14)
这些是针对Internet Explorer的CSS黑客攻击。
此处提供更多信息:http://dimox.net/personal-css-hacks-for-ie6-ie7-ie8/
答案 1 :(得分:12)
根据W3C Selectors definition,“E + F”定义为:
匹配前面有兄弟元素E的任何F元素。
您提到了代码:
* + html
这应该匹配任何其他元素之后的html标记。但是html元素是html页面的第一个元素(根元素)。因此,在html标记之前没有元素(即HTML标记),规则与任何元素都不匹配。
至少,对于任何正确实现标准的浏览器。 “问题”是,IE7没有正确实现它并应用规则。
换句话说,这是针对IE7的CSS黑客攻击。
另一种方法是使用条件评论:
<!--[if lte IE 7]> <html class="ie7"> <![endif]-->
HTH