在样式表中我有:
* HTML BODY
{
padding-right: 0px;
padding-left: 0px;
padding-bottom: 25px;
padding-top: 190px;
}
* HTML #maincontent
{
width: 100%;
height: 100%;
}
我知道了。表示类和#表示应用于id,但* HTML是什么意思?
答案 0 :(得分:11)
*是通用选择器,因此匹配任何元素。 e.g。
P * { }
匹配任何P标签的子元素
* HTML
应该没有任何意义,因为HTML不能是任何东西的孩子(根据定义)。它被使用是因为IE(编辑,至少IE 5 - 6 - 感谢RoBorg!)忽略*因此它可以用来定义IE特定的样式:
HTML {
// Normal styles
}
* HTML {
// IE Specific styles
}
答案 1 :(得分:4)
*
表示任何元素
HTML
和BODY
表示<html>
和<body>
元素。
因此* HTML BODY
表示HTML元素内的任何元素内的body元素。
这实际上是一个浏览器黑客:有些浏览器会匹配它,有些浏览器不匹配(Internet Explorer匹配,Firefox不匹配,不确定其他浏览器)。
答案 2 :(得分:1)
人们在样式表规则中添加*,html或body(或者在这种情况下,全部3)等选择器的一个原因是增加选择器特异性计算。当然,html永远不会是其他任何东西的孩子,所以* html是一个特定的IE黑客,但是有一个原因,人们会在声明中添加html或body:
例如:
html p { font-color: red }
p { font-color: blue }
html标记中的段落(如,所有这些段落)更具体而不仅仅是段落,因此无论样式表中这些声明的顺序如何,字体颜色都将为红色。如果第三条规则带有html body p则优先。
它比使用!更重要,但是如果可能的话,最好关掉更多的语义标签。
答案 3 :(得分:0)
嗯,这是一个非常糟糕的CSS选择器语句,就是这样。让我为你分解一下:
[all elements] (sub-selection) [HTML] [BODY]
也就是说,它遍历所有元素以查找HTML
元素,然后查找BODY
内部元素。问题在于,始终只有 1 主体元素,#maincontent
应该是BODY
或者在body {
内。周期。
正如乔尔所说,这可能是为了提醒设计师,但我并不那么确定。对我来说,这段代码是一个明确的“代码味道”!
您应该将CSS选择器重写为:
#maincontent {
和
{{1}}
分别
答案 4 :(得分:-2)
对于第二个片段,因为*匹配任何元素项是多余的。它看起来像是在那里提醒作者风格的意图 - 如果他改变第二个片段中的内容,请确保他检查#maincontent元素以确保它看起来正确。