我可以重置一个CSS属性,而不是覆盖它?
我正在处理的网页已经有一些基本的样式表,其中一个包含这个规则:
address:not(:last-child), fieldset:not(:last-child), li:not(:last-child), ol:not(:last-child), p:not(:last-child), table:not(:last-child), ul:not(:last-child) {margin-bottom: 12px}
这是在我的<p class="mainCopy">
标签上应用12px的margin-bottom,我不感兴趣,我希望能用.mainCopy {margin-bottom: 0}
覆盖它,但显然基本规则比我的规则更具体。 这迫使我做一个比我想要或需要更具体的规则,比如p.mainCopy
。 此外,我有时需要<li class="mainCopy">
,这将迫使我添加第二条规则,以迎合<li>
。
有什么办法可以简单地重置这个属性,或者还原有问题的CSS声明?
回答你的问题(而不是解决你的问题)…
我可以重置一个CSS属性,而不是覆盖它?
重置为什么?
CSS中的C代表级联,并且总是有几层样式,它们之间有精确的定义,但并不总是立即清晰的规则。 除了网站作者在不同地方(外部CSS文件, <style>
blocks, style=""
attributes …)设置的样式外,在基线中,我们将find内置的浏览器样式,据我所知浏览器供应商可以自由地分配他们select的任何默认样式 – 而且通常用户可以将自己的样式添加到汤中,无论是内置设置还是附加组件。 即使是所谓的CSS重置也不会重置任何东西。 他们只是在其余的上面再增加一层样式。
没有“在这里创build一个快照”的语法(如果没有一个彻底的分析,这将是我能想到的唯一的解决scheme),所以答案基本上不是 。
由于address:not(:last-child)
和类似者有11点的特殊性,所以你可以复制类名来使它更强。 例如,下面的声明是完全有效的,它具有20点特异性:
.mainCopy.mainCopy { margin-bottom: 0; }
你必须在你的html中只添加一个mainCopy
:
<ul class="mainCopy">
编辑
注意特异性的“点”,因为没有小数点。 他们是由特异性的数字位置。 例如:
address:not(:last-child) /* is 0-0-1-1 specificity (1 tagname, 1 pseudoclass) */ .mainCopy.mainCopy /* is 0-0-2-0 specificity (2 classnames) */
存在以下属性:
all: unset;
我相信可以这样使用:
.mainCopy { all: unset; margin-bottom: 0 }
https://developer.mozilla.org/en/docs/Web/CSS/unset
编辑:其实我相信由于您的具体问题的具体情况,这可能无法正常工作。
您可以添加另一个:不规则到所有您想排除的select器.mainCopy有余量
address:not(:last-child):not(.mainCopy), fieldset:not(:last-child):not(.mainCopy), li:not(:last-child):not(.mainCopy), ol:not(:last-child):not(.mainCopy), p:not(:last-child):not(.mainCopy), table:not(:last-child):not(.mainCopy), ul:not(:last-child):not(.mainCopy) { margin-bottom: 12px }
使用通用select器 *
以body
标记开头。
body *.[<'className'>] {}
或者简单地在你的课堂上加上body
标签。
body .[<'className'>] {}
两者实际上是相同的,使用你认为合适的和/或更易于检测的维修点。
address:not(:last-child), fieldset:not(:last-child), li:not(:last-child), ol:not(:last-child), p:not(:last-child), table:not(:last-child), ul:not(:last-child) { margin-bottom: 12px; color: red; } body *.mainCopy { margin-bottom: 0; color: green; }
<main> <p class="mainCopy">p</p> <p>p</p> <ul> <li class="mainCopy"> li </li> <li> li </li> </ul> <code>body *.mainCopy {}</code> </main>
我倾向于最初的财产价值。
address:not(:last-child), fieldset:not(:last-child), li:not(:last-child), ol:not(:last-child), p:not(:last-child), table:not(:last-child), ul:not(:last-child) {margin-bottom: initial}