我该如何构造一个表头,而不是跨越HTML中的多行?


80

我想构造一个表,如下所示:

|   Major Heading 1    |  Major Heading 2    |
|   Minor1  |  Minor2  | Minor3  |  Minor4   |
----------------------------------------------
|   col1    |   col2   |   col3  |    col4   |
rest of table ...

鉴于TH元素只有1行,如何构造标题行(如列排列)?分层表似乎不是一个好选择,因为列宽不会对齐,而且我也不能在带有colspan的TH标签的两行中使用。


为什么不能使用两行和colspan?
tvanfosson

1
多行TH标签将合并为单行TH。继续上面的示例,生成的表将是主标题1,主标题2,Minor1,Minor2,Minor3,Minor4的单个标题行。
statguy

一种解决方案是将TD与特殊的CSS而不是TH一起使用,但理想情况下,我想遵循传统的html表构造。
statguy

我认为这是不正确的:jsfiddle.net/7pDqb
tvanfosson

3
关闭为题外话?!“我可以有一个包含多行的表头吗?” 似乎是一个很好的堆栈溢出问题。我只是想知道自己将多个tr放入一个thead是否可行。
安德鲁·科珀

Answers:


107

这就是我的方法(在http://jsfiddle.net/7pDqb/上工作的小提琴)在Chrome中进行了测试。

th, td { border: 1px solid black }
<table>
  <thead>
    <tr>
      <th colspan="2">Major 1</th>
      <th colspan="2">Major 2</th>
    </tr>
    <tr>
      <th>col1</th>
      <th>col2</th>
      <th>col3</th>
      <th>col4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>data1</td>
      <td>data2</td>
      <td>data3</td>
      <td>data4</td>
    </tr>
  </tbody>
</table>


24

您是否不小心使用rowspan而不是colspan?还是您不小心忘记了结束</tr>标签?

扩展tvanfosson的答案,我将元素scope上的属性th用于语义和可访问性目的:

th, td { border: 1px solid black }
<table>
  <thead>
    <tr>
      <th colspan="2" scope='colgroup'>Major Heading 1</th>
      <th colspan="2" scope='colgroup'>Major Heading 2</th>
    </tr>
    <tr>
      <th scope='col'>Minor1</th>
      <th scope='col'>Minor2</th>
      <th scope='col'>Minor3</th>
      <th scope='col'>Minor4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col1</td>
      <td>col2</td>
      <td>col3</td>
      <td>col4</td>
    </tr>
  </tbody>
</table>


谢谢您,正是我的情况,不小心使用了rowpan
maximus

7

但是,除了标题单元格跨越多列的情况以外,还经常看到具有标题单元格跨越两行的表。

这是一个例子。见col 5data5以下:

    <table>
        <thead>
            <tr>
                <th colspan="2">Major 1</th>
                <th colspan="2">Major 2</th>
                <th rowspan="2">col 5</th>
            </tr>
            <tr>
                <th>col1</th>
                <th>col2</th>
                <th>col3</th>
                <th>col4</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>data1</td>
                <td>data2</td>
                <td>data3</td>
                <td>data4</td>
                <td>data5</td>
            </tr>
        </tbody>
    </table>

这是小提琴


4

W3C的Web Accessibility Initiative(WAI)网站表示使用下面显示的标记结构。

(请注意,网站上示例表中的呈现标记与示例标记中显示的标记略有不同。请参见链接并检查示例表。)

资料来源:https : //www.w3.org/WAI/tutorials/tables/irregular/#table-with-two-tier-headers

<table>
  <col>
  <colgroup span="2"></colgroup>
  <colgroup span="2"></colgroup>
  <tr>
    <td rowspan="2"></td>
    <th colspan="2" scope="colgroup">Mars</th>
    <th colspan="2" scope="colgroup">Venus</th>
  </tr>
  <tr>
    <th scope="col">Produced</th>
    <th scope="col">Sold</th>
    <th scope="col">Produced</th>
    <th scope="col">Sold</th>
  </tr>
  <tr>
    <th scope="row">Teddy Bears</th>
    <td>50,000</td>
    <td>30,000</td>
    <td>100,000</td>
    <td>80,000</td>
  </tr>
  <tr>
    <th scope="row">Board Games</th>
    <td>10,000</td>
    <td>5,000</td>
    <td>12,000</td>
    <td>9,000</td>
  </tr>
</table>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.