使文本在相同的表格单元格中垂直和水平居中,图像向左浮动

时间:2012-01-13 20:15:19

标签: html css

我知道这可能看起来像是一个小问题。感觉应该有一个简单的解决方案。我有一种感觉,我是SOL,但我想我先问。

http://jsfiddle.net/bczengel/FSDz9/5/

问题:

当图像没有浮动时,它具有所需的最终结果,其中图像和文本都是垂直居中的。向左浮动图像时,图像垂直居中,文本与图像顶部对齐。

要求:

  • 一个表格单元格
  • CSS仅包含给定的html(或对html的最小更改)
  • 我想避免使用行高解决方案,因为样式表适用于许多现有页面,其中一些页面在文本中有多行

2 个答案:

答案 0 :(得分:10)

使用最小的html更改(将标题文本包装在<p>

table {
    width: 500px;
    border: solid 1px black;
}

table td {
    text-align: center;
    vertical-align: middle;
    padding: 5px;
    position: relative;
}

table td img {
    width: 50px;
    vertical-align: middle;
    display: inline-block;
}

table td p {
    display: inline-block;
    width: 430px;
    background: #ccc;
    vertical-align: middle
}
<table>
  <tr>
    <td>
      <img alt="test" src="http://t1.gstatic.com/images?q=tbn:ANd9GcQ-nkjB-srUT_dc7brfRDiDSVu8BQa_6TEbQYevP1gy2UkTdcXWzg" />
      <p>Title Text</p>
    </td>
  </tr>
</table>

<br /><br />

<table>
  <tr>
    <td>
      <img alt="test" src="http://t1.gstatic.com/images?q=tbn:ANd9GcQ-nkjB-srUT_dc7brfRDiDSVu8BQa_6TEbQYevP1gy2UkTdcXWzg" />
      <p>Title Text <br /> on the next line</p>
    </td>
  </tr>
</table>

答案 1 :(得分:0)

您可以使用负边距方法垂直居中文本。为此,您可以将文本放在<span>中,并使用以下css:

table
{
    width: 500px;
    border: solid 1px black;
}

table td
{
    text-align: center;
    vertical-align: middle;
    padding: 5px;
    position: relative;
}

table td img
{
    width: 50px;
    vertical-align: middle;
}

table.float td img
{
    float: left;
}

table.float td span
{
    position: absolute;
    top: 50%;
    margin-top: -10px; /* or half of the height of your text */
}