设置全局CSS属性时,html,body和*之间有什么区别

时间:2014-01-17 00:59:32

标签: html css css3

我可以在以下某个块中设置全局CSS属性:

* {

}

html {

}

body {

}

他们之间有什么区别?每个设置如何影响页面样式?

当我设置font-familycolor时,我必须在哪里放置它?

1 个答案:

答案 0 :(得分:13)

*将选择所有元素。

html将选择<html>元素。

body将选择<body>元素。

有时他们做同样事情的原因是继承,这意味着你应用样式的元素的子元素也将获得相同的样式。 (请参阅spec的“继承?”列,其中属性执行此操作。)

如果适用继承,则应选择bodyhtml,因为*通常较慢,因此在现代浏览器上不会产生太大影响。

另外,不要过度使用其中任何一种。它们非常广泛,您不希望为特定元素撤消样式。 h1.header {color: red;}优于

* {
    color: red;
}
h2, h3, p, ul, ol {
    color: black;
}

* {
    color: red;
}
:not(h1) {
    color: black;
}
h1.other-header {
    color: black;
}