0

ページにdivがあります。問題は、グローバルulやテーブルスタイルなどのスタイルシート(スタイルシートA)からグローバルスタイルを継承することですが、この単一のdivでは継承しないようにします。問題のdivは、別のスタイルシート(スタイルシートB)からのみスタイルを取得する必要があります。現在、彼らは衝突しています。

スタイルシートAに触れることなくこれを行う方法はありますか?これは、スタイルシートAが私のサイトのすべての主要なスタイルを制御しており、サイトが十分に大きいため、変更によって何かが壊れる可能性があるためです。問題のdivはサイトに関連のないデータを保持しているため、スタイルシートAは必要ありません。

それが役立つ場合、私はjavascriptプロトタイプを使用していますか?Jqueryはありません:)

iframeの使用はどうですか?これは有効な解決策であり、どのように機能しますか?

すべての助けは大歓迎です。

4

3 に答える 3

1

繰り返されるスタイルは、常に最後に読み取ったスタイルを適用します。

あなたがこのスタイルを持っていると仮定.class { background-color: red; }します:あなたのスタイルシートAに、そしてこれはBにあります:.class { background-color: blue; }

したがって、Bの前にスタイルシートAを呼び出す場合は、次のようになります。

<link href="sheet_a.css" rel="stylesheet" type="text/css" />
<link href="sheet_b.css" rel="stylesheet" type="text/css" />

次に、適用されるスタイルは.class { background-color: blue; }、ブラウザが最後に読み取るスタイルであるためです。

これが機能しない場合(スタイルシートが別の順序で呼び出されている場合、またはAのスタイルがBのスタイルよりも具体的であるため、Aがまだ適用されている場合)、!importantタグを使用できます。

.class { background-color: blue !important; }元のスタイルにも!importantがない限り、Aのスタイルを上書きします。

変更したい要素が1つだけの場合は、必ずしも新しいスタイルシートは必要ありません。<style></style>HTMLヘッドのタグの間に新しいスタイルを設定することも、要素( <div style="background-color: blue;"></div>)のインラインに設定することもできます。インライン要素は、外部シートの要素よりも関連性があります。

于 2012-10-30T02:59:30.200 に答える
1

おそらくこれを行う最も簡単な方法は、divがスタイルシートAから継承するすべてのスタイル属性を単純に把握し、それらのスタイルをスタイルシートBで手動でオーバーライドすることです。

divをiframeに入れたい場合は、それも機能するはずです。そのdivには、メインページと同じドメインでホストされる独自のHTMLファイルが必要です(そうしないと、セキュリティの問題が発生します)。divページのstylesheetBにリンクすると、機能します。ただし、iframeのスタイリングでいくつかの問題が発生します。親ドキュメントから子ドキュメントのCSSプロパティを読み取ることはできないため、iframeを固定の幅と高さにする必要があります。これは、多くのシナリオで制限されます。iframeをスクロールさせることもできると思いますが、それも望まないかもしれません。

これを行う最良の方法は、Chrome Inspect Element、またはFirefoxのFirebugを使用して、divが受け取っているCSSの継承を確認することだと思います。

于 2012-10-29T18:42:42.097 に答える
0

html構造でインラインスタイルを使用するか、スタイルシートb!importantで必要なルールを追加して、スタイルシートaのスタイルをオーバーライドできます。

たとえば、スタイルシートbでは、次のようにします。

.element {background:red !important}
于 2012-10-31T12:07:21.730 に答える