大家好,我已经有一段时间没有问过什么问题了,这件事已经困扰我一段时间了,问题本身就在标题中:
你喜欢用什么方法来编写有垂直标题的HTML表格?
我所说的垂直标题是指表的标题(<th>
)标记位于左侧(通常)
表头1数据数据数据
表头2数据数据数据
表头3数据数据数据
他们看起来像这样,到目前为止我有两个选择
第一个选项
<table id="vertical-1">
<caption>First Way</caption>
<tr>
<th>Header 1</th>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<th>Header 2</th>
<td>data</td><td>data</td><td>data</td>
</tr>
<tr>
<th>Header 2</th>
<td>data</td><td>data</td><td>data</td>
</tr>
</table>
这种方式的主要优点是,您可以在它所表示的数据旁边(实际上是左边)放置标题,但我不喜欢的是,缺少<thead>
、<tbody>
和<tfoot>
标记,并且无法在不破坏正确放置在一起的元素的情况下包含它们,这导致了我的第二种选择。
第二个选项
<style type="text/css">
#vertical-2 thead,#vertical-2 tbody{
display:inline-block;
}
</style>
<table id="vertical-2">
<caption>Second Way</caption>
<thead>
<tr>
<th colspan="3">Header 1</th>
</tr>
<tr>
<th colspan="3">Header 2</th>
</tr>
<tr>
<th colspan="3">Header 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>row 1</td>
<td>row 1</td>
<td>row 1</td>
</tr>
<tr>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
<tr>
<td>data</td>
<td>data</td>
<td>data</td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="4">Footer</td>
</tr>
</tfoot>
</table>
这里的主要优点是你有一个完全描述性的html表,缺点是正确的表示需要一点CSS的tbody
和thead
标签,而且标题和数据之间的关系不是很清楚,因为我有我的怀疑时,创建标记。
因此,这两种方法都能按照它应该的方式呈现表格,这里是一个陷阱:
如果你喜欢的话,可以把标题放在左边或右边,那么,有什么建议、替代方案、浏览器问题吗?
4条答案
按热度按时间w6lpcovy1#
首先,第二个选项不是有效的HTML,因为表中的所有行(TR)都应该包含相同数量的列(TD)。表头为1,正文为3。应该使用colspan属性来解决这个问题。
参考:“THEAD、TFOOT和TBODY部分必须包含相同数量的列。”-第11.2.3节的最后一段。
**话虽如此,**在我看来,第一个选项是更好的方法,因为无论我是否启用CSS,它都是可读的。一些浏览器(或搜索引擎爬虫)不使用CSS,因此,它会使您的数据毫无意义,因为标题将表示列而不是行。
jgzswidk2#
第一个选择...我认为这是更好和简单的方法...
jaql4c8m3#
老实说,选择1。我建议你看看这个例子从W3.org(链接如下)。我认为这种方法是最好的,因为这样你的标题也将解释正确的屏幕阅读器。
https://www.w3.org/WAI/tutorials/tables/one-header/#table-with-header-cells-in-the-first-column-only
9njqaruj4#