内联块:Firefox 4与IE 9

Ale*_*dre 7 css firefox internet-explorer

我很困惑为什么IE9以令人惊讶的方式解释这种基本行为.在Firefox 4或Chrome 11中,我看到div正如我所期望的那样并排出现.但是在IE9中,我看到div出现在另一个之下.

<div style='border: black solid 1px'>
   <div style='display: inline-block; width: 10em; height: 1em; background-color: red'>
      block one
   </div>
   <div style='display: inline-block; width: 10em; height: 1em; background-color: green'>
      block two
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我确信IE9符合标准,所以我错过了什么?

任何帮助,将不胜感激!

更新:哇,这很奇怪.我以前没有DOCTYPE声明.我<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">在页面顶部添加的那一刻 ,IE9工作正常,就像Firefox和Chrome一样.任何想法之前的情况是什么?

Bol*_*ock 14

我唯一能想到的是IE9使用兼容性视图(类似于IE7的渲染引擎,如果我没有错)来渲染你的页面.如果关闭兼容性视图,您将看到这些框按预期水平堆叠.

只有IE8和更新版本才有完全支持display: inline-block.IE7及更早版本将它应用于默认情况下内联的元素(如span),而不是任何其他元素(如lidiv).因此,块元素仍显示为块,而不是内联块.

更新:哇,这很奇怪.我以前没有DOCTYPE声明.我<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">在页面顶部添加的那一刻,IE9工作正常,就像Firefox和Chrome一样.任何想法之前的情况是什么?

这很简单:在添加doctype声明之前,IE9在怪异模式下渲染.在怪癖模式中,IE display: inline-block就像在旧版本中那样对待,正如我在上面的段落中所解释的那样.通过拥有doctype声明,IE9将以标准模式呈现,按预期呈现样式.