HTML Doctype& css hack

时间:2013-10-23 12:12:06

标签: html css

我正在尝试这个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,但总是遇到同样的问题。

我该怎么办?

1 个答案:

答案 0 :(得分:5)

  

好的,我知道这个例子很愚蠢,但解释问题要容易得多。问题是:为什么css hack似乎无法使用doctype定义?

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

如果你拿走doctype,IE将进入怪癖模式,这基本上是IE5模拟模式。因此,它将使用IE5 CSS规则,这意味着!important不起作用(以及一大堆其他功能)。

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

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

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