我想根据祖先不存在的另一个类来设置一个类的样式。
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>
不确定为什么不起作用?
我知道我可以做相反的事情。对两个元素都应用样式,然后覆盖该样式,但是我不愿意这样做,因为我将覆盖可能在第三方库中更改的样式。
谢谢。
最佳答案
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/