:not()伪选择器似乎不适用于由后代组合器(空格)连接的子选择。因此,例如,如果我想从某些CSS的应用程序中排除HTML块(例如div#content
)(在这种情况下,我不想更改其字体),则可能要声明:
:not(#content) p {
font-family: Arial;
}
这似乎不起作用。
我看过很多包含以下代码的帖子:
:not(#content) > p {
font-family: Arial;
}
这不符合我的需求,因为我要从CSS应用程序中排除的HTML是一个完整的块,而不仅仅是一个孩子。我尝试使用通配符连接器:
:not(#content) * p {
font-family: Arial;
}
这也不起作用。
对于上下文,我想排除相关CSS的原因是它来自第三方,并且包含一些非常广泛的格式设置规则,这些规则适用于我要插入的HTML部分。但是我没有不想将其应用于我自己的HTML(上述#content部分)。我可以按规则进行操作,并以更高的特异性覆盖每个规则,但这将需要大量工作,并且需要维护很多!使用:not()
选择器,我可以简单地预处理外部CSS,以将:not(#content)
放在每个第三方选择器的前面。如果我只能让它工作的话,这似乎是一个强大的工具,可以使来自两个不同来源的HTML和CSS很好地协同工作。