何时使用!在CSS中的重要属性?

#div p { color: red !important; } ... #div p { color: blue; } 

我明白!important作品,在这种情况下,div会呈现红色,因为现在它有优先权( !important )。 但我仍然无法找出适当的情况来使用它。 有谁知道任何例子哪里!important节省一天?

这是真实的生活场景

想象一下这种情况

  1. 你有一个全局的CSS文件,可以在全局范围内设置你的网站的视觉方面
  2. 你(或其他人)在元素本身上使用内联样式,这通常是非常糟糕的做法

在这种情况下,您可以将全局CSS文件中的某些样式设置为重要的,从而覆盖直接在元素上设置的内联样式。

真实世界的例子?

这种情况通常发生在您完全无法控制HTML的情况下。 比如想一下Sharepoint的解决scheme。 你希望你的部分被全局定义(样式),但是你不能控制的一些内联样式是存在的。 !important是使这种情况更容易处理。

其他真实场景也包括一些写得不好的jQuery插件 ,它们也使用内联样式。

我想你现在已经明白了 ,也可以拿出一些其他的。

你什么时候决定使用!important

我build议你不要使用!important除非你不能以其他方式做。 每当有可能避免它,避免它。 使用很多!important样式将会使维护变得更加困难,因为您打破了样式表中的自然级联

覆盖样式属性

在示例中说,您无法更改HTML源代码,但仅提供样式表。 一些不小心的人直接在元素上打了一个风格(嘘!)

 <div style="background-color:red"> <p>Take that!</p> </div> 

!重要的可以覆盖。

 <style> div { background-color: green !important } </style> 

这是一个真实的 现实生活场景,因为它实际上是昨天发生的:

  • 在jQuery对话框的Z索引问题。 自动build议列表显示不正确

在我的答案中不使用!important包括:

  • 在JavaScript / CSS中search某个难以捉摸的属性的应用程序。
  • 用JavaScript添加属性,这比使用!important

所以, !important一个好处是有时节省时间。 如果你非常谨慎地使用它,它可能是一个有用的工具。

如果你使用它只是因为你不明白特异性是如何工作的 ,那么你做错了。


!important另一个用法是在编写某种外部窗口小部件types的东西时,并且要确保您的样式是应用的样式,请参阅:

  • 附加控制的CSS问题

当您用尽其他方法来增加CSSselect器的特异性时,通常会使用!important。

所以,一旦另一个CSS规则已经涉及到ID,inheritancepath和类名称,当你需要重写该规则,那么你需要使用“重要”。

我必须使用!important当我需要覆盖一些使用“样式”属性的JS“插件”(如广告,横幅和东西)生成的HTML样式。

所以我猜你可以使用它,当你不控制的CSS。

严格地说,如果你已经很好地构build了你的CSS并且没有太多的特殊性,你就不需要使用!

最合适的时候使用!重要的是,当你有一个特殊的风格,你想在你的网站的正常级联之外的风格。

!important是有点像eval 。 任何问题都不是一个好的解决办法,没有它的问题很less有解决的。

这是一个真实世界的例子。

当使用GWT-Bootstrap V2时,它会注入一些css文件,这将覆盖我的CSS样式。 为了使我的财产不被重写,我使用!important

当内联CSS是正确的答案时,使用!important对于创build电子邮件非常!important 。 当在不同的平台上观看时,它与@media一起使用来更改布局。 例如,与智能手机相比,页面在桌面上显示的方式(即更改链接的位置和大小),整个页面宽度适合于480px宽度为480px

我正在使用!重要的是要改变SharePoint网站上的一个元素的风格。 在Web部件上构build元素的JavaScript在共享内部工作中被深入多层次。 试图find风格应用的地方,然后尝试修改它似乎是对我很浪费的努力。 在自定义的CSS文件中使用!重要的标签要容易得多。

在代码本身中使用!important通常不是一个好主意,但是在各种重写中它可能是有用的。

我使用Firefox和一个dotjs插件,它本质上可以在指定的网站上自动运行你自己定制的JS或CSS代码。

这里是我在Twitter上使用的代码,无论我滚动多远,tweetinput字段都会一直保留在屏幕上,并且超链接始终保持相同的颜色。

 a, a * { color: rgb(34, 136, 85) !important; } .count-inner { color: white !important; } .timeline-tweet-box { z-index: 99 !important; position: fixed !important; left: 5% !important; } 

因为幸运的是,Twitter开发者并没有使用!important属性,我可以使用它来保证指定的样式将被绝对覆盖,因为没有!important它们有时不会被覆盖。 这对我来说真的很方便。

你使用!important重写一个css属性,例如你在asp.net中有一个控件,它呈现一个背景为蓝色的控件(在html中),你想改变它,你没有源代码控制,所以你附加一个新的CSS文件,并写入相同的select器,并改变颜色,并添加!重要的。

最好的实践是当你品牌/重新devise的SharePoint网站,你用它来覆盖默认样式

!important对于清除全局语句通常很有用 – 例如,在打印样式表中将所有背景色更改为白色。