如何使用CSS水平居中绝对div?

Cor*_*eDo 172 html css center absolute

我有一个div,希望它能够水平居中 - 虽然我给它margin:0 auto;它没有居中......

.container {
    position: absolute;
    top: 15px;
    z-index: 2;
    width:40%;
    max-width: 960px;
    min-width: 600px;
    height: 60px;
    overflow: hidden;
    background: #fff; 
    margin:0 auto;
}
Run Code Online (Sandbox Code Playgroud)

thg*_*ell 394

你需要设置left: 0.

这指定了从窗口边缘偏移边缘边缘的距离.

http://www.w3.org/TR/CSS2/visuren.html#position-props


http://jsfiddle.net/SS6DK/

CSS

.container {
  left:0;
  right:0;

  margin-left: auto;
  margin-right: auto;

  position: absolute;
  width: 40%;

  outline: 1px solid black;
  background: white;
}
Run Code Online (Sandbox Code Playgroud)

注意:您必须定义right: 0或此答案不起作用.这意味着这个答案对于具有动态宽度的元素没有用.

  • 注意:**`width`**是必须的! (34认同)
  • @AlexG我只是在IE11中加载小提琴并且它有效.你能澄清一下吗? (3认同)
  • 是的。这是正确的......使用“文本对齐:居中;” 和一个“左:0;右:0;” 将允许您绝对定位一个 div,同时保持它水平居中。 (2认同)
  • 还需要 `margin: auto` 才能在我们的案例中工作 (2认同)

Ade*_*del 119

这在IE8中不起作用,但可能是一个需要考虑的选项.如果您不想指定宽度,它主要是有用的.

.element
{
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}
Run Code Online (Sandbox Code Playgroud)

  • 这是美...当你没有固定的宽度时工作! (7认同)
  • 此时,还需要一个带有-webkit-前缀的规则才能在Safari中使用它. (3认同)
  • 这绝对是答案。对我来说,专门设置宽度是绝对不行的。 (2认同)

Met*_*ani 13

虽然上面的答案是正确的,但为了使新手简单,你需要做的就是设置左右边距.如果设置了width并且position是绝对的,以下代码将执行此操作:

margin: 0 auto;
left: 0;
right: 0;
Run Code Online (Sandbox Code Playgroud)

演示:

.centeredBox {
    margin: 0 auto;
    left: 0;
    right: 0;
   
   
   /** Position should be absolute */
    position: absolute;
    /** And box must have a width, any width */
    width: 40%;
    background: #faebd7;
   
   }
Run Code Online (Sandbox Code Playgroud)
<div class="centeredBox">Centered Box</div>
Run Code Online (Sandbox Code Playgroud)


小智 10

.centerDiv {
    position: absolute;
    left: 0;
    right: 0;
    margin: 0 auto;
    text-align:center;
}
Run Code Online (Sandbox Code Playgroud)


Ron*_*ton 5

Flexbox的?您可以使用flexbox.

.box {
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  
  -webkit-justify-content: center;
  justify-content: center;

}

.box div {
  border:1px solid grey;
  flex: 0 1 auto;
  align-self: auto;
  background: grey;
}
Run Code Online (Sandbox Code Playgroud)
<div class="box">
  <div class="A">I'm horizontally centered.</div>
</div>
Run Code Online (Sandbox Code Playgroud)