div内垂直对齐,垂直对齐:中间不工作

时间:2011-12-03 06:34:37

标签: html css vertical-alignment

垂直对齐:中间;没有用。

From css file :
#header {height:150px; text-align: center; vertical-align: middle;}

<div id="header">
    <img alt="" id="logo" src="images/logo.png" />
</div>

如果有助于将徽标与包装div的中心对齐,我会将徽标包装在另一个div中。

6 个答案:

答案 0 :(得分:18)

这样做

#header {display:table;}
#logo {display:table-cell; vertical-align:middle;}

Reference

答案 1 :(得分:5)

您只能通过填充来执行此操作,因为其他两种方式line-height和vertical-align无法在img上运行....

#logo
{
padding: 20px 0;
}

20px可以是您需要的任何内容。

答案 2 :(得分:0)

我喜欢这样做:

<div style="relative">
<img alt="" id="logo" src="images/logo.png" style="position: absolute; top:50%; top-margin:-75px"/>
</div>

答案 3 :(得分:0)

另一种选择,虽然它有其局限性:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
   <div style="height:150px; text-align: center;">
      <img src="/centerme.jpg" style="position: relative; top: 50%; margin-top: -25px;" />
   </div>
</body>
</html>

负边距应为图像高度的一半。因此,以下图片将以上述HTML为中心:

enter image description here

如果碰巧有一个改变高度的div,这会使居中动态。但是相对定位可能会有点棘手,因为图像是从正常的布局流程中取出的。

答案 4 :(得分:0)

#logo {
    position: absolute;
    top: 50%;
    margin-top: -75px;
}

进行垂直对齐的常用方法。 top为50%,margin-top为父div的维度的一半。

答案 5 :(得分:0)

我不知道为什么它在我的情况下有效...但我可以通过以下方式看到它起作用:

div {padding-top: 0%;}