星空属性在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; } 

星号在填充和*行高中意味着什么?

谢谢。

这就像“下划线黑客”一样,是“明星财产黑客”。 它包括IE浏览器忽略的属性之前的垃圾(*工作到IE 7,直到IE 6)。

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

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

使用有条件的评论是更清晰和更安全的。

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

 *{color:#000;} 

上述属性将应用于所有DOM元素,从而击败CSS中的自然级联。 只能通过特定的DOM元素来重写,该元素的定位将开始一个唯一的标识符引用。 例:

 #uniqueValue div strong{color:#f00;} 

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

使用普遍适用的通配符(如第一个示例)可能是编写重置样式表的一种快速而脏的方法。 它很快而且很脏,因为在通配符之后呈现的粒度定义可能会创build一个非常臃肿的样式表。 如果你打算使用通配符,我会build议更具体地使用它,比如:

 * strong{color:#f00;} 

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

在你的例子中的星号是在错误的地方,因为它们似乎发生在属性声明内部,大括号内的代码,这可能会导致错误。

这是IE7的破解。

如果你写这个:

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

在所有符合W3C标准的导航器上,HTMLElement有一个z-index: 1但对于IE7,这个元素有一个z-index: 2

这不是标准。

要达到与W3C标准相同的效果,请遵循以下步骤:

  • 添加一些Internet Explorer的条件注释(这是一个简单的HTML注释,所有其他浏览器,所以这是一个标准的方式)。

    <! – [if IE 7]> <html lang =“fr”class =“ie7”> <![endif] – >

    <! – [if gt IE 7]> <! – > <html lang =“fr”> <! – <![endif] – >

并使用像这样的以前的规则:

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