* HTML Body在css样式表中的含义是什么?

时间:2008-12-18 15:02:51

标签: css syntax

在样式表中我有:

    * HTML BODY
    {
        padding-right: 0px;
        padding-left: 0px;
        padding-bottom: 25px;
        padding-top: 190px;
    }
    * HTML #maincontent
    {
        width: 100%;
        height: 100%;
    }
我知道了。表示类和#表示应用于id,但* HTML是什么意思?

5 个答案:

答案 0 :(得分:11)

*是通用选择器,因此匹配任何元素。 e.g。

P * { }

匹配任何P标签的子元素

* HTML

应该没有任何意义,因为HTML不能是任何东西的孩子(根据定义)。它被使用是因为IE(编辑,至少IE 5 - 6 - 感谢RoBorg!)忽略*因此它可以用来定义IE特定的样式:

HTML {
 // Normal styles
}

* HTML {
 // IE Specific styles
 }

请参阅http://www.peachpit.com/articles/article.aspx?p=358552

答案 1 :(得分:4)

*表示任何元素
HTMLBODY表示<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元素以确保它看起来正确。