2011-12-09 55 views
0

我得到了这个页面,它在Chrome中运行正常,并且它不在IE9中。IE9 CSS兼容性和DOCTYPE语句

我试着为IE9页面制作一个新的CSS,在html代码中使用条件注释。没关系。

但后来我想,包括doctype声明...并会发生以下情况:

  • ,当我在HTML文件中的文档类型,一切都 (甚至在Chrome)搞砸了,但一旦我删除它,该页面在Chrome和IE9中看起来很棒 。
  • 如果我重新启动IE9(或删除临时数据),页面不会再次工作 。

我真的不知道发生了什么事。

任何帮助将非常感激。

回答

3

正如前面所说的,总是使用文档类型。没有一个,IE以怪癖模式呈现,你得到的将与你在其他浏览器中得到的有很大不同。

如果你的代码看起来不好用文档类型,那么我会建议你的代码是不好的开始。你已经设计了你的网站quirksmode,这会给你看起来随机的结果(他们不是,但它似乎是这样)。

您将不得不重新设计您的网站以使用标准模式。然后它会在所有现代浏览器中看起来相同(或类似)。

+0

感谢您的回答,它看起来必须对我的html/css进行重大重构。无论如何,真的很好奇,如果我指定一个DTD然后删除它,直到关闭浏览器,它才能真正有效。有没有解释呢? –

3

首先,您应该始终包含一个doctype。它告诉浏览器你将要玩的规则。

如果省略doctype,IE就会认为你的标记是古老的,并引发Quirks Mode,这基本上是IE 5.5的渲染。这个副作用包括IE box model bug

没有看到任何标记,我强烈建议使用W3C验证器validating your markupCSS。很多时候,Chrome和FireFox在猜测有问题的标记的意义​​上“更好”,IE并非如此。

+0

如果浏览器在处理有问题的标记时更严格,99%的网站看起来会好上千倍;) –

0

首先,很难找到没有看到您的HTML/CSS的解决方案。一般来说,你不应该需要IE的单独的CSS文件...

另外我建议你尝试使用HTML5 Boilerplate来帮助最大限度地减少浏览器的不一致。这应该可以解决大多数问题,除非它是CSS中的错误。