0

システムの1つにあるすべてのテキストを、1つのフォントタイプで強制的に表示したいと思います。ただし、さまざまな形式のインラインスタイルを持つテキストを貼り付けることがよくあります。

スタイルシートで要素のインラインスタイルを上書きできますか?'!important'はこれには十分ではありません!

4

5 に答える 5

4

!important指定子を使用してすべての関連要素にフォントファミリを割り当てるCSSコードを使用して、インラインスタイルをオーバーライドできます。

* { font-family: Calibri !important; }

たとえば要素だけにフォントを設定するだけでは不十分ですbody。内部要素のフォントは、適用可能なルールによって制御されるためです。内部要素は、CSSルールが内部要素にフォントを設定しない場合にのみ、親からフォントを継承します。

誰かがを持っているインラインスタイルを注入できる場合!important、CSSでそれを打ち負かすことはできません。styleJavaScriptを使用してドキュメントを操作し、属性を削除または変更する必要があります。

于 2012-09-20T21:39:05.567 に答える
2

インラインスタイルが最高を支配します。

これは可能ですが、JavaScriptを使用して行う必要があります。コードは基本的に、貼り付けられたコードからすべてのインラインスタイルステートメントを削除する必要があります。これはとにかく良い考えです、あなたは人々が何を貼り付けるかを決して知りません。

jQueryの使用:

$('.wrapper *').removeAttr('style'); 

...コンテンツが「ラッパー」のクラスを持つdiv内にある場合

于 2012-09-20T21:26:26.683 に答える
2

これにはJavaScriptは必要ありません。あなたの言うことにもかかわらず、!important確かに十分です。

テストケース: http: //jsfiddle.net/jezen/Z4rnv/

説明:CSSルールは、レイアウトエンジンによって計算される特異性のレベルに基づいて選択されます。!importantルールは、すべてを圧倒する修飾子ではありません。特異性階層のそれぞれのルールに重みを追加するだけです。

于 2012-09-20T21:28:16.097 に答える
0

jQueryの属性削除関数を使用するとうまくいくはずです。

removeAttr( 'style' );
于 2012-09-20T21:28:39.763 に答える
0

私は他の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>

于 2013-10-02T15:39:31.163 に答える