如何使用外部CSS覆盖内联样式?


99

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

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
如果要覆盖内联样式,为什么要使用它们?
险恶胡须

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

Answers:


174

覆盖内联样式的唯一方法是使用!importantCSS规则旁边的关键字。以下是一个示例。

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特定性声明。

  • 必须阅读-MDN的CSS特殊性🔗


1
好吧,这种风格对他来说实际上是没有必要的,他不必只使用它来替代内联CSS
Rohit Agrawal

1
我知道,但我也要说同样的话!重要的只会增加特定属性的得分,他可能会在某个区域使用其他属性(而不是用于覆盖)
Rohit Agrawal

为什么重要的不良习惯?
险恶胡须

1
@BFDatabaseAdmin,因为如果需要任何特殊情况,以后无法覆盖它
Rohit Agrawal

1
@BFWebAdmin问题是您有时别无选择。例如,可以对新的不可见Recaptcha中的“徽章”进行样式设置,但具有部分内联样式,因此您必须像这样或通过js覆盖它们,并且首选纯CSS解决方案。
My1's

26

inline-styles在文档中具有最高优先级,例如,如果您想将div元素的颜色更改为blue,但您inline style有一个color属性设置为的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吗?-答案是否定的

我们可以将element-attrCSS Selector与一起使用!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;
}

演示版

注意:!important仅在这里可以使用,但是我使用 div[style]选择器专门选择了div具有style 属性


2
那么,我应该使用内联样式吗?-答案为:-)
PeeHaa

“那么,我应该使用jQuery / Javascript吗?-答案是否定的”为什么?如果我在无法控制的实体将行内样式添加到元素的环境(如Sharepoint)中工作,为什么不使用Jquery删除有问题的行内样式,以便我的网站外部主题得以显示?似乎比在我以后可能要在特定实例中覆盖的特征爆破!important更为有效。
Neberu 2015年

2
@Neberu-因为JS可以在浏览器中被阻止/关闭。使用!important无法AFAIK。
托尼

1
通常,js也对imo不利,我的意思是您是否打开了一个陌生人发送的可执行文件?我猜不是,但是浏览器会通过每次点击来做到这一点
My1

11

您可以轻松地覆盖除内嵌内嵌式的!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
这与几个月前添加的答案有何不同?
险恶胡须

4
@BFDatabaseAdmin此答案描述的是内联样式具有时的行为!important,该点未被其他任何答案覆盖。这可能不是一个完全独立的答案,但这与提供的其他答案不同。
2015年

但是,再次使用具有重要意义的内联样式实在是过大了,因为默认情况下,它始终具有最高优先级。
My1

6
<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
这与几个月前添加的答案有何不同?
险恶胡须2014年

1
如果您已经知道答案,也许没有什么区别。但是对于某些新手来说,我希望它可以为他们提供帮助。特别是链接更详细的地方……无论如何,谢谢您的评论。
jroi_web 2014年

1

用于!importantCSS属性

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

div {
        color: blue !important;
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.