我已经看到了一个非常简单的任务的多个问题:如何在div中垂直对齐图像。
我的代码(http://jsfiddle.net/3cYtX/1/)非常简单:
.container {
width:200px;
height:200px;
background-color: green;
}
img.middle {
vertical-align:middle;
}
<div class="container">
<img class="middle" src="test.gif" width="80" height="40" />
</div>
我的代码没有对齐图片。如何解决?
答案 0 :(得分:3)
您可以使div的行为类似于表格单元格:
演示:http://jsfiddle.net/abhitalks/3cYtX/5/
.container {
display: table-cell; /* make it behave like a table cell */
vertical-align: middle; /* make it align contents vertically */
text-align: center; /* make it align contents horizontally */
}
注意:正如James在评论中指出的那样,设置为table-cell
的元素理想情况下应该是显示table
或table-row
的元素的内容。例如http://jsfiddle.net/abhitalks/3cYtX/8/
答案 1 :(得分:1)
img
个元素是inline
个内容。这意味着您只需将.container
元素设为line-height
等于height
和中心文字对齐:
.container {
...
line-height: 200px; /* Because height is 200px. */
text-align: center;
}
答案 2 :(得分:0)
.container{
vertical-align: middle;
text-align: center;
line-height: 200px;
}
答案 3 :(得分:0)
如果它是表格单元格,它只会垂直对齐:Mozilla Developer Network
.container {
display: table-cell;
vertical-align: middle;
}
还有其他方法:Link
.element {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%); /* Sorry had */
-ms-transform: translateY(-50%); /* to add these, then */
transform: translateY(-50%); /* it should center perfectly */
}
另外,这被提到是important:&#34;正如一些人所指出的,这种方法会导致元素模糊,因为元素被放置在“半像素”上”。对此的解决方案是将其父元素设置为preserve-3d。如下:&#34;
.parent-element {
-webkit-transform-style: preserve-3d;
}