CSS:垂直居中的文本,具有一个固定宽度的容器和流体文本长度

时间:2011-07-12 02:02:42

标签: html css css-float vertical-alignment

我无法为这种完全流畅的布局找到合适的解决方案。我希望以下小提琴中的子标题在图标旁边垂直居中对齐。根据浏览器的大小(以及不同的文本长度),子标题可能会分成多行。

我准备了两个小提琴 - 第一次尝试是我首选的方法,因为我已经对类似的布局进行了更彻底的测试:

http://jsfiddle.net/mmDFC/

第二个小提琴,是使用display:table-cell;尝试同样的情况,但对于我的生活,我无法修复丢失的右文本对齐,我也从未彻底测试IE6 + compat with这种显示类型:

http://jsfiddle.net/mmDFC/1/(这几乎可行,省去了text-align:right;

我已经找到了许多类似标题的SO问题,但找不到我想要的东西,所以很好的回答将我指向一个我错过的问题,或者提出了解决上述问题的方法。

全部以垂直对齐文字的名义......:/


浏览器更新:我在Chrome中摆弄,我看到IE8的行为相似,但Ffox3在解决方案2方面表现不同。

1 个答案:

答案 0 :(得分:2)

如果我理解你想要什么,你只需要将display:table添加到h2

<div class="wrapper clearfix">
    <h1>Main Title</h1>
    <h2>
        <span id="fluid">
            Fluid Span
        </span>
        <span id="icon">
            Lots of long text...
        </span>

    </h2>
</div>

.clearfix:after {
    content:"";
    display:block;
    clear:both; 
}
h2 {
    float:right;  
    text-align:right; 
    background-color:#999;
    display:table;
    width:43%;
}
span {
    background-color:#ccc;   
    border:1px #000 solid;
    vertical-align:middle;
}
span#fluid {
    display:table-cell;

    height:100%;

}

span#icon { 
    display:table-cell;
    width:60px;
    height:40px;
}

http://jsfiddle.net/thomas4g/WecP4/28/

如果这不是您想要的,请告诉我。