我有一个60px高的元素,其中包含其他元素,如图像和内部的几个跨度,我无法让它们在60px高元素内垂直对齐。这是模型和CSS:
<div class="member">
<img src="images/pic.png" alt="John Smiths's Profile Picture" class="pic">
<span class="name"><a href="">John Smith</a></span>
<span class="skills">PHP, MySQL, Javascript, C#, Java</span>
</div>
#sidebar .member {
height: 60px;
margin-bottom: 10px;
vertical-align: center;
}
#sidebar .member .name {
font-size: 15px;
font-weight: bold;
}
#sidebar .member .pic {
width: 50px;
height: 50px;
border-radius: 50%;
float: left;
margin-right: 10px;
}
#sidebar .member .skills {
display: block;
font-size: 12px;
overflow: hidden;
}
我把它放在jsfiddle上:http://jsfiddle.net/CYFyx/2/
如您所见,.member
元素中的元素向上推。我需要它们垂直对齐,如下所示:
已经尝试vertical-align: middle;
,但没有运气。
答案 0 :(得分:5)
您只能在td表格布局中使用vertical-align: middle
。所以你必须在跨度上添加一个div
<div class="cell">
<span class="name"><a href="">John Smith</a></span>
<span class="skills">PHP, MySQL, Javascript, C#, Java</span>
</div>
具有此属性
#sidebar .member .cell {
display: table-cell;
vertical-align: middle;
height: 50px;
}
您可以在此处进行测试:http://jsfiddle.net/Tn2RU/
答案 1 :(得分:2)
尝试将它们全部放在可以使用
垂直对齐的div中position:relative;
margin-top: auto;
margin-bottom: auto;
height: XXpx;
答案 2 :(得分:1)
您需要设置父元素的宽度和子元素的宽度,以便它们必须进入下一行。
另一个可能性是将您的父元素设置为position:relative
,然后对所有孩子使用position:absolute
,并使用top:20px;
精确定位,然后下一个top:40px;
等等。
使用第二种解决方案,您可以获得所有子元素的精确像素定位。
这将给你带来最好的结果。
答案 3 :(得分:1)
您也可以将它们放入div并在顶部添加填充。
HTML
<div id="block">
<span class="name"><a href="">John Smith</a></span>
<span class="skills">PHP, MySQL, Javascript, C#, Java</span>
</div>
CSS
#block {
padding-top:5px;
}