我正在尝试这个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>
Run Code Online (Sandbox Code Playgroud)
在Firefox中,它工作正常:绿色背景.在Internet Explorer中:它不起作用:也是绿色背景.
如果我删除doctype,它在两者中都可以正常工作.我尝试了不同的doctypes但总是同样的问题.
我能做什么 ?
好的我知道这个例子很愚蠢,但解释问题要容易得多.问题是:为什么css hack似乎无法使用doctype定义?
那里没有黑客.有一个!important声明,它是标准的CSS,但IE5不能正确支持.
如果你拿走doctype,IE将进入quirks模式,这基本上是IE5模拟模式.因此它将使用IE5 CSS规则,这意味着它!important不起作用(以及一大堆其他功能).
因此,如果没有doctype,在quirks模式下,它会忽略!important,因此两个规则都具有相同的优先级,因此使用第二个(red).
使用doctype,浏览器将处于标准模式,并!important按照应该的方式工作,这意味着它green优先,因为它是"重要的".
我仍然没有得到你想要达到的目标,但希望能够向你解释发生了什么.