子代列表开头的CSS子代锚点元素破坏样式



我试图仅为pa元素应用样式,这两个元素是任何class为"的元素的后代;某类";。每https://developer.mozilla.org/en-US/docs/Web/CSS/Selector_list,下面的代码应该提供预期的行为。但是,样式意外地应用于所有p元素。有趣的是,如果我重新排序子体列表,即.some-class p,a,我能够获得正确的行为。有人能解释一下为什么会这样吗?

仅供参考-我已经在Firefox和Chrome中运行了代码,结果相同。

<html>
<head>
<style>
.some-class a,p {
color: red;
}
</style>
</head>
<body>
<div>
<p>should not be red</p>
</div>
<div class="some-class">
<p>should be red</p>
</div>
</body>
</html>

选择类名为some-class的元素中的所有a-元素,然后选择所有p-元素。您必须指定还希望选择类名为some-class的元素内部的所有p元素,如下所示:

.some-class a,
.some-class p {
color: red;
}

还有一种更现代的方法:

.some-class :is(a,p) {
color: red;
}

最新更新