我想根据祖先不存在的另一个类来设置一个类的样式。



div:not(.evil-class) .element {
  background-color: green;
}

<div class="evil-class">
  <div class="element">An element within the evil class</div>
</div>

<div class="element">An element NOT in the evil class</div>





不确定为什么不起作用?

我知道我可以做相反的事情。对两个元素都应用样式,然后覆盖该样式,但是我不愿意这样做,因为我将覆盖可能在第三方库中更改的样式。

谢谢。

html - 基于祖先没有类的CSS选择器-LMLPHP

最佳答案

div:not(.evil-class) .element的意思是“类元素源自不具有邪恶类的div的类元素”

您的元素不是从任何div派生的,因此div:not(.evil-class)与任何祖先都不匹配(在这种情况下,它们仅是<body><html>)。



当前尚无法在CSS中表达“没有一个祖先有特定的类”。

Selectors Level 4建议允许:not()包含复杂的选择器,因此将来您可以执行以下操作:



.element:not(div.evil-class *) {
  background-color: green;
}

<div class="evil-class">
  <div class="element">An element within the evil class</div>
</div>

<div class="element">An element NOT in the evil class</div>





当前对浏览器的支持为almost non-existent,但以上演示在当前版本的Safari中有效。

关于html - 基于祖先没有类的CSS选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54331892/

10-11 12:55