【发布时间】:2011-03-26 13:26:54
【问题描述】:
有时!important 很有用,例如,如果我为网站上的所有链接定义了通用样式(选择器,比如a),但当我想覆盖某些规则时,我有以下选择:
- 使用更具体(更长)的选择器
- 使用
!important
哪种方式更好,可能有一些指导方针?
【问题讨论】:
标签: css xhtml css-selectors
有时!important 很有用,例如,如果我为网站上的所有链接定义了通用样式(选择器,比如a),但当我想覆盖某些规则时,我有以下选择:
!important
哪种方式更好,可能有一些指导方针?
【问题讨论】:
标签: css xhtml css-selectors
非常非常谨慎地使用!important——它几乎覆盖了所有内容,甚至是内联样式,并且以一种不太明显的方式与赋予 CSS 名称的样式规则的“级联”相混淆。它很容易使用不好,并且容易成倍增加,尤其是在滥用时。您可以轻松地以想要覆盖的带有 !important 规则的元素结束,此时您通常必须重构您的样式,或者使用另一个 !important 规则并促成问题。
一旦它被传播并且你在任何地方都使用它,你就会回到没有它时的相同情况(难以指定足够具体的元素以覆盖其他样式),但你也不会有 !important 了,因为其他所有东西也在使用它。
当遇到!important 看起来很吸引人的情况时——或者更糟的是,它已经在使用和传播——如果可以的话,更愿意重构你的 CSS。 (坦率地说,如果您在用户样式表之外需要 !important,这通常是因为您的选择器已经太具体了,和/或您没有利用 CSS 中的 C。)您最好定义您的基本样式尽可能接近html 或body 元素,并且当您想要覆盖时,尽可能少地使用特殊性。这样,您就有足够的空间进行更改。通常,您想要覆盖样式是有原因的,这些情况通常可以归结为类名、页面的特定部分(阅读:特定的父元素)等。
(想到的唯一真正的例外是,如果您要覆盖的样式实际上超出了您的控制范围。(例如,如果您使用的框架对您的页面外观有非常强烈的意见,您可能发现覆盖任何东西都非常困难。我使用过实际上插入了自己的内联样式的应用程序,除了!important 规则之外没有任何东西可以覆盖它们。)如果您没有完全访问代码的权限,则覆盖和重构很容易比他们的价值更麻烦。你可以使用!important 收回一些控制权,只要你知道后果。)
【讨论】:
我可以说的是,你应该尽量避免它,因为这意味着存在冗余代码,并表明 CSS 和样式结构不合理。
但在某些情况下,必须使用它,而且无法避免。
所以只要尽力而为。
【讨论】:
【讨论】: