我应该避免在CSS中使用!important吗?

时间:2010-08-06 20:58:37

标签: css xhtml css-selectors

有时!important很有用,例如,如果我为网站上的所有链接定义了常用样式(选择器,比如a),但是当我想覆盖某些规则时,我有以下内容选择:

  • 使用更具体(更长)的选择器
  • 使用!important

哪种方式更好,可能有一些指导方针?

3 个答案:

答案 0 :(得分:15)

非常谨慎地使用!important - 它会覆盖几乎所有内容,甚至是内联样式,并且使用样式规则的“级联”以一种不那么显而易见的方式混淆CSS,从而赋予CSS名称。它很容易使用,并且往往会成倍增加,特别是在误用时。您可以轻松地使用要覆盖的!important规则的元素结束,此时您经常需要重构样式,或使用其他!important规则并解决问题。

一旦它被传播并且你在任何地方都在使用它,你就会在没有它的情况下恢复你所处的相同情况(难以指定特别足以覆盖其他风格的元素),但你也没有不再有!important因为其他一切也在使用它。

当遇到!important看起来很吸引人的情况 - 或者更糟糕的是,它已经在使用和传播的情况 - 如果可以的话,更愿意重构你的CSS。 (坦率地说,如果你需要在用户样式表之外!important,通常是因为你的选择器已经太具体了,和/或你没有利用CSS中的C。)你会做得更好定义您的基本样式尽可能接近htmlbody元素,当您想要覆盖时,使用尽可能少的特异性。这样,您就有足够的空间进行更改。通常有一个理由要覆盖样式,这些情况通常可以归结为类名,页面的特定部分(读取:特定的父元素)等。

(唯一真正的例外是,如果您覆盖的样式实际上超出了您的控制范围。(例如,如果您使用的框架对您的页面看起来有很强烈的看法,那么您可能会发现很难覆盖任何东西。我已经使用了实际插入了自己的内联样式的应用程序,只有!important规则可以覆盖它们。)如果您没有完全访问代码,请覆盖重构很容易就会比它们的价值更麻烦。你可以使用!important来取回一些控制权,只要你知道后果。)

答案 1 :(得分:2)

我可以说的是你应该尽可能地避免它,因为这意味着存在冗余代码,并指出CSS和样式没有很好的结构。

但在某些情况下,必须使用它而无法避免。

所以尽力做到最好。

答案 2 :(得分:2)

当你能时避免它,因为这是最主张的,但同时它很重要。

看看:

The importance of !important in CSS