4

IE8 を使用して、開発者ツールのブラウザー モード機能を介して IE7 を表示すると、CSS に関する奇妙な問題が繰り返し発生します。外部スタイルシートに変更を加えて、HTML でそのクラスを参照すると、IE7 がそれをまったく認識しないようです。ただし、同じスタイリングをインラインにすると、IE7 はそれに従います。誰もこれについて聞いたことがありますか?私が言っていることを説明するのに役立つ簡単な例を次に示します。

外部スタイルシート:

.bold {
    font-weight:bold;
}

HTML で呼び出す:

<p class="bold">My paragraph here</p>

IE7 では変更は有効になりませんが、他のすべてのブラウザーは問題ありません。

ただし、次のようにします。

<p style="font-weight:bold;">My paragraph here</p>

IE7はうれしそうです。違いは何ですか?本当にこの方法で CSS を変更する必要がありますか? それとも別の回避策がありますか?

問題が何であるかについて私は困惑しています。開発者ツールのブラウザー モードに癖があり、IE7 の実際のバージョンと同じように機能しないのか、それともまったく異なるものなのかはわかりません。私は IE8 を使用しています (この政府のコンピューターでは IE9 にアップグレードできません)。

HTML5 doctype () を使用して HTML を生成するために ColdFusion を使用しています。2 つの外部スタイルシート参照にタイムスタンプ パラメーターを追加したので、ブラウザーは毎回新しいコピーを取得する必要があります。

このミステリーの助けをいただければ幸いです - ありがとうございます!

====== @Stanoまたは正確な問題を再現することに興味がある他の人のために、ここにそれの簡素化されたバージョンがあります: https://docs.google.com/open?id=0B02DZPpIlMwGSk1VZHRDUHNCTkU (ファイル>をクリックできますダウンロードしてzipを入手してください)。IE7 では、"Photographer" はインライン スタイルであるため問題ありませんが、他のものは何も取得していないことに注意してください。

4

1 に答える 1

1

あなたのコメントに関しては、キャッシングの問題である可能性があると言っているのは正しいですが、そのスタイルシート (そうではないように見えますが)、別のスタイルシート、または無効な HTML の問題である可能性もあります。

CSS と HTML がどのように相互作用するかについての理解に影響を与える可能性があるため、修正したいことの 1 つは、 HTML 要素の属性が CSS を呼び出さclassないことです。むしろ、CSS ルールはブラウザ エージェントに、特定の属性を持つものをレンダリングする方法を指示します。これが、要素 ID、名前、グループ名、クラス、およびその他の値を使用して、どの要素をどのクラスに適用するかを識別することができる理由です。

これについて言及したのは、無効な HTML (終了タグの欠落、矢印の欠落など) がある場合、あらゆる種類の奇妙なことができるからです。数日前、間違ったタグが実際にページの 1 つで私のスクリプトをループさせていた問題を解決するのに役立ちました。

W3C Markup Validatorを使用して HTML を検証してください。

于 2012-07-31T17:32:56.747 に答える