我想垂直对齐 div“.person-user”,使其垂直位于父元素“.person”的中心(文本位于照片的中心但在右侧)我该怎么做?
谢谢
接下来是标记和样式的组合,无需 JavaScript 和 JQuery 即可完成您想要的。
<div class="person">
<img class="profile" src="http://sphotos-a.xx.fbcdn.net/hphotos-ash4/320450_10151028382307410_534533150_n.jpg"/>
<div class="profile">
<div class="name">Colin Pacelli</div>
<div class="fact">Ohio University</div>
</div>
</div>
.person {
display: table;
}
.person img.profile{
height: 50px;
margin-right: 10px;
/*border-radius: 4px 4px 4px 4px;*/
}
.person div.profile {
display: table-cell;
vertical-align: middle;
/*font-family: calibri;
font-size: 14px;
color: #444;*/
}
/*.person .profile .name {
font-weight: bold;
}*/
我已经注释掉了主要不影响解决方案的规则,因此所有人都可以看到如果做得好,CSS 需要多少。与使用在虚拟机上运行的 32Kb 客户端代码运行的 10 行代码相比。你认为 Adobe Flash Player 是邪恶的。我不太介意 JQuery,尤其是对于它可以做得很好的事情,但坦率地说,将 JQuery 包含在纯粹风格的明确案例中有点过分了。
正如您可能想象的那样,我已经编辑了您的 JSFiddle,去除了不必要的内容并将其缩减为一个最小的示例,该示例展示了所需的行为,同时保留了视觉效果。
由于您将html
and指定css
为标记,并且由于在几乎所有情况下都可以避免使用 JavaScript/JQuery 是一个更好的主意,因此我真的会使用像上面这样的标记和样式解决方案。
这应该是简单的事情,但实际上是一件很痛苦的事情。这是一个快速的 jsFiddle,在 person div 上使用 display: table,在图片包装器和 info div 上使用 display: table-cell:
最精确的方法是使用 jQuery 并为每个 div 动态计算它。如果某些/所有图像/文本 div 具有不同的高度,这将很有用。例子。_ 编码:
$("div.person-user").each(function() {
$(this).css("marginTop", function() {
var imgH = $(this).prev("div.person-user-pic").height(),
thisH = $(this).height(),
h = (imgH/2) - (thisH/2);
return h;
});
});
但是:如果每个 div 和图像具有相同的高度,你可以这样做:
div.person-user {margin-top: 8px;}
我希望这能回答你的问题?
这是一个非常常见的问题,到目前为止最好的解释在这里: