我今天看了一个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中意味着什么?
感谢。
答案 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;
}