!important在CSS中是什么意思?


409

!importantCSS是什么意思?

CSS 2中可用吗?CSS 3?

在哪里支持?所有现代浏览器?



17
...尽可能避免的事情。
斯科特

Answers:


400

从本质上讲,它的意思是说。“这很重要,请忽略后续规则,以及所有常见的特异性问题,请应用规则!”

在正常使用中,外部样式表中定义的规则被head文档中定义的样式所取代,而样式本身又被元素本身内的内联样式所取代(假设选择器的特异性相同)。用!important“属性”(?)定义规则将放弃关于“后继”规则优先于“较早”规则的担忧。

同样,通常,更具体的规则将覆盖不太具体的规则。所以:

a {
    /* css */
}

通常被以下因素否决:

body div #elementID ul li a {
    /* css */
}

由于后一个选择器更具体(通常,在哪里找到更具体的选择器(在head或外部样式表中)无关紧要,它仍将覆盖次要选择器(行内样式属性将始终覆盖“更多”或“更少”的特定选择器,因为它总是更具体。

但是,如果您将添加!important到次特定选择器的CSS声明,则它将具有优先级。

使用!important有其目的(尽管我很难想到它们),但这很像使用核爆炸来阻止狐狸杀死您的鸡。是的,狐狸将被杀死,鸡也将被杀死。和邻里。

这也使调试CSS成为一场噩梦(从个人,经验和经验来看)。


253
对于许多开发人员来说,这也是令人困惑的,因为在许多编程语言中,前缀!意思不是
rustyx 2014年

19
!important的一个目的是在GreaseMonkey脚本中,在该脚本中,您有意覆盖可能比您的CSS更具体的其他人的CSS。
Noumenon 2014年

1
W3正式将称为“规则”。
JD史密斯

5
至少它不是讽刺的,说important!(重要的不是)
user3553260 16-10-19

2
您写道:“通常情况下,外部样式表中定义的规则被文档开头定义的样式所取代”。这是错误的。
jlguenego

130

!important规则是使CSS级联的一种方法,但也要始终应用您认为最关键的规则。具有!important属性的规则将始终应用,无论该规则出现在CSS文档中的什么位置。

因此,如果您具有以下条件:

.class {
   color:red !important;
}
.outerClass .class {
   color:blue;
}

具有重要意义的规则将是适用的规则(不包括特异性

我相信它!important出现在CSS1中,因此每个浏览器都支持它(部分实现的IE4至IE6,完整的IE7 +)

另外,您也不想经常使用它,因为如果您与其他人一起工作,则可以覆盖其他属性。


1
IE4 +,其实,有虫子,直至并包括6
BoltClock

15
混乱的发生!是某些语言中“ NOT”的象征,但现在更加清楚了。
2014年

2
我特别高兴您加入了使用的语法!important。CSS与其他语言完全不同,因此很容易忘记如何使用某些东西。
blainarmstrong 2015年

3
@ Si8-是的,由于这种混淆,我一直认为“他们”应该将其定义为important!,或者也许是IMPORTANT!,而不是!important。我想知道是否有人(可能会读到这本书)知道为什么他们在前面加上标点符号来定义它?显然,现在更改它为时已晚。
凯文·菲根

22

!important 是CSS1的一部分。

支持它的浏览器:IE5.5 +,Firefox 1 +,Safari 3 +,Chrome 1+。

这意味着,类似于:

如果周围没有其他重要的事情,请使用我!

不能说更好。


5
!important不仅限于Safari 3+;像所有其他非IE浏览器一样,它从一开始就支持它。从IE版本4的理解是开始,但它仅支持从第7版是没有错误的起点
BoltClock

12

按原点排序后,它会影响CSS级联中的排序。它与其他答案中所述的特异性无关。

这是从低到高的优先级:

  1. 浏览器样式
  2. 用户样式表声明(无!重要)
  3. 作者样式表声明(无!重要)
  4. 重要的作者样式表
  5. 重要的用户样式表

之后,规则仍然需要专门说明。

参考文献:


正如@ fabian-barney指出的那样,它!important级联顺序 developer.mozilla.org/en-US/docs/Web/CSS/Cascade的修饰符(请参阅下表以供参考)。
Doomjunky

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.