何时使用!在CSS中的重要属性?
#div p { color: red !important; } ... #div p { color: blue; }
我明白!important
作品,在这种情况下,div会呈现红色,因为现在它有优先权( !important
)。 但我仍然无法找出适当的情况来使用它。 有谁知道任何例子哪里!important
节省一天?
这是真实的生活场景
想象一下这种情况
- 你有一个全局的CSS文件,可以在全局范围内设置你的网站的视觉方面
- 你(或其他人)在元素本身上使用内联样式,这
通常是非常糟糕的做法
在这种情况下,您可以将全局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对于清除全局语句通常很有用 – 例如,在打印样式表中将所有背景色更改为白色。