3

次のように呼び出される2つのスタイルシートにリンクするHTMLページがある場合:

<link rel="stylesheet" href="original.css" media="screen, projection" />
<link rel="stylesheet" href="override.css" media="screen, projection" />

これらの2つのファイルがまったく同じスタイル名を定義している場合original.css、スタイル設定されたページの結果に影響を与えず、すべてのスタイルがで定義されたスタイルから取得されるというのは本当override.cssですか?

私が尋ねる理由はこれです:私はoriginal.css変更できないものがあり、このファイルを呼び出すコードの行に触れたくありません。代わりに、オリジナルが呼び出された直後に新しいファイルへの呼び出しを挿入し、オリジナルで定義されているすべてをオーバーライドしたいと思います。これがうまくいくかどうか、それが賢明かどうかなどはわかりません。

4

4 に答える 4

4

はい、うまくいきます。しかし、それは実際にはお勧めできません。コードの元の行に「触れない」代わりに、その周りにコメントタグを挿入できますか?

于 2009-06-28T06:09:10.780 に答える
4

うん、それは確かにできる。これが、カスケードスタイルシートのカスケードビットです。

でも、original.cssを削除したり、出力したりできないのはなぜですか。オリジナルのすべてを完全にオーバーライドするための非常に大きなハンマーのアプローチのようです:-)実際にoriginal.cssとoverride.cssを出力する場合、ブラウザは単に出力する場合よりもはるかに多くの作業を行う必要がありますoverride.css。

于 2009-06-28T06:09:35.070 に答える
1

上書きされたものはすべて上書きされますが、すべてを補完するのは同じではありませんが、クラス、ID、疑似セレクターなどに適用される情報が異なります。つまり、IE:

original.css-

p { margin: 4px 6px 10px 12px; }
h1 { font-size: 2.2em }

override.css-

p { padding: 6px; color: #666666; }
h1 { font-size: 1.5em }

私が言ったことは、スタイルが互いに競合していないため、Pはoverride.cssで補完されているということです。一方、H1の例は実際に上書きされ、各スタイルシートの2つのルールが競合しているため、最後の宣言が優先されます。

これは想像できるほど悪くはありません...私は数ヶ月前に、スタイルやデータなどが組み込まれたマッドハウスであるmoodleのサイトを終了しました。テンプレートは、DEFAULTテンプレート、次にPAGEテンプレート、次にCOURSEのスタイルシートデータを使用しました。自分で変更する正しいコードが見つからないためにストレスを感じていたスタイルがどのようなものであるかを理解しようとしたとき、最終的に、新しい上書きスタイルと新しい補完スタイルを使用して自分のスタイルシートを添付することにしました。これにより、デザイナーの夢にも思わないコードのインフェルノを掘り下げるのに約2週間節約できました。

これがより明確なアイデアを得るのに役立つことを願っています。

さよなら。

于 2009-07-20T20:10:32.890 に答える
1

この必要性の良い例はSharepointです。テーマを編集すると、core.cssクラスからオーバーライドする必要のある多くの変更が残ります。

于 2010-03-30T13:24:47.133 に答える