如何将div放在另一个div的中心?

Mor*_*eng 3 html css

我想在另一个div的中心水平放置一个div.

    <div id="container">
        <div id="centered">
            hello world;
        </div>
    </div
Run Code Online (Sandbox Code Playgroud)

我用"margin:0px auto"技巧尝试了以下风格,但它只适用于FF,而不适用于IE.

    div
    {
        border-width: 2px;
        border-style: solid;
    }
    #centered
    {
        margin: 0 auto;
        width: 30px;
    }
    #container
    {
        width: 100px;
        }
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个跨浏览器?

Pao*_*ino 11

您可能没有在文档中包含DOCTYPE,因此将IE推入怪癖模式.

将其添加到文件的顶部,例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)

请参阅此处的区别:使用doctype,不使用doctype.

始终在文档中包含DOCTYPE以使您的网站在不同浏览器中尽可能保持一致是一种非常好的做法.使用DOCTYPE和重置样式表,跨浏览器布局更加可靠.

上述DOCTYPE只是众多选择中的一种.有关更多信息,请查看此stackoverflow问题

您可能还注意到Stackoverflow的姊妹网站以网页设计的这个非常重要的方面命名:Doctype.


cle*_*tus 5

请参阅Quirks模式和严格模式以及使用Doctype激活浏览器模式.基本上它是一个很好的做法,迫使浏览器(IE尤)更符合标准的通过始终使用DOCTYPE的文件,这样的顶部:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
Run Code Online (Sandbox Code Playgroud)

所有浏览器都将水平居中margin: 0 auto.

编辑:这个问题最初说"垂直居中,因此答案如下:

CSS中的垂直居中:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
  <title>Universal vertical center with CSS</title>
  <style>
    .greenBorder {border: 1px solid green;} /* just borders to see it */
  </style>
</head>

<body>
  <div class="greenBorder" style="display: table; height: 400px; #position: relative; overflow: hidden;">
    <div style=" #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
      <div class="greenBorder" style=" #position: relative; #top: -50%">
        any text<br>
        any height<br>
        any content, for example generated from DB<br>
        everything is vertically centered
      </div>
    </div>
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

基本上,它涉及相对+绝对+相对定位(而其具有表格单元格内容的平凡)是复杂的.