什么时候应该使用CSS!important规则?

来自菜鸟教程
跳转至:导航、​搜索

CSS 中的 !important 规则使您能够覆盖样式,但是对于一个孤独的软件开发人员来说,这种能力是否太过分了? 阅读本文以了解它是什么,以及何时使用它是个好主意!

!important 规则很特别,因为它能够覆盖 CSS 样式的自然 级联

考虑下面的 HTML/CSS 代码……你认为文本会是什么颜色?

<div>
  <h1 id="title">Sir Chompsalot</h1>
</div>
div h1 {
  color: blue !important;
}

div h1 {
  color: green;
}

通常,如果我们有两个具有相同特性的 CSS 规则,则后一个规则会胜出。 在这种情况下,前面的 CSS 规则优于后面的任何规则,仅仅是因为它具有强大的 !important 规则。

文字是蓝色的!

使用相同的 HTML 标记,如果我们通过定位 body 标记和 h1#title 来变得更具体怎么办?

div h1 {
  color: blue !important;
}

body div h1#title {
  color: green;
}

这是否有能力覆盖 !important 规则?

没有! 哇,!important 规则几乎太强大了。



💪🤖💪

由于 !important 与 CSS 的预期行为相矛盾,因此通常建议避免使用它。 如果你过于频繁地依赖 !important 可能会导致很多意想不到的行为,并且新开发人员将很难调试他们的 CSS。 为什么这段文字不变色! 😂

这是否意味着你永远不应该使用它?

使用场合!重要

自从 !important 被引入 CSS 以来,随着时间的流逝,似乎有一些共识认为它实际上只对一项工作有用:处理 外国 CSS

外国 CSS 本质上是任何你自己无法直接改变或改进的 CSS。 国外 CSS 的两个实际例子是:

  • JavaScript 框架和外部库 :这适用于流行的图书馆,如引导程序 , 或者标准化 . 由于您不能直接编辑他们的 CSS 样式,有时您唯一的选择是用您自己的 !important 规则覆盖他们的 CSS。
  • 用户风格:这在几年前曾经非常流行。 用户样式 为您提供了一种创建自己的 CSS 以注入其他人/公司拥有的网站的方法。 例如,instagram.com 的这个深色主题

由于您无法更改外国 CSS(除非您在 Instagram 工作以纠正他们严重缺乏暗模式),因此 !important 规则确实是您唯一且最佳的选择。

Mozilla Developer NetworkCSS-Tricks 的人们似乎同意 !important 确实只对处理外国 CSS 有用


结论

如果您真的很想使用 !important,请尝试反思您可以做出的架构决策。 不仅仅是你的 CSS。 这可能意味着添加新的 HTML 标记,或应用新的类/ID。 参与这种以架构为中心的实践会产生高质量的代码,维护起来很愉快! 🤓

你有没有找到 !important 的其他合适用途? 在 @alligatorio 发推文并与我们分享!