我只是在某个地方读过这段代码。
*html #menu ul{margin: 0px 0px 0px 40px;width:960px;}
我知道*意味着选择器意味着css中的任何元素。 但这需要吗?因为它在没有它的情况下完全相同。或者在特定浏览器中它是某种CSS hacks?
答案 0 :(得分:6)
这是针对Internet Explorer 6及更低版本的CSS hack。更现代的浏览器应该忽略使用*html
应用的任何样式。
将应用样式的浏览器列表
忽略样式的浏览器列表
来源:* html ("Star HTML") CSS Hack
因此,如果您的文档有效,那么IE7 +应该在standards mode中显示该页面并忽略这些样式。如果页面以“怪癖模式”显示,则样式将应用于IE7 +。
答案 1 :(得分:0)
Star Selector Hack
明星选择器黑客,也被称为明星HTML黑客和Tan黑客,因为它首先由Edwardson Tan详细描述,是最广泛使用的过滤器;它依赖于Internet Explorer 5.5和6中的特殊行为。尽管它经常被标记为hack,但我已将其包含在本节中的过滤器上,因为尽管它利用了浏览器错误,但它使用了有效的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