CSSを使用してelement.styleをオーバーライドする


83

ページビルダーのHTMLページがあり、style属性を要素に直接挿入します。と見なされていることがわかりましたelement.style

CSSを使用してオーバーライドしたい。要素を一致させることはできますが、オーバーライドしません。

スクリーンショット

CSSを使用してスタイルをオーバーライドするにはどうすればよいですか?


2
スタイルインジェクションのソースを見つけて削除しますか?ドキュメントソースにない場合は、JavaScriptのどこかから来ている可能性があります。
cimmanon 2013

2
どうすればソースを見つけることができますか?
Shailen 2013

2
コマンド+シフト+ f(Macの場合)またはCtrl +シフト+ f(PCの場合)
maahd 2015

JSでの代替を使用して追加プロパティを削除することであってもよい注意removeProperty()ieegは、document.querySelector("li").style.removeProperty("display"); その後、あなたもあなたがしなければならないように(新しいデフォルト値を提供する必要はありません!important。しかし、継承チェーンは、単に「にジャンプ」
rugk

回答:


121

それはしばしば眉をひそめますが、あなたは技術的に使用することができます:

display: inline !important;

一般的には良い習慣ではありませんが、場合によっては必要になることもあります。<li>そもそも要素にスタイルを適用しないようにコードを編集する必要があります。


17
element.styleはそれがマークアップにあることを意味するので、あなたのhtmlには、次のように表示されます<li style="display: none;">
DiscoInfiltrator 2013

1
show()メソッドを使用する場合のjQueryで、display:block; 要素スタイルに適用されます。私はそれを表示したかった:インラインブロック; しかし。私は最初に、このメソッドを使用せず、.css( 'display'、 'inline-block');を使用して問題を解決しました。代わりに。ただし、この例を読んだ後、!importantを使用するように変更すると思います。
Simon Bengtsson

jQueryは、表示プロパティを、表示されている要素のデフォルトに設定します。
フォークトラッシュ2014

1
これが私のために働いたとき、文字通りちょうど「gtf outta here」と叫び、私のガールフレンドを動揺させました
ジャグ

2
これらのコメントのほとんどは、ソースコードにアクセスできることを前提としています。コーダーがインラインスタイルが追加されたライブラリを出さなければ、これらの悪い習慣をする必要はありません。
TallOrderDev

20

このCSSはJavaScriptも上書きします:

#demofour li[style] {
    display: inline !important;
} 

または最初の1つだけ

#demofour li[style]:first-child {
    display: inline !important;
}

12

element.style マークアップから来ています。

<li style="display: none;">

styleHTMLから属性を削除するだけです。


<li style = "display:none;">を追加していません
DW

どこかに注入されています。私もそれを探しています、私はグーグルマップがこれをしていると思いますD:
icedwater 2014

1
彼がそれに到達し、それを自分自身を削除することはできませんよりも、注入されたなら、彼はそれを上書きしなければならない
jonyB

5

!importantを使用すると、ChangeなどのCSSを介してelement.styleがオーバーライドされます

color: #7D7D7D;

color: #7D7D7D !important;

それはそれをする必要があります。


5

もちろん、ここでは!importantトリックが決定的ですが、より具体的にターゲティングすると、オーバーライドを実際に適用するだけでなく(重み基準で!importantを支配できます)、意図しない要素をオーバーライドしないようにすることもできます。

ブラウザの開発ツールを使用して、問題のあるスタイル属性の正確な値を特定します。例えば:

"font-family: arial, helvetica, sans-serif;"

または

"display: block;"

次に、オーバーライドするセレクターのブランチを決定します。ニーズに合わせて選択肢を広げたり狭めたりできます。例:

p span

または

section.article-into.clearfix p span

最後に、custom.cssで、[attribute ^ = value]セレクターと!important宣言を使用します。

p span[style^="font-family: arial"] {
  font-family: "Times New Roman", Times, serif !important;
}

文字列と明確に一致するのに十分なだけ、スタイル属性値全体を引用する必要はないことに注意してください。


0

私の知識によると、インラインスタイルが最初に来るので、cssクラスは機能しないはずです。

Jqueryを次のように使用します

$(document).ready(function(){

   $("#demoFour li").css("display","inline");
  });

You can also try 

#demoFour li { display:inline !important;}

0

JavaScriptを使用します。

例えば:

var elements = document.getElementById("demoFour").getElementsByTagName("li");
for (var i = 0; i < elements.length; i++) {
    elements[i].style.display = "inline";
}

0

要素スタイルの問題のあるプロパティを参照することで、cssのスタイルをオーバーライドできます。私の場合、これら2つのコードは15pxに設定されており、背景画像が黒くなります。だから、私はそれらを0pxでオーバーライドし、!importantを配置したので、それが優先されます

.content {
    border-bottom-left-radius: 0px !important;
     border-bottom-right-radius: 0px !important;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.