我有一个表格问题,我没有找到任何解决方案,无论是HTML表格,CSS表格,带CSS的HTML表格......但它似乎是良好渲染排版的基本要求,我可以不相信自HTML上市以来的19年(1996年),我们仍然没有可以做到的标记标准!
问题:使表格列具有左对齐文本,但标题行文本与其下方的数据行无关。
简单地左对齐列内容的简单方法的问题是如果标题很长(使列非常宽),但是所有数据项都是相对较短的宽度,表看起来“傻”所有数据都包含在这个非常宽的列的左边缘。在视觉上,“更加集中”的外观更令人愉悦。
但是,中心对齐数据的问题是除非每个数据的宽度完全相同(显然不会是这样),否则每个数据的外观都不会很整齐“干净”。从共同的左边缘开始!
所以我尝试制作一个使用3个实际列作为一个“可视列”的表,其中包含以下内容:
<table rules="groups">
<colgroup>
<col>
<col width="0*">
<col>
</colgroup>
然后我将标题文本放在<th colspan="3" align="center">
中,而后续行中的数据包含在正常的<td align="left" nowrap="nowrap">
中,旁边是空白的“填充”<td>
之前和之后。 (width="0*"
中间<col>
的{{1}}参数是通过保持不可见列保持左对齐“数据集群”在视觉列中或多或少居中的原因与数据紧密相关的界限。
这大部分都有效,除了它有两个缺陷:
1:有些浏览器会尝试使整个colgroup尽可能地缩小,包装长标题,而不是允许长标题根据需要扩展colgroup /“visual column”的宽度。
2:遗憾的是,这个表方案不允许数据单元换行。因此,只要数据非常长并且看起来更好的换行,表格就会不断水平扩展,引入水平滚动条和其他丑陋。
如果我从<colgroup>
数据单元中删除nowrap="nowrap"
参数以允许换行,则Web浏览器会强制包装文本以使列尽可能地缩小,即使我更喜欢列扩展(达到合理的限度,直到需要水平滚动条)。
如果我从<td>
标记中删除width="0*"
参数(这样我就可以从<col>
数据单元格中移除nowrap="nowrap"
参数),中间的实际列变得比它需要的更宽(甚至比最宽的数据更宽),导致数据集群不再在视觉列中显得非常集中。
如何解决这个问题?
<td>