2012-06-22 77 views
46

如果您我可以重写inline!重要吗?

<div style="display: none !important;"></div> 

有没有办法覆盖,在样式表使之显示?

最好使用类似于此:

div { display: block !important; } 
+2

为了覆盖'display:block!important','visibility:hidden;'会工作。无论如何,这与问题无关。但想到分享。 – SkyBuzz

回答

65

让我首先要说,一般内嵌样式可以覆盖

.override {color:red !important;}​

<p style="color:blue;">I will be blue</p> 
<p style="color:blue;" class="override">But I will be red</p> 

Fiddled

这种行为描述in W3 specs,其中指出的是!important声明不会改变特异性,而是优先于“正常”声明的

话虽这么说,当冲突的规则都具有!important标志,特异性决定了内嵌规则应用 - 这意味着,对于OP的情况下,有没有办法来覆盖在线!important

+3

OP明确指出“内联!重要” - 请正确阅读!尽管如此,+1还是很好的答案。 – Christoph

+1

@Christoph:但答案同样清楚地陈述了“你不能重写内联CSS”,“内联有更高的优先级”......这是错误的,因此我的答案的原始语句。我不希望每个人都编辑他们的答案来纠正错误 –

+2

你的回答没有提到重写'!important'内嵌样式。这个问题只会重申'!important'内联样式。 – BoltClock

19

不能覆盖内嵌CSS,如果有!important。它的优先级高于外部CSS文件中的样式。

但是,如果您希望稍后改变某些操作,则可以使用一些JavaScript。

+1

不能使用JavaScript,它是用于电子邮件。 –

5

您不能覆盖具有!important的内联样式。首选是内联样式。

对于如:我们有一个类

.styleT{float:left;padding-left:4px;width:90px;} 

和JSP

<div class="styleT" id="inputT" style="padding-left:0px;"> 

这里不走padding-left:4px;。它需要styleT类除了填充左:4PX ;. 会有padding-left:0px;

5

您不能覆盖具有!important的嵌入式CSS,因为它具有更高的优先级,但使用JavaScript可以实现您想要的效果。

+0

感谢您的编辑,现在是正确的 –

1

这是一个简单的jQuery解决方案。

$(document).ready(function() { 
$('div').css('display','block'); 
}) 
相关问题