インラインスタイルを外部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

回答:


174

インラインスタイルを上書きする唯一の方法は!important、CSSルールの横にキーワードを使用することです。以下はその例です。

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とインラインスタイルを回避する必要があります。

  • !importantCSSルールにキーワードを追加すると、そのエレメントの他のすべてのCSSルールよりもルールが強制的に優先されます

  • マークアップのインラインスタイルオーバーライドします

  • オーバーライドする唯一の方法!importantは、CSSでより高いCSS固有性を持つか、コードの後半で同じCSS固有性で宣言された別のルールを使用することです。

  • 必読-MDNによるCSS固有性


1
まあ、そのスタイルは彼次第です実際に彼がインラインCSSをオーバーライドするためだけに使用している必要はありません
Rohit Agrawal

1
私は知っているが、同じことが、私は言っている重要なだけで、特定のプロパティのスコアが増加します、彼はいくつかのブロックに(ないオーバーライドのために)他のプロパティを使用している可能性が!
のRohit Agrawalさん

なぜ重要な悪い習慣なのですか?
不吉なひげ

1
@BFDatabaseAdmin(特別なケースが必要な場合は後でオーバーライドできないため)
Rohit Agrawal

1
@BFWebAdmin問題は、選択できない場合があることです。たとえば、新しい非表示のrecaptchaからの「バッジ」はスタイル設定できますが、部分的にインラインスタイルがあるため、このように、またはjsによってオーバーライドし、純粋なCSSソリューションを優先する必要があります。
My1

26

inline-stylesドキュメント内の優先度が最も高いので、たとえば、div要素の色をに変更したいが、プロパティをに設定しblueinline 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を使用する必要がありますか?-答えはNOです

ここでは、element-attrCSSセレクターを使用できます!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ここではONLYを使用div[style]できますdivが、セレクターを使用 して特定のstyle 属性を選択しています


2
では、インラインスタイルを使用する必要がありますか?-回答はNOです :-)
PeeHaa 2013年

「それで、jQuery / Javascriptを使うべきですか?-答えはノーです」制御できないエンティティによってインラインスタイルが要素に追加されている環境(Sharepointなど)で作業している場合、Jqueryを使用して問題のあるインラインスタイルを削除しないと、サイトの外部テーマが透けて見えなくなりますか?後で特定のインスタンスでオーバーライドする可能性のある特性を重要視する!
ネベル2015年

2
@Neberu-JSはブラウザでブロック/オフにすることができるため。使用!importantできません私の知る限り。
トニー

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である場合の動作を説明しており、他の回答ではカバーされていない点です。これは完全に独立した回答ではないかもしれませんが、これは提供される他の回答とは異なります。
grg

しかし、それでも重要なインラインスタイルを使用することは、とにかくデフォルトで最も優先度が高いため、本当にやりすぎです。
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
これは、数か月前に追加された回答とどう違うのですか?
不吉なひげ

1
多分あなたがすでに答えを知っていれば違いはないかもしれません...しかし、いくつかの初心者のために、それが彼らを助けることができることを願っています..特に、より詳細なリンク...とにかくコメントしてくれてありがとう。
jroi_web 2014

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.