我想设置一个div中图像的垂直对齐方式。我使用了img { vertical-align:middle },但是它没有起作用。
我想设置一个div中图像的垂直对齐方式。我使用了img { vertical-align:middle },但是它没有起作用。
使用 line-height
属性可以解决这个问题:
<style>
.someclass {
width: 300px;
height: 300px;
text-align: center;
line-height: 300px;
border: dotted;
}
.someclass img {
margin: auto;
vertical-align: middle;
}
</style>
<div class="someclass">
<img src="someimg.jpg" border="0" alt="">
</div>
display: table-cell
分配给包含table-cell
值的支持相当新,特别是在Firefox中。我知道它在Firefox 4中有效,但我不知道任何3.x版本的情况。您还需要在IE中进行测试(我只在Chrome 10和Firefox 4中进行了测试)。 div#container {
width: 700px;
height: 400px;
position: relative;
border: 1px solid #000;
display: table-cell;
vertical-align: middle;
}
div#container img {
margin: 0 auto;
display: block;
}
div#container img
样式。#container { position: relative; }
#container img {
position: absolute;
left: 50%;
top: 50%;
margin-top: /* -1/2 the height of the image */
margin-left: /* -1/2 the width of the image */
}
请参考此答案:如何将图像在 div 内垂直对齐
如果您还想水平对齐,可以添加right
和left
,像这样:
div {
position:relative;
}
img {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
margin:auto;
}
如果您将
display
属性设置为table-cell
,那么vertical-align: middle;
就会起作用。
vertical-align
规则仅影响表格单元格或具有display: table-cell
属性的元素。
请参阅SitePoint文章以获取详细解释。
<style>
/* change body to .someClasses's parent */
body {
width: 100%;
height: 100%;
display: table;
}
body > .someclass {
width: 300px;
height: 300px;
text-align: center;
border:dotted;
margin: 0 auto
display: table-cell;
vertical-align: middle;
}
</style>
<body>
<div class="someclass">
<img src="someimg.jpg" border="0" alt="">
</div>
</body>
此外,根据您测试的IE版本,您可能需要一些特定于浏览器的hack或一些jQuery / JavaScript代码。
如果必须这样做,请使用一个行列均为一的表格,并利用vertical-align
属性。 这是强制性的,不太语义化,但它有效。