真的需要* html选择器吗?

时间:2014-05-23 06:41:09

标签: html css

我只是在某个地方读过这段代码。

*html #menu ul{margin: 0px 0px 0px 40px;width:960px;}

我知道*意味着选择器意味着css中的任何元素。 但这需要吗?因为它在没有它的情况下完全相同。或者在特定浏览器中它是某种CSS hacks?

2 个答案:

答案 0 :(得分:6)

这是针对Internet Explorer 6及更低版本的CSS hack。更现代的浏览器应该忽略使用*html应用的任何样式。

将应用样式的浏览器列表

  • IE4-6 /运
  • IE4-5 / Mac的
  • IE7 +,处于向后兼容模式(又名怪癖模式)

忽略样式的浏览器列表

  • IE7 +,处于标准兼容模式时
  • 火狐
  • NS6.0-7.2
  • NS4.x
  • Opera 5+(我不知道版本1到4。)
  • Safari浏览器
  • Konqueror 3
  • iCab 3

来源:* 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