有没有办法覆盖 CSS 规则以从根本上否定它?

Is there a way to override a CSS rule to essentially negate it?

如果我有一个要覆盖的 classic.css 文件(在这种情况下,它来自用于 Python 的 Sphinx 文档: https://docs.python.org/2.7/_static/classic.css )并且本质上是 "undo"一条规则,有没有办法做到这一点?

在这种情况下有这些规则:

div.sphinxsidebar h3 {
    font-family: 'Trebuchet MS', sans-serif;
    color: #ffffff;
    font-size: 1.4em;
    font-weight: normal;
    margin: 0;
    padding: 0;
}

div.sphinxsidebar h4 {
    font-family: 'Trebuchet MS', sans-serif;
    color: #ffffff;
    font-size: 1.3em;
    font-weight: normal;
    margin: 5px 0 0 0;
    padding: 0;
}

我想做的是

div.sphinxsidebar h3,
div.sphinxsidebar h4
{
   font-family: [revert-to-auto];
   color: [revert-to-auto];
}

所以我可以在 body 中指定字体系列和颜色,并且无需使用 !important.

即可应用到所有地方

澄清一下:根据 Sphinx 文档,我的 custom.css@import(classic.css); 开头,而不是 [=19= 中通常使用的两个 <link rel="stylesheet" type="text/css"> 元素] 部分。

您想在 <head> 标签中包含两个 CSS 文件。关键是您希望 custom.css 文件位于 classic.css 文件下方,如下所示:

<head>
    <link rel="stylesheet" type="text/css" href="classic.css">    
    <link rel="stylesheet" type="text/css" href="custom.css">
</head>

这样做是尊重 CSS 的 'cascading' 部分。它看到 classic.css 中的第一条规则,但是当它到达 custom.css 时,它会覆盖之前看到的规则。

是的,您可以使用 属性

中的 initial to revert to the initial value
div.sphinxsidebar h3,
div.sphinxsidebar h4
{
   font-family: initial;
   color: initial;
}

或者Cascade Level 4引入revert,将级联回滚到用户级别

div.sphinxsidebar h3,
div.sphinxsidebar h4
{
   font-family: revert;
   color: revert;
}

CSS关键字inherit可用于任何属性,其作用是将属性设置为父元素的值。