【问题标题】:Vertically align text within div element垂直对齐 div 元素内的文本
【发布时间】:2011-10-04 12:43:54
【问题描述】:

我知道这个问题已经被问到死了,但是通过搜索没有对我有用。

你懂的,我有一个 div 元素,我需要在其中垂直对齐文本,但没有任何效果(位置:绝对;顶部:50%;边距顶部:-x;显示:表格单元;垂直- align:middle;etc.等)

这是我正在使用的(对不起,内联 CSS)。无论如何,我会使用 line-height 但文本可以是一两行。它应该与始终最大高度为 30 像素 (30x50) 的图像垂直对齐。

 <div style="margin:0 0 10px 0;padding:10px;border:2px solid #606060;background-color:#2b2b2b;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;">
 <div style="float:left;width:55px;height:40px;">
 <a href="link"><img style="max-width:50px;border:1px solid #ffb92c;" src="image.jpg" alt="" /></a>
 </div>
 <div style="float:right;width:155px;font-size:0.7em;height:40px;">
 <a href="link">This is the text to vertically align</a>
 </div>
 </div>

【问题讨论】:

标签: html css vertical-alignment


【解决方案1】:

你需要这样做:

http://jsfiddle.net/rathoreahsan/5u9HY/

在主 div 中使用 fixed height 而不是 padding。并为左右 Div 使用行高

【讨论】:

  • 行高只有在一行文本时才有效,可能是一两行。
【解决方案2】:

似乎是一个常见的浮动问题,可以使用clearfix 修复,或者像我在以下代码 sn-p 中所做的那样,使用固定高度的包装器。

我还坐在浮动 div 的 line-height 上,并使其更宽一些。

看看这个:

 <div style="margin:0 0 10px 0;padding:10px;border:2px solid #606060;background-color:#2b2b2b;-webkit-border-radius:8px;-moz-border-radius:8px;border-radius:8px;height:40px">  <div style="float:left;width:55px;height:40px;">  <a href="link"><img style="max-width:50px;border:1px solid #ffb92c;" src="image.jpg" alt="" /></a>  </div>  <div style="float:right;width:185px;font-size:0.7em;height:40px;line-height:40px">  <a href="link">This is the text to vertically align</a>  </div>  </div> 

http://jsfiddle.net/YqxPZ/3/

【讨论】:

  • 您的修复存在一些错误。图像和文本都没有正确垂直对齐,甚至在一个 div 内。
  • 谢谢,但如果文本足够长到两行,这将不起作用。
【解决方案3】:

这个想法来自here,应该适用于所有浏览器。

<div style="margin: 0 0 10px 0; padding: 10px; border: 2px solid #606060; background-color: #2b2b2b;
    -webkit-border-radius: 8px; -moz-border-radius: 8px; border-radius: 8px;">
    <div style="float: left; width: 55px; height: 40px;">
        <a href="link">
            <img style="max-width: 50px; border: 1px solid #ffb92c;" src="image.jpg"
                alt="" /></a>
    </div>
    <div style="float: right; width: 155px; font-size: 0.7em; height: 40px; display: table; #position: relative; overflow: hidden;">
        <div style="#position: absolute; #top: 50%; display: table-cell; vertical-align: middle;">
            <div style="#position: relative; #top: -50%;">
                <a href="link">This is the text to vertically align</a>
            </div>
        </div>
    </div>
    <div style="clear: both"></div>
</div>

【讨论】:

  • 图片和文字都没有正确垂直对齐
  • @Tom 这是因为您的 html 片段的其他边距或填充。无论如何,如果您有一些动态大小的 div 并且想要垂直对齐内容,则该链接提供了唯一的跨浏览器解决方案。其他解决方案要么适用于静态高度,要么仅适用于某些浏览器和某些版本大于 bla bla...
  • @Yigit 我真的让它工作了。不是文本没有正确对齐,而是图像。如果我将图像包装在与文本相同的 div 标签中,则所有内容都会对齐。
【解决方案4】:

你可以做的另一件事。如果 div 中只有一行文字,您可以使用line-height

例子

div {
    line-height:40px;
}

【讨论】:

  • 可以是一两行。
【解决方案5】:

这是解决方案的干净版本

<div style="background: yellow">
<div style="width: 155px; font-size: 0.7em; height: 40px; display: table; overflow: hidden;">
    <div style="display: table-cell; vertical-align: middle;">
        <div style="">
            <a href="link">This is the text to vertically align</a>
        </div>
    </div>
</div>
<div style="clear: both"></div>

http://jsfiddle.net/5y4Nb/

【讨论】:

    【解决方案6】:

    您是否只需要显示几行很长的文本,这里是Fiddle。根据需要调整高度。

        .container-text {
        height:40px;
        width:180px;
        overflow-y:hidden;    
        display:table-cell;
        vertical-align:middle;
        text-align: center;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-24
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 2017-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多