【问题标题】:css vertical alignment, but not quitecss垂直对齐,但不完全
【发布时间】:2014-06-01 20:55:06
【问题描述】:

如何对齐文本块,以使第一行的顶部从 td 的顶部向下 50%?

想象一下,但第一行的顶部正好下降了 50%。

--------------
|             |       
|             | 
|             |
|     xxxx    |
|   xxxxxxxx  |
|  xxxxxxxxxx |
|             |
|             |
--------------

我可以使用包含 div 和 padding 的方式来做到这一点,但我想要纯 css 选项,如果我更改表格高度、行高等,它不会中断......

编辑 --

这是一个正确显示的小提琴,但使用“hack”css,如果我改变高度等等,它会中断。

http://jsfiddle.net/5q9K8/

它显示正确,但我不想拥有那个 div。我也不明白为什么 padding-top 需要为 90%;会认为 50% 的人会这样做。

【问题讨论】:

  • 这样的? DEMO HERE
  • 关闭,但在这种情况下,单行的td应该垂直居中对齐,另一个td的第一行应该与它对齐。

标签: html css


【解决方案1】:

更改块的边距。 使用margin-top:50%;
或尝试vertica-align:center;
这会使它与中间对齐,我想这就是你想要那些 50% 的原因

【讨论】:

  • @hvgotcodes 如果您从 .x 中删除 height:100%,它会在您的小提琴中工作
  • 关闭,但如果我这样做,顶行不会对齐。
  • 你能编辑一些小提琴吗?我怀疑此解决方案不适用于 td 元素的不同对 heightwidth。顺便说一句,什么样的vertical-align:center
  • 如果您更改字体大小,它会中断。使用 margin-top: 50% 将 div 的顶部放在容器的中间,由于文本在 div 中,它的 below 容器的中间点
【解决方案2】:

检查这个小提琴:http://jsfiddle.net/5q9K8/10/

HTML:

<table>
    <tr>
        <td>
            xxxx<br/>
            xxxxxx<br/>
            xxxxxxx
        </td>
        <td>
            xxxx
        </td>
    </tr>
</table>

CSS:

td {
    height: 200px;
    border: 1px solid black;
    width: 100px;
    text-align: center;

    vertical-align:top;    
}
td:before{
    background: none repeat scroll 0 0 transparent;
    content: "";
    display: block;
    height: 50%;
}

逻辑:使用 before 元素占据 50% 的 TD 空间,使文本完全从中间开始并添加垂直对齐顶部以保持文本从中心顶部对齐。

【讨论】:

  • @fiction 真的吗?那么如果我将width 更改为200px(等于heightjsfiddle.net/viphalongpro/5q9K8/6
  • 太好了,我可以帮忙,border-box 意味着填充将被计为高度的一部分,这意味着在这种情况下,即使应用了 50% 的填充,高度的总和也将是 200px。跨度>
  • 单行的 td 应该看起来好像垂直对齐在中间,而多行的 td 的第一行应该与单行对齐。在您的示例中,文本太低
  • @KingKing 我猜 % 填充的行为很奇怪......如果你将 50% 更改为 100px,即使宽度为 200px,它也能正常工作。 jsfiddle.net/5q9K8/8
  • 是的,我不明白为什么当宽度为 200 像素时,50% 的填充会导致它与底部对齐
猜你喜欢
  • 2015-07-09
  • 1970-01-01
  • 2014-11-11
  • 2015-09-06
  • 2011-10-03
  • 1970-01-01
  • 2017-07-18
相关资源
最近更新 更多