我正在学习CSS并对*选择器有疑问。我知道它将它的样式应用于文档中的每个元素。
但是,当我为body定义不同的样式(背景颜色)而段落的另一个样式定义时,*选择器中的样式仅应用于主体而不应用于段落。见https://jsfiddle.net/oz8a1rn4/1/
* {
background-color: grey;
}
body {
background-color: blue;
}
p {
background-color: red;
}

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero soluta enim aut! Nihil nam obcaecati, fugiat sint sit libero voluptate eos incidunt odio neque cum, dignissimos aperiam, magnam nisi debitis.</p>
&#13;
答案 0 :(得分:0)
根据我的理解,如果我错了,请纠正我,这是由于css级联的影响而发生的。 见intro to the css cascade.
*(通用)选择器对css特异性没有影响。 身体和p具有相同的特异性值(值1)。 因此,级联中决定选择哪种样式的下一步是源顺序。后来的规则将赢得早先的规则,因此,背景样式将是红色的。
答案 1 :(得分:0)
这里发生的是background-color:grey
样式应用于HTML
元素,如下所示:
html {
background-color: grey;
}
body {
background-color: blue;
}
p {
background-color: red;
}
&#13;
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero soluta enim aut! Nihil nam obcaecati, fugiat sint sit libero voluptate eos incidunt odio neque cum, dignissimos aperiam, magnam nisi debitis.</p>
&#13;
这与身体的蓝色风格重叠,可以用以下代码解释:
* {
background-color: grey;
}
html {
background-color: initial;
}
body {
background-color: blue;
}
p {
background-color: red;
}
&#13;
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero soluta enim aut! Nihil nam obcaecati, fugiat sint sit libero voluptate eos incidunt odio neque cum, dignissimos aperiam, magnam nisi debitis.</p>
&#13;
在第二个代码段中,我们将html
元素的颜色更改重置为initial
值。然后显示body
的蓝色背景颜色,因此证明身体的蓝色仅被html
元素掩盖。
这里还有一个截图(使用你的示例的chrome devtools),证明蓝色已应用于body
元素,但仅被html
元素屏蔽: