-4

私はこのhtmlコードを試しています

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style type="text/css">
body { background-color : green !important; background-color : red; }
</style>
</head>
<body>
Hello World !
</body>
</html>

Firefox では、正常に動作しています: 緑色の背景。Internet Explorer では: 動作していません: 背景も緑色です。

doctype を削除すると、両方で正常に動作します。さまざまな doctypes を試しましたが、常に同じ問題が発生します。

私に何ができる ?

4

1 に答える 1

5

この例がばかげていることはわかっていますが、問題を説明する方がはるかに簡単です。問題は、CSS ハックが doctype 定義で機能しないように見えるのはなぜですか?

そこにはハックはありません。標準 CSS である宣言があり!importantますが、IE5 では適切にサポートされていません。

doctype を削除すると、IE は基本的に IE5 エミュレーション モードである quirks モードになります。したがって、IE5 の CSS ルールが使用されます。つまり、これは機能し!importantません (他の多くの機能と共に)。

したがって、doctype がないと、quirks モードでは が無視され!important、両方のルールの優先順位が同じになり、2 番目のルール ( red) が使用されます。

doctype を使用すると、ブラウザは標準モードになり、!important本来あるべき方法で動作します。つまり、green「重要」であるため優先されます。

あなたが達成しようとしていることはまだわかりませんが、何が起こっているのかを説明してくれることを願っています.

于 2013-10-23T12:29:02.197 に答える