明星先前属性在CSS中意味着什么?

时间:2009-11-03 14:08:36

标签: css

我今天看了一个css文件,发现了以下规则集:

div.with-some-class {
    display:block;                   
    margin:0;
    padding:2px 0 0 0;
    *padding:1px 0 0 0;
    font-size:11px;   
    font-weight:normal;
    *line-height:13px;
    color:#3D9AD0;
}

星形在* padding和* line-height中意味着什么?

感谢。

4 个答案:

答案 0 :(得分:97)

这是与“下划线黑客”相同的“明星财产黑客”。它包括IE忽略的属性之前的垃圾(*适用于IE 7,_适用于IE 6)。

答案 1 :(得分:32)

在CSS中?没有;这是一个错误。

由于某些版本的Internet Explorer存在错误,因此无法正确忽略无效的属性名称,因此这是提供特定于这些浏览器的CSS的一种方式。

使用条件注释更清晰,更安全。

答案 2 :(得分:7)

asteriks字符是CSS中的有效通配符。单独使用它意味着将对DOM中的所有元素节点使用以下CSS属性。例如:

*{color:#000;}

上述属性将应用于所有DOM元素,从而破坏了CSS中的自然级联。它只能通过特定的tageting DOM元素覆盖,其中该目标开始一个唯一的标识符引用。例如:

#uniqueValue div strong{color:#f00;}

上面的属性将覆盖通配符,并使id属性值为“uniqueValue”的元素内的div中出现的所有强元素的文本。

使用通用应用的通配符(例如第一个示例)可以是用于编写重置样式表的快速而脏的方法。它很快且很脏,因为通配符后的表示的精细定义可能会创建一个非常臃肿的样式表。如果您打算使用通配符,我建议更具体地使用它,例如:

* strong{color:#f00;}

上面的示例将使所有强元素的文本显示为红色,而不管未使用唯一标识符指定的其他CSS属性。这被认为比使用“!important”声明更安全,因为已知该声明会干扰预期行为的自然功能,并且是维护的噩梦。

示例中的星号位于错误的位置,因为它们似乎发生在属性声明中,代码位于花括号内,这可能会导致错误。

答案 3 :(得分:4)

这是IE7的黑客攻击。

如果你这样写:

.test {
    z-index: 1;
    *z-index: 2;
}
尊重W3C标准<div class="test"></div> HTMLElement的所有导航器上的

都有z-index: 1但是对于IE7,此元素有z-index: 2

这不是标准。

要使用W3C Standard实现相同的目标,请按照以下步骤操作:

  • 添加一些Internet Explorer条件注释(这是一个简单的HTML注释,适用于所有其他导航器,因此,它是一种标准方式)。

    &lt;! - [if IE 7]&gt;&lt; html lang =&#34; fr&#34;类=&#34; IE7&#34;&GT;&LT; ENDIF] - GT;!

    &lt;! - [if gt IE 7]&gt;&lt;! - &gt;&lt; html lang =&#34; fr&#34;&gt;&lt;! - &lt;![endif] - - &GT;

并使用之前的规则:

.test {
    z-index: 1;
}
.ie7 .test {
    z-index: 2;
}