Wie kann ich Inline-Stile mit externem CSS überschreiben?

98

Ich habe ein Markup, das Inline-Stile verwendet, aber ich habe keinen Zugriff, um dieses Markup zu ändern. Wie überschreibe ich Inline-Stile in einem Dokument nur mit CSS? Ich möchte weder jQuery noch JavaScript verwenden.

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 */
}
Mr. Alien
quelle
2
Warum Inline-Stile verwenden, wenn Sie diese überschreiben möchten?
Unheimlicher Bart
36
@BFDatabaseAdmin Er kann möglicherweise nicht auf das Markup zugreifen, in dem die Inline-Stile deklariert sind.
TylerH

Antworten:

173

Die einzige Möglichkeit, den Inline-Stil zu überschreiben, besteht darin, ein !importantSchlüsselwort neben der CSS-Regel zu verwenden. Das Folgende ist ein Beispiel dafür.

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>

Wichtige Notizen:

  • Die Verwendung !importantwird nicht als bewährte Methode angesehen . Daher sollten Sie sowohl den !importantInline-Stil als auch den Inline-Stil vermeiden .

  • Durch Hinzufügen des !importantSchlüsselworts zu einer CSS-Regel wird die Regel allen anderen CSS-Regeln für dieses Element vorangestellt.

  • Es überschreibt sogar die Inline-Stile aus dem Markup.

  • Die einzige Möglichkeit zum Überschreiben besteht darin, eine andere !importantRegel zu verwenden , die entweder mit höherer CSS-Spezifität im CSS oder gleicher CSS-Spezifität später im Code deklariert wird.

  • Muss gelesen werden - CSS-Spezifität nach MDN 🔗

Rohit Agrawal
quelle
1
Nun, dieser Stil teilt es ihm zu, eigentlich ist es nicht notwendig, dass er nur zum Überschreiben des Inline-CSS verwendet
Rohit Agrawal
1
Ich weiß, aber das gleiche, was ich sage! wichtig wird nur die Punktzahl für bestimmte Eigenschaft erhöhen, er kann andere Eigenschaften (nicht zum Überschreiben) in einem Block verwenden
Rohit Agrawal
Warum ist! Wichtige schlechte Praxis?
Unheimlicher Bart
1
@BFDatabaseAdmin, weil Sie das später nicht überschreiben können, wenn Sie für einen speziellen Fall benötigen
Rohit Agrawal
1
@BFWebAdmin das Problem ist, dass Sie manchmal keine Wahl haben. Zum Beispiel kann das "Abzeichen" aus dem neuen unsichtbaren Recaptcha gestylt werden, hat aber teilweise Inline-Stile, so dass Sie sie entweder so oder durch js überschreiben müssen und eine reine CSS-Lösung bevorzugen.
My1
26

inline-stylesin einem Dokument haben die höchste Priorität. Sagen Sie beispielsweise, wenn Sie die Farbe eines divElements in ändern möchten blue, aber eine inline stylemit einer colorEigenschaft festgelegt habenred

<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 */
}

Also, sollte ich jQuery / Javascript verwenden? - Antwort ist NEIN

Wir können element-attrCSS Selector verwenden !important, da dies !importanthier wichtig ist, da es sonst die Inline-Stile nicht außer Kraft setzt.

<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

Hinweis: Die Verwendung von !importantNUR funktioniert hier, aber ich habe den div[style]Selektor verwendet, um speziell divdas style Attribut auszuwählen

Mr. Alien
quelle
2
Soll ich also Inline-Stile verwenden? - Antwort ist NEIN :-)
PeeHaa
"Also, sollte ich jQuery / Javascript verwenden? - Antwort ist NEIN" Warum? Wenn ich in einer Umgebung (wie Sharepoint) arbeite, in der Elemente von einer unkontrollierbaren Entität zu Inline-Stilen hinzugefügt werden, warum sollte ich Jquery nicht verwenden, um die fehlerhaften Inline-Stile zu entfernen, damit das externe Thema meiner Website durchscheint? Scheint eine vorrangigere Lösung als das Sprengen zu sein! Wichtig für ein Merkmal, das ich später in einem bestimmten Fall möglicherweise überschreiben möchte.
Neberu
2
@Neberu - Weil JS im Browser blockiert / deaktiviert werden kann. Verwendung !importantkann nicht AFAIK.
Tony
1
Auch js ist imo imo schlecht, ich meine, öffnen Sie ausführbare Dateien, die Sie von einer unbekannten Person gesendet haben? Ich denke nicht, aber ein Browser tut dies mit jedem Klick
My1
11

Sie können den Inline-Stil mit Ausnahme des Inline- !importantStils leicht überschreiben

so

<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 */
}

aber wenn du hast

<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 */
}

jetzt wird es rednur noch .. und du kannst es nicht überschreiben

IE-Kills bleiben davon fern
quelle
1
Wie unterscheidet sich das von den Antworten, die Monate zuvor hinzugefügt wurden?
Unheimlicher Bart
4
@BFDatabaseAdmin Diese Antwort beschreibt das Verhalten des Inline-Stils !important, ein Punkt, der von keiner der anderen Antworten abgedeckt wird. Dies ist möglicherweise keine vollständig eigenständige Antwort, unterscheidet sich jedoch von den anderen bereitgestellten Antworten.
grg
Aber andererseits ist die Verwendung eines Inline-Stils mit wichtig wirklich übertrieben, da er standardmäßig ohnehin die höchste Priorität hat.
My1
6
<div style="background: red;">
    The inline styles for this div should make it red.
</div>

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

Unten finden Sie den Link für weitere Details: http://css-tricks.com/override-inline-styles-with-css/

jroi_web
quelle
5
Wie unterscheidet sich das von den Antworten, die Monate zuvor hinzugefügt wurden?
Unheimlicher Bart
1
Vielleicht gibt es keinen Unterschied, wenn Sie die Antwort bereits kannten ... aber für einige Neulinge hoffe ich, dass es ihnen helfen kann ... insbesondere den Link, wo es detaillierter ist ... trotzdem danke für Ihre Kommentare.
jroi_web
1

wird !importantin der CSS-Eigenschaft verwendet

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

div {
        color: blue !important;
    }
Vishal Vaghasiya
quelle