Làm cách nào để tôi có thể tạo tiêu đề bảng hơn là kéo dài nhiều hàng trong HTML?


80

Tôi muốn xây dựng một bảng như sau:

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

Xem như cách chỉ có 1 dòng cho các phần tử TH, làm thế nào tôi có thể tạo hàng tiêu đề chẳng hạn như các cột xếp hàng? Bảng phân cấp có vẻ không phải là một lựa chọn tốt vì chiều rộng cột sẽ không xếp hàng và tôi cũng không thể sử dụng hai hàng có thẻ TH với colspan.


Và tại sao bạn không thể sử dụng hai hàng và colspan?
tvanfosson

1
Nhiều hàng thẻ TH sẽ hợp nhất thành một hàng TH duy nhất. Tiếp tục ví dụ của tôi ở trên, bảng được tạo sẽ là một hàng tiêu đề duy nhất của Tiêu đề Chính 1, Tiêu đề Chính 2, Phần nhỏ1, Phần nhỏ2, Phần nhỏ3, Phần nhỏ 4.
statguy

Một giải pháp sẽ là sử dụng TD với CSS đặc biệt hơn là TH, nhưng lý tưởng nhất là tôi muốn làm theo cấu trúc bảng html truyền thống.
statguy

Tôi không nghĩ đó là đúng: jsfiddle.net/7pDqb
tvanfosson

3
Bị đóng cửa vì lạc đề ?! "Tôi có thể có tiêu đề bảng có nhiều hàng không?" có vẻ như là một câu hỏi hoàn toàn tốt về tràn ngăn xếp. Tôi chỉ đang tự hỏi nếu tự mình đặt nhiều tr vào một nhóm thì có hiệu quả không.
Andrew Koper

Câu trả lời:


109

Đây là cách tôi sẽ làm điều đó (làm việc fiddle tại http://jsfiddle.net/7pDqb/ ) Đã được thử nghiệm trong 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

Bạn vô tình sử dụng rowspanthay vì colspan? Hay bạn vô tình quên một </tr>thẻ đóng ?

Mở rộng câu trả lời của tvanfosson, tôi sẽ sử dụng scopethuộc tính trên các thphần tử cho mục đích ngữ nghĩa và khả năng truy cập :

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>


Cảm ơn bạn, chính xác là trường hợp của tôi, tình cờ sử dụng rowspan
Maximumus

7

Tuy nhiên, bên cạnh trường hợp ô tiêu đề kéo dài nhiều cột, các bảng có ô tiêu đề kéo dài hai hàng cũng rất thường thấy.

Đây là một ví dụ. Xem col 5data5bên dưới:

    <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>

Đây là trò chơi .


4

Trang web của W3C's Web Accessibility Initiative (WAI) cho biết sử dụng cấu trúc đánh dấu được hiển thị bên dưới.

(Lưu ý rằng đánh dấu được hiển thị trong bảng mẫu trên trang web hơi khác so với những gì chúng hiển thị trong đánh dấu mẫu. Xem liên kết và kiểm tra bảng mẫu.)

Nguồn: 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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.