2012-02-12 92 views
269

可能重复:
What are the implications of using “!important” in CSS?
How do you read !important in CSS?CSS中的重要含义是什么?

是什么!important在CSS是什么意思?
仅适用于css2,css3,IE吗?

+2

http://www.w3.org/TR/CSS2/cascade.html#important-rules – j08691 2012-02-12 00:35:20

+9

...东西,以避免只要有可能。 – Scott 2012-02-12 00:38:18

+2

可能重复的[你如何阅读!在CSS中很重要?](http://stackoverflow.com/questions/7369216/how-do-you-read-important-in-css),[使用的含义是什么“!重要”在CSS?](http://stackoverflow.com/questions/3706819/what-are-the-implications-of-using-important-in-css),也见:[何时使用!重要财产在CSS?](http://stackoverflow.com/questions/5701149/when-to-use-important-property-in-css),[何时使用“!重要”来保存一天(当使用CSS) ](http://stackoverflow.com/questions/2042497/when-to-use-important-to-save-the-day-when-working-with-css) – 2012-02-12 11:36:21

回答

275

它的意思,基本上,它说什么; '这是重要的,忽略随后的规则,以及任何常见的特殊性问题,应用这个规则!'

在正常使用中,外部样式表中定义的规则被文档的head中定义的样式所取代,反过来,该样式被元素内部的内嵌样式推翻(假设选择)。使用!important'属性'(?)定义一个规则会抛弃正常的顾虑,关于覆盖'早期'规则的'晚期'规则。

此外,通常,更具体的规则将覆盖较不具体的规则。所以:

a { 
    /* css */ 
} 

通常被否决:

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

由于后者选择是更具体的(它不,通常情况下,身在何处,更具体的选择被找到(在head或外部样式表)它将仍然覆盖较不具体的选择器(线型样式属性将总是覆盖“more-”或“less-”,特定的选择器,因为它的总是更具体。

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

使用!important有其目的(尽管我很难想象它们),但它很像使用核爆炸来阻止狐狸杀死你的鸡;是的,狐狸会被杀死,但鸡也会被杀死。和邻里。它也使得调试你的CSS成为一场恶梦(来自个人,经验,经验)。

+145

许多开发人员也很困惑,因为在许多编程中语言的前缀!意味着*不*。 – rustyx 2014-04-01 14:33:04

+8

!重要的一个目的是在GreaseMonkey脚本中,您故意忽略其他人可能比您更具体的CSS。 – Noumenon 2014-04-29 10:29:25

+0

官方W3 [称它](http://www.w3.org/TR/CSS2/cascade.html#important-rules)为“规则”。 – 2014-05-30 16:46:32

18

!important是CSS1的一部分。

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

这意味着,这样的:

使用我,如果没有什么重要的其他各地!

不能说更好。

+4

'!important'不仅限于Safari 3+;它像所有其他非IE浏览器一样从一开始就支持它。 IE从版本4开始就理解它,但它只支持从版本7开始无bug的版本。 – BoltClock 2012-02-12 10:40:40

85

!重要的规则是让你的CSS级联,但也有你觉得最重要的规则总是被应用。无论 规则在CSS文档中出现的位置,将始终应用具有!重要属性 的规则。

所以,如果你具备以下条件:

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

与重要的规则将在一个应用(不包括specificity

相信!important出现在CSS1所以每一个浏览器支持它(IE4到IE6的部分实现,IE7 +全)

此外,这是你不想经常使用的东西,因为如果你正在与ot她的人可以覆盖其他属性。

+1

IE4 +实际上带有bug,最多可包含6个。 – BoltClock 2012-02-12 10:41:54

+12

混乱发生在'!'是NOT中的符号语言,但现在更清晰。 – Si8 2014-03-13 21:00:38

+2

我特别高兴你包含了使用'!important'的语法。 CSS与其他语言不同,很容易忘记如何使用某些东西。 – blainarmstrong 2015-10-09 01:00:06

9

它用于影响CSS级联中的排序,当按原点排序完成时。 它与其他答案中所述的特异性无关。

这里是优先从最低到最高:(!无重要)

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

之后,针对仍然在手指中馅饼的规则发生特异性。

参考文献:

+2

secifity =>特异性? – 2012-02-12 11:32:21