类不应该优先于 * 选择器


<head>
<link href="scribble.css" rel="stylesheet" type="text/css"/>
</head>

<body>
<a> text </a>
<p class="para"> 
<ul>text</ul>
<a>text1 </a>
</p>
</body>

我的css是这样的:

*{background-color:#ccc;}
.para{background-color:red;}

由于某些原因,只有通用选择器被应用,所有背景都是灰色的。为什么?类不应该优先于通用选择器吗?

考虑一下它在做什么

<p class="para"> 
<ul>text</ul>
<a>text1</a>
</p>

只有.para具有red的背景色,所以只有特定元素将接收该属性。然而,通用选择器显式地告诉所有其他项目具有#ccc的背景色。由于ul/a元素不使用该类,这意味着这些元素将遵循通用选择器background-color:#ccc;。CSS会假设你的意思是:

ul, a {background-color:#ccc;}

如果你要添加任何文本到.para,然而,它将具有red的背景色,例如

* {
background-color: #ccc;
}
.para {
background-color: red;
}
<p class="para"> 
Hello
<ul>text</ul>
<a>text1</a>
</p>

同样让这些元素使用.para类将使它们成为红色。

* {
background-color: #ccc;
}
.para {
background-color: red;
}
<p class="para"> 
<ul class="para">text</ul>
<a class="para">text1</a>
</p>

最新更新