-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,它在两者中都可以正常工作。我尝试了不同的文档类型,但总是同样的问题。

我能做些什么 ?

4

1 回答 1

5

好的,我知道这个例子很愚蠢,但更容易解释问题。问题是:为什么 css hack 似乎不适用于 doctype 定义?

那里没有黑客。有一个!important声明,它是标准的 CSS,但 IE5 没有正确支持。

如果去掉 doctype,IE 将进入 quirks 模式,这基本上是一种 IE5 仿真模式。因此它将使用 IE5 CSS 规则,这意味着它!important不起作用(以及一大堆其他功能)。

因此,如果没有 doctype,在 quirks 模式下,它会忽略!important,因此您的两个规则具有相同的优先级,因此使用第二个 ( red) 。

使用 doctype,浏览器将处于标准模式,并!important按照它应该做的方式工作,这意味着green优先,因为它是“重要的”。

我仍然没有得到你想要达到的目标,但希望这能向你解释发生了什么。

于 2013-10-23T12:29:02.197 回答