我正在尝试这个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,但总是遇到同样的问题。
我该怎么办?
答案 0 :(得分:5)
好的,我知道这个例子很愚蠢,但解释问题要容易得多。问题是:为什么css hack似乎无法使用doctype定义?
那里没有黑客。有一个!important
声明,它是标准的CSS,但IE5不能正确支持。
如果你拿走doctype,IE将进入怪癖模式,这基本上是IE5模拟模式。因此,它将使用IE5 CSS规则,这意味着!important
不起作用(以及一大堆其他功能)。
因此,如果没有doctype,在quirks模式下,它会忽略!important
,因此两个规则都具有相同的优先级,因此使用了第二个(red
)。
使用doctype,浏览器将处于标准模式,!important
将按其应有的方式工作,这意味着green
优先,因为它“重要”。
我仍然没有得到你想要达到的目标,但希望这可以向你解释发生了什么。