我刚在某个地方看到了这段代码。
*html #menu ul{margin: 0px 0px 0px 40px;width:960px;}
我知道在CSS中,*表示选择器匹配任何元素,但是这里是否需要呢?因为即使没有它,它的作用完全相同。或者这是特定浏览器下的CSS hack技巧吗?
*html
应用的任何样式。星号选择器黑客
星号选择器黑客,也称为星号HTML黑客和Tan黑客,因为它最初是由Edwardson Tan详细描述的,是最广泛使用的过滤器;它依赖于Internet Explorer 5.5和6中的一种奇特行为。尽管它经常被标记为黑客,但我已经将其包含在此过滤器部分中,因为尽管它利用了浏览器漏洞,但它使用了有效的CSS选择器。然而,该选择器永远不应匹配任何元素;除了Internet Explorer 5.5和6之外的所有浏览器都理解这一事实并忽略该规则。
技术简单地应用了一个后代选择器,该选择器利用了通用选择器。通用选择器当然是有效的CSS,因此不要混淆并开始认为使用通用选择器是坏消息。该技术的最常见形式(以及其名称的起源)是使用* html选择器组成规则。这构成有效的CSS,但不应匹配任何元素。选择器应将规则应用于任何其他元素的后代html元素,并且由于html是根元素,因此它永远不是任何其他元素的后代。
然而,虽然大多数其他浏览器会忽略它,但Internet Explorer 5.5和6将解释此选择器,就像没有通用选择器的规则一样:
html {
⋮ declarations
}
因此,星号选择器hack是一种安全的方式,可以在不影响其他浏览器的情况下应用CSS规则到Internet Explorer 5.5和6。
您可以像这样使用它:
.test {
position: fixed;
}
* html .test{
position: absolute;
}
只有Internet Explorer 6及更早版本才会应用后一条规则;其他浏览器将忽略它。
来源:http://reference.sitepoint.com/css/workaroundsfilters#workaroundsfilters__sect_starhtmlselector
*
选择器是一个“万能”的时候,实际上它只是 IE6/7 的一种解决方法呢? - Bojangles*html
和* html
是不同的。你回答OP的问题好像他们找到了后者。 - Bojangles