2013-05-29 54 views
57

我有使用内联样式的标记,但我无权更改此标记。如何在仅使用CSS的文档中覆盖内联样式?我不想使用jQuery或JavaScript。如何用外部CSS覆盖内联样式?

HTML:

<div style="font-size: 18px; color: red;"> 
    Hello World, How Can I Change The Color To Blue? 
</div> 

CSS:

div { 
    color: blue; 
    /* This Isn't Working */ 
} 
+2

为什么要使用内嵌样式,如果你想覆盖它们? – BFWebAdmin

+18

@BFDatabaseAdmin他可能无法访问声明内联样式的标记。 – TylerH

+0

是的,好点。 – BFWebAdmin

回答

120

要只有这样,才能覆盖内联样式是通过使用CSS规则旁边!important关键字。以下是它的一个例子。

div { 
 
     color: blue !important; 
 
     /* Adding !important will give this rule more precedence over inline style */ 
 
    }
<div style="font-size: 18px; color: red;"> 
 
    Hello, World. How can I change this to blue? 
 
</div>

重要提示:

  • 使用!important不被视为一个很好的做法。因此,您应该避免!important和内联样式。

  • 添加!important关键字任何CSS规则允许的规则在所有该元素的其它CSS规则强行先。

  • 甚至覆盖标记中的内联样式

  • 覆盖的唯一方法是通过其他!important规则,要么在后面的代码中CSS较高的CSS特异性或等于CSS具体声明。

  • 必读 - CSS Specificity by MDN

+1

那么风格部分它,他实际上没有必要,他只用于重写内联的css –

+1

我知道,但相同我在说!重要只会增加特定房产的分数,他可能会在某些街区使用其他房产(不是重写) –

+0

为什么!重要的不良做法? – BFWebAdmin

21

文档中inline-styles具有最高优先级,因此,例如说,如果你想要一个div元素的颜色改变为blue,但你有一个inline stylecolor属性设置为red

<div style="font-size: 18px; color: red;"> 
    Hello World, How Can I Change The Color To Blue? 
</div> 
div { 
    color: blue; 
    /* This Won't Work, As Inline Styles Have Color Red And As 
     Inline Styles Have Highest Priority, We Cannot Over Ride 
     The Color Using An Element Selector */ 
} 

那么,我应该使用jQuery/Javascript? - 答案是NO

我们可以使用element-attr CSS选择器,!important,笔记,!important在这里很重要,要不然也不会在乘坐内嵌样式..

<div style="font-size: 30px; color: red;"> 
    This is a test to see whether the inline styles can be over ridden with CSS? 
</div> 
div[style] { 
    font-size: 12px !important; 
    color: blue !important; 
} 

Demo

注意:使用!important只能在这里使用,但我用 div[style]选择具体选择具有divstyle 属性

+2

那么,我应该使用内联样式吗? - 答案是**否** :-) – PeeHaa

+0

“那么,我应该使用jQuery/Javascript吗? - 答案是否” 为什么?如果我在一个环境(如Sharepoint)中将内联样式添加到由不可控制的实体添加到元素中,为什么我不使用Jquery删除有问题的内联样式,以便我的网站外部主题显示通过?似乎比爆破更优越的解决方案!对于我以后可能想要在特定实例中重写的特征来说很重要。 – Neberu

+2

@Neberu - 因为JS可以在浏览器中被阻止/关闭。使用'!important'不能AFAIK。 – Tony

8

您可以轻松地覆盖内联样式,除了内嵌!important风格

所以

<div style="font-size: 18px; color: red;"> 
    Hello World, How Can I Change The Color To Blue? 
</div> 

div { 
    color: blue !important; 
    /* This will Work */ 
} 

但如果你有

<div style="font-size: 18px; color: red !important;"> 
    Hello World, How Can I Change The Color To Blue? 
</div> 

div { 
    color: blue !important; 
    /* This Isn't Working */ 
} 

现在这将是red只..你不能覆盖它

+1

这与以前几个月的答案有什么不同? – BFWebAdmin

+3

@BFDatabaseAdmin这个答案描述了当内嵌样式具有'!important'时的行为,这个点没有被任何其他答案覆盖。这可能不是一个完全独立的答案,但这与所提供的其他答案不同。 – grgarside

+0

但是再次使用重要的内联样式实际上是过度杀伤,因为它默认情况下具有最高的优先级。 – My1

2
<div style="background: red;"> 
    The inline styles for this div should make it red. 
</div> 

div[style] { 
    background: yellow !important; 
} 

下面是链接了解详情: http://css-tricks.com/override-inline-styles-with-css/

+5

这与以前几个月的答案有什么不同? – BFWebAdmin

+1

如果你已经知道答案,也许没有区别...但对于一些新手,我希望它可以帮助他们......尤其是链接,它更详细...无论如何感谢您的评论。 –