【问题标题】:CSS: Vertical centered text with one fixed-width container and fluid text lengthCSS:垂直居中的文本,带有一个固定宽度的容器和可变的文本长度
【发布时间】:2012-06-05 00:01:45
【问题描述】:

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

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

http://jsfiddle.net/mmDFC/

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

http://jsfiddle.net/mmDFC/1/(这几乎可以,省去了text-align:right;的损失)

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

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


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

【问题讨论】:

  • 你能澄清一下这个问题吗?你想要什么垂直居中?如果是 .icon,它看起来适合我(Chrome 14)
  • 文本,在一行或两行时垂直对齐(抱歉,该信息是小提琴的一部分)。您可能需要稍微拉长小提琴才能看到与解决方案 2 的右对齐丢失。此时,该图标将看起来居中,因为它为容器提供了高度。
  • 啊,我现在明白了。确保在实际问题中提供此信息。
  • 在你的小提琴中,h2 的高度是否必须改变?或者可以修复吗?如果固定;我想我有一个解决方案。
  • 它必须有所不同,因为标题的长度会有所不同,屏幕的宽度也会有所不同。我尝试在解决方案 #2 上设置“最小高度”,但似乎只接受了一个高度值。但是,是的,它必须有所不同,但请继续发布您的解决方案,因为它仍然可以很好地使用(我希望无论如何!)。干杯托马斯。

标签: html css css-float vertical-alignment


【解决方案1】:

如果我明白你想要什么,你只需将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/

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

【讨论】:

  • 它几乎就在那里,实际上它在 IE8、Chrome、Ffox、Opera、Safari 中发挥了作用 - 但 IE6 和 7 似乎没有任何线索 - 一切都显示为内联。我想我将使用它并为 IE6/7 提供后备。我将把这个问题留一点,看看您或其他人是否可以提供有关如何在 IE6/7 中进行垂直对齐的任何线索。感谢您到目前为止的帮助 Thomas:D
  • 好的,将它添加到 - 并修复右对齐的丢失,我添加了 margin-left:auto;到表格化的 H2 元素。 IE6/7 有一个粗略的定位方法,它不会一直垂直居中 - 但太糟糕了!
  • @Danjah ack,很抱歉这么晚才回复。很高兴你弄明白了。 :)
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
相关资源
最近更新 更多