1

如果我不知道图像的宽度,如何将 img 与 div 或表格单元格中的绝对定位居中对齐?

例如

<div style="position: relative">
    <img style="position: absolute" />
</div>
4

4 回答 4

6

将元素水平和垂直对齐到相对父级。

<div style="position: relative">
    <img class="centered" />
</div>

.centered {
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    -o-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

'top' 和 'left' 设置为 50% 将使元素的左上角居中。X 和 Y 的平移为 -50%,将元素设置为父元素的确切中心。

如需浏览器支持,请查看此处: Translate2d - caniuse.com

于 2013-07-17T11:07:20.490 回答
2

您可以使用负边距技巧,假设您知道图像的尺寸:

img{
   top:50%;
   left:50%;
   margin-left  : -(<imagewidth>/2)px;
   margin-height: -(<imageheight>/2)px;
}

当您仅针对支持该calc()功能的浏览器时,您可以执行以下操作:

img{
   top:  calc(50% - <imagewidth>/2px);
   left: calc(50% - <imageheight>/2px);
}

当浏览器支持翻译时,您可以翻译 -50% 的图像尺寸:

img{
    top: 50%;
    left: 50%;
    position: absolute;
    transform: translate(-50%, -50%);
}

如果这些都不可能,你最后的手段是改变标记和display:table

<div>
  <div>
    <img />
  </div>
</div>

div{height:100%;width:100%;
   display:table;
   text-align: center;
   vertical-align: middle;}
div>div{
    display:table-cell;
}

最新案例见Demo

于 2013-07-17T11:05:20.023 回答
0
img {
display: block;
margin: 0 auto;    
}

检查这个JSFIDDLE1

或者

div {
position: relative;
text-aligm: center;
width:2000px;
}

img {
position: absolute;
}

检查这个JSFIDDLE2

于 2013-07-17T11:04:41.367 回答
0

使图像垂直居中的简单方法

如果你知道 div 的高度。然后你可以将图像作为垂直对齐。

div{
    text-align:center;
    height:150px;
    line-height: 150px;
}

img{
   vertical-align: middle;
}
于 2015-12-28T08:08:28.217 回答