为什么添加 DOCTYPE 会影响 CSS 中 DIV 的居中?

pat*_*ick -1 html css centering

我想做的只是使用 CSS 将 div 居中。我无法理解它。它根本不起作用。我使用了以下代码:

<style type="text/css">
<!--
div.test {
    width: 300px;
    margin-right: auto;
    margin-left: auto;
    border: 1px solid black;
}

-->
</style>
<div class='test'>
hello
</div>
Run Code Online (Sandbox Code Playgroud)

这在 IE 上不起作用,但在其他任何东西上都起作用(包括我的 iPhone,这让它非常令人沮丧)。div 只是保持在右侧对齐。

现在来说说(简单!)解决方案,这花费了我很多时间,而且我无法在搜索引擎中搜索问题找到该解决方案。只需添加文档类型即可:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
Run Code Online (Sandbox Code Playgroud)

为什么解决了这个问题?

bob*_*nce 5

是的,如果您省略该<!DOCTYPE>声明,您就会遇到可怕的Quirks Mode,在这种模式下,出于兼容性原因,IE 会尝试尽可能地表现得像 IE5。

不支持margin-left/right: auto是 IE5 CSS 中最突出的错误之一,但绝不是唯一的一个,甚至不是最严重的。Quirks 模式 CSS 渲染是一个令人头疼的问题,您应该不惜一切代价避免。始终在每个 HTML 文档中包含<!DOCTYPE>