html - CSS:垂直居中文本,具有一个固定宽度的容器和可变文本长度

标签 html css css-float vertical-alignment

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

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

http://jsfiddle.net/mmDFC/

第二个 fiddle 是尝试使用 display:table-cell; 在相同的情况下,但我无法修复丢失的正确文本对齐方式,而且我'我也从未彻底测试过与此显示类型兼容的 IE6+:

http://jsfiddle.net/mmDFC/1/ (这几乎可以工作,保存 text-align:right; 的损失)

我已经查找了许多类似标题的 SO 问题,但找不到我想要的,所以很好的答案让我找到了我错过的问题,或者提出了上述问题的解决方案。

所有以垂直对齐文本的名义... :/


浏览器更新:我在 Chrome 中摆弄,我看到 IE8 的行为类似,但 Ffox3 的行为与解决方案 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/

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

关于html - CSS:垂直居中文本,具有一个固定宽度的容器和可变文本长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658754/

相关文章:

html - 为什么 <fieldset> 不能是 flex 容器?

css - Div 与溢出并排 float ?

css - 在居中的 div 中 float div,我该怎么做?

javascript - 在网页中模拟 DOS 或终端屏幕的最佳方法是什么?

javascript - 如何使用 Javascript 触发 CSS "hover state"?

php - 点击 "Warning: page has expired"按钮时 IE 出现 "back"错误

css - 如何停止 FLOAT(没有额外标记)?

javascript - 通过 JavaScript 动态添加的元素上的 CSS 转换

html - 需要修复 Bootstrap 表单

css - 造型融合表层多边形