13

在我合作的一个项目中,我发现了很多这样的规则:

* + html {
    /.../
}

我知道做什么*+但我不明白这个结构有什么意义?

我也发现了这个:

* html {
    /.../
}

我找不到任何应用这些的地方。

AFAIKhtml每页都是唯一的,那么为什么不简单地使用html选择器呢?这是某种魔法吗?

4

2 回答 2

14

这些是 Internet Explorer 的 CSS hack。

更多信息在这里:http ://dimox.net/personal-css-hacks-for-ie6-ie7-ie8/

于 2013-06-27T08:12:23.500 回答
12

根据W3C Selectors 定义,“E + F”定义为:

匹配任何紧跟在同级元素 E 之前的 F 元素。

你提到了代码:

* + html

这应该与任何其他元素之后的 html 标记匹配。但是 html 元素是 html 页面的第一个元素(根元素)。因此,在 html-tag 之前没有元素(即 HTML-tag),规则不匹配任何元素。

至少,对于任何正确实现标准的浏览器。“问题”是,IE7 没有正确实现它并应用规则。

换句话说,这是针对 IE7 的 CSS hack。

另一种方法是使用条件注释:

<!--[if lte IE 7]> <html class="ie7"> <![endif]-->  

高温高压

于 2013-06-27T08:22:36.900 回答