4

我有一个 60 像素高的元素,其中包含其他元素,如图像和其中的几个跨度,我无法让它们在 60 像素高的元素内垂直对齐。这是模型和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;,但没有运气。

4

4 回答 4

5

您只能vertical-align: middle在 td 表格布局中使用。所以你必须在跨度周围添加一个 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/

于 2012-11-13T20:22:18.610 回答
2

尝试将它们全部放在一个可以垂直对齐的 div 中

position:relative; 
margin-top: auto; 
margin-bottom: auto; 
height: XXpx;
于 2012-11-13T20:18:39.467 回答
1

您需要设置父元素的宽度和子元素的宽度,以便它们必须进入下一行。

另一种可能性是将您的父元素设置为position:relative然后position:absolute在所有子元素上使用,然后简单地用 精确定位它们top:20px;,然后是下一个top:40px;等。

使用第二种解决方案,您可以获得所有子元素的精确像素定位。

这将积极地给你最好的结果。

于 2012-11-13T20:20:27.823 回答
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;  
}

jsFiddle

于 2012-11-13T20:25:13.757 回答