システムの1つにあるすべてのテキストを、1つのフォントタイプで強制的に表示したいと思います。ただし、さまざまな形式のインラインスタイルを持つテキストを貼り付けることがよくあります。
スタイルシートで要素のインラインスタイルを上書きできますか?'!important'はこれには十分ではありません!
!important
指定子を使用してすべての関連要素にフォントファミリを割り当てるCSSコードを使用して、インラインスタイルをオーバーライドできます。
* { font-family: Calibri !important; }
たとえば要素だけにフォントを設定するだけでは不十分ですbody
。内部要素のフォントは、適用可能なルールによって制御されるためです。内部要素は、CSSルールが内部要素にフォントを設定しない場合にのみ、親からフォントを継承します。
誰かがを持っているインラインスタイルを注入できる場合!important
、CSSでそれを打ち負かすことはできません。style
JavaScriptを使用してドキュメントを操作し、属性を削除または変更する必要があります。
インラインスタイルが最高を支配します。
これは可能ですが、JavaScriptを使用して行う必要があります。コードは基本的に、貼り付けられたコードからすべてのインラインスタイルステートメントを削除する必要があります。これはとにかく良い考えです、あなたは人々が何を貼り付けるかを決して知りません。
jQueryの使用:
$('.wrapper *').removeAttr('style');
...コンテンツが「ラッパー」のクラスを持つdiv内にある場合
これにはJavaScriptは必要ありません。あなたの言うことにもかかわらず、!important
確かに十分です。
テストケース: http: //jsfiddle.net/jezen/Z4rnv/
説明:CSSルールは、レイアウトエンジンによって計算される特異性のレベルに基づいて選択されます。!important
ルールは、すべてを圧倒する修飾子ではありません。特異性階層のそれぞれのルールに重みを追加するだけです。
jQueryの属性削除関数を使用するとうまくいくはずです。
removeAttr( 'style' );
私は他の2つの答えの非特定的な性質に満足していませんでした。
* { font-family: Calibri !important; }
常に機能するとは限りません。スパンを処理する場合など、より具体的にする必要がある場合もあります。
span { font-family: Calibri !important; }
値に重要なものを追加しているので、十分に具体的です。
また、フォントスタイリングのタイプも重要です。最初のフォントスタイリングがfont-familyやfont-sizeなどのフォントを使用していた場合は、すでにより具体的であるため、
span { font:15px arial,sans-serif; !important; }
のインラインスタイルを上書きしません
<span style="font-family: Calibri">Hello World</span>