HTML에서 여러 행에 걸쳐있는 테이블 헤더를 어떻게 구성 할 수 있습니까?


80

다음과 같이 테이블을 구성하고 싶습니다.

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

TH 요소에 대해 한 줄만있는 것을 알면 열 정렬과 같은 헤더 행을 어떻게 구성 할 수 있습니까? 계층 적 테이블은 열 너비가 정렬되지 않기 때문에 좋은 옵션처럼 보이지 않으며 colspan과 함께 TH 태그가있는 두 행을 사용할 수도 없습니다.


그리고 왜 두 행과 colspan을 사용할 수 없습니까?
tvanfosson 2013 년

1
TH 태그의 여러 행이 TH의 단일 행으로 병합됩니다. 위의 예를 계속하면 생성 된 테이블은 Major Heading 1, Major Heading 2, Minor1, Minor2, Minor3, Minor4의 단일 헤더 행입니다.
statguy

한 가지 해결책은 TH가 아닌 특수 CSS와 함께 TD를 사용하는 것이지만 이상적으로는 전통적인 html 테이블 구성을 따르고 싶습니다.
statguy 2013 년

: 그 올바른 생각하지 않습니다 jsfiddle.net/7pDqb
tvanfosson

3
주제에서 벗어난 것으로 마감 되었습니까?! "행이 여러 개인 표 머리글을 가질 수 있습니까?" 완벽하게 훌륭한 스택 오버플로 질문처럼 보입니다. 나는 극장에 여러 개의 tr을 직접 넣는 것이 효과가 있는지 궁금합니다.
Andrew Koper 2015 년

답변:


109

이것이 내가 할 방법입니다 ( 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>


accidentaly ROWSPAN 사용하여, 내 경우 정확하게, 감사합니다
막시무스

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의 WAI (Web Accessibility Initiative) 웹 사이트에서는 아래 표시된 마크 업 구조를 사용한다고 말합니다.

(웹 사이트의 예제 테이블에서 렌더링 된 마크 업은 샘플 마크 업에 표시된 것과 약간 다릅니다. 링크를 참조하고 예제 테이블을 검사하십시오.)

출처 : 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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.