带有display:table的Internet Explorer 8错误

时间:2010-09-21 21:37:40

标签: css internet-explorer internet-explorer-8

我有一个最奇怪的错误......我正在尝试使用display:table,我的概念验证在打开一个新进程后的第一次尝试中起作用,但任何后续的页面重新加载都会破坏设计。这是简单的HTML页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
    <style>
        .container {
            display: table;
        }

        .row {
            display: table-row;
        }

        .cell {
            display: table-cell;
            width: 100px;
            height: 100px;
            border: 1px solid blue;
            padding: 1em;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="cell">CELL A</div>
            <div class="cell">CELL B</div>
            <div class="cell">CELL C</div>
        </div>
    </div>
</body>
</html>

这是预期的结果,这是我第一次加载后得到的结果。

alt text

现在这是我重新加载页面后得到的,用F5:

alt text

太疯了!!!

有人可以试一试,让我知道它是如何产生的吗?谢谢。我希望在我阅读解决方案时我不会自杀: - )

2 个答案:

答案 0 :(得分:18)

事实证明,正如一些人所建议的那样,IE的兼容模式是以某种方式触发的。

我发现这是因为我在Intranet上运行该页面,默认情况下,Intranet网站启用了兼容模式。

这可以通过转到工具&gt;来禁用。兼容性视图设置并取消选中“兼容性视图”框中的“显示Intranet站点”。当然,这不是你想要让所有用户都这么做的事情,所以建议我添加

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
标题中的

,效果很好。

有关详情:http://msdn.microsoft.com/en-us/library/cc288325%28VS.85%29.aspx

答案 1 :(得分:6)

浏览器处于兼容性视图时的问题。 (按照taylorjes的建议)

当页面以普通视图显示时,单元格是水平的。在兼容性视图中显示时,单元格是垂直的。

正如我在评论中所说,我强烈反对显示:( table / table-row / table-cell)CSS属性。它没有得到很好的支持,必然会有怪癖。

老实说,如果您显示的是表格数据,那么然后使用表格。当用于布局时,表格只是邪恶的。