【问题标题】:textarea and vertical alignment inside a table表格内的文本区域和垂直对齐
【发布时间】:2011-08-31 11:49:35
【问题描述】:

我们有一个包含两列的表格:每一行左侧有一个标签,右侧有一个输入框。 我们使用vertical-align=text-bottom;将标签文本的底部与输入框中的文本底部对齐。

到目前为止一切顺利。

但是,有时我们有一个文本区域(多行)而不是输入框。左侧标签的底部与文本区域的最后行底部对齐。

有没有办法将左侧的文本与文本区域的第一行对齐?

一个简化的例子

<table class="waiFormTable">
  <tr>
    <td><label>Label 1:</label></td>
    <td><input id="id" type="text" name="name" value="value" /></td>
  </tr>
  <tr>
    <td><label>Label 2:</label></td>
    <td><textarea id="id" type="text" name="name" value="value" /></td>
  </tr>
</table>

在我们定义的 CSS 中:

table.waiFormTable thead tr,
table.waiFormTable tbody tr {
  vertical-align: text-bottom;
}

在此示例中,我希望“标签 1:”文本底部与文本区域的第一行对齐。

【问题讨论】:

  • 你能开始一个 jsfiddle 并且你对 javascript 解决方案持开放态度吗?
  • 对反对票的评论总是很受欢迎...

标签: html css textarea vertical-alignment


【解决方案1】:

其实,当你有一个textarea的时候,你想要对齐到顶部。

在这种情况下应用特殊样式(例如:labelTextarea)

<tr>
    <td class="labelTextarea"><label >Label 2:</label></td>
    <td><textarea id="id1" type="text" name="name1"  >value</textarea></td>
</tr>

与:

.labelTextarea{
vertical-align: top;
}

【讨论】:

  • 是的,我试过了,但是标签文本的顶部与文本区域的上一行对齐。 textarea 中文本的顶部与 textarea 本身的顶部不对应。我知道这不是主要区别,但它看起来“错误”。
  • 好的,所以保留这个解决方案并保留输入的顶部和底部的填充,如input, textarea{ padding-bottom: 0; padding-top: 0;}
【解决方案2】:

试试这个

  1. 将类添加到包含textarea的td

  2. 为table、input 和textarea 设置相同的font 和px。

  3. 在td 上设置vertical-align:top; 和一些padding,将textarea 括起来

    table.waiFormTable, table.waiFormTable input, table.waiFormTable textarea{
        font-family:arial;
        font-size:12px;
    }
    
    table.waiFormTable thead tr, table.waiFormTable tbody tr {
          vertical-align: text-bottom;
    }
    
    .textarea{
        vertical-align:top;
        padding-top:2px;
    }
    

注意:您可能需要调整一两个像素。

示例: http://jsfiddle.net/jasongennaro/ccew8/

【讨论】:

    【解决方案3】:

    我建议不要使用:vertical-align=text-bottom;

    你可以使用:margin-top= 4px;

    或一些其他数量的像素,应该将所有标签与第一行的底部对齐。

    【讨论】:

    • 我想过这一点,但通常我不喜欢使用绝对值来定义格式。根据字体/浏览器/操作系统的不同,页面的呈现方式可能有所不同。
    • 我同意,但我认为没有其他方法可以做到这一点,因为文本区域没有第一行值。我认为您应该在多个浏览器中对此进行测试并自己定义字体。事实上,如果您自己设置单元格和输入框的高度,那么无论浏览器/操作系统是什么,它看起来都应该是一样的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多