使用CSS:not()选择器取消选择HTML的一部分

时间:2019-06-03 20:52:21

标签: html css css-selectors

: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很好地协同工作。

0 个答案:

没有答案