【发布时间】:2014-01-13 15:48:07
【问题描述】:
我正在使用表格布局来表示数据:
问题是根据设计,我必须在单元格之间放置这些分隔边界。
除了在td 元素中使用div 元素(如果我弄错了,请纠正我,应该不会造成问题),我没有看到任何其他方法。
示例
<table>
<tr>
<td>
<div class="inner">
Content
</div>
</td>
</tr>
</table>
CSS
table td {
padding: 15px 10px;
border-bottom: 1px solid #e5e5e5;
}
table td div.inner {
padding: 10px 25px 10px 0;
border-right: 1px solid #e5e5e5;
}
效果相当好 - 您在镜头中看到的是浏览器中的实际渲染。
但是当你仔细观察时,你会注意到垂直线(div.inner 的 border-right 属性具有不同的高度。这当然是有道理的,我理解它为什么会发生。里面的内容div.inner 会增加它的高度,加上padding。
我尝试将固定高度设置为div.inner,这对我的表来说没问题,因为我确切地知道我将代表多少数据并且它永远不会超过某个高度。但是这样做时,div.inner 中的所有内容都会垂直对齐到顶部,这意味着我的td 元素的自然应用的vertical-align 属性不再影响div.inner 中的内容。
我尝试将display: inline-block 应用于div.inner 以触发垂直居中对齐,这会导致宽度发生变化。所以我也添加了width: 100%,这导致水平轴不对齐(文本重叠边框),最后没有显示关于垂直对齐的预期结果。所以这种做法是徒劳的。
我怎样才能使这些垂直分隔线的高度相等?
或者,或者,...
在div.inner 上使用固定高度时,如何强制所有内容垂直对齐?
请注意: 以任何方式使用line-height 来实现(或尝试)结果对我来说不是一个选择。正如您在屏幕截图中看到的,我正在显示一个进度条。这在div.inner 中包含更多元素。
【问题讨论】:
-
为什么要再次使用 div?你不能通过给 td 添加边框来实现你想要的吗?或者是因为你想要填充
-
是的,没错。我需要填充物。我用
cellspacing尝试了这个,但无济于事 - 边框最终会在td空间的确切末尾,所以它对我没有用。
标签: html css alignment html-table