【发布时间】:2020-06-26 20:44:47
【问题描述】:
在以下示例中,我希望 all p 元素以 green 背景呈现,因为 red 背景应该仅当 .red 类 不是 .green 类的后代时才适用。然而,事实并非如此。
.green p {
background: green;
}
:not(.green) .red > p {
background: red;
}
<section class="green">
<p>Neutrum vero, inquit ille. Et nemo nimium beatus est; Age, inquies, ista parva sunt. Haec para/doca illi..
<p/>
<div class="red">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Hoc enim constituto in philosophia constituta sunt omnia. Num quid tale Democritus..</p>
<p>Zenonis est, inquam, hoc Stoici. Certe, nisi voluptatem tanti aestimaretis. Erat enim Polemonis. Tanta vis admonitionis inest in locis.</p>
<p>Age sane, inquam. Omnis enim est natura diligens sui. Duo Reges: constructio interrete. Quid ergo attinet gloriose loqui.</p>
</div>
<p>Pro consul accusata id, errem nonumy assentior qui et. Quem albucius omittantur id sea, duo cu posse insolens.
<p/>
</section>
为什么在本例中否定选择器没有按预期工作?
【问题讨论】:
-
:not(.green) 将匹配任何内容, 和 也是如此。如果第二个 CSS 规则是“:not(.green) > .red > p”,那么所有
<p>s 都将具有绿色背景。
标签: html css css-selectors