css中的减号或下划线是做什么的吗?

时间:2011-06-29 13:21:17

标签: css

这个问题类似于我提出的问题here。我正在清理一些文件,我在这个css中遇到了这个:


.something
{
  height: 33px;
  -height: 34px; /* does this do anything?? /
}

.something
{
  _width: 150px; / does this do anything?? */
}

编辑:好的,所以_(下划线)是IE的css hack,这很好,我会留下它,但是减号怎么样,它有什么用呢?

此外,我们不再支持IE 7以下的任何内容了,所以如果IE6的任何内容都是黑客攻击我可以把它拿出来。

4 个答案:

答案 0 :(得分:11)

直接来自W3C CSS 2.1 Spec -

  

4.1.2.1特定于供应商的扩展程序

     

在CSS中,标识符可以以“-”(短划线)或“_”(下划线)开头。关键词   以“-”或“_”开头的属性名称保留用于特定于供应商的扩展。

但是,使用下划线为CSS属性添加前缀是well known CSS hack,以便在IE 6中应用该规则。

由于CSS标识符可以以“-”(破折号)开头且有效,因此可用于在开发期间快速注释掉部分CSS。例如,在下面的CSS中,不会为h1设置任何属性,只会为margin设置h2

-h1 { color:blue; margin:2em; }
h2 { -color:pink; margin:2em; } /* property "-color" not valid */

答案 1 :(得分:2)

这意味着CSS属性将在IE 6及更低版本中应用。这是CSS hack

将样式应用于不同IE的更简洁的方法是使用conditional comments

答案 2 :(得分:1)

我不确定减号,但下划线是在IE中忽略规则的黑客< 6。

http://wellstyled.com/css-underscore-hack.html

答案 3 :(得分:1)

这是CSS hack,欺骗某些浏览器使用它们(或不使用它们)。 这个是Underscore Hack

  

互联网版本6及以下版本   资源管理器识别属性   这个前缀(丢弃之后)   字首)。所有其他浏览器都忽略   这样的属性无效。因此,   以...开头的属性   应用下划线或连字符   仅限Internet Explorer 6和   下方。

#elem {   
         width: [W3C Model Width];   
         _width: [BorderBox Model]; 
      }
     

这个hack使用无效的CSS [3]和   有有效的CSS指令   完成类似的结果。因此有些   人们不建议使用它。上   另一方面这个黑客没有   改变选择器的特异性   维护和扩展   CSS文件更容易。

CSS Hacks是一种(不那么优雅)技术,可以在浏览器中实现相同的外观和感觉。