Coding/HTML & CSS

HTML - table 요소

개발자 동퐈 2025. 2. 26. 01:25

<table>은 행과 열을 나타내기 위한 마크업 요소이다.

기본 자식요소로 <caption> <tr> <th> <td>를 갖는다.

 

<caption> : 테이블의 제목을 담당

<tr> : table row 테이블의 행을 의미

<th> : table header 테이블 셀의 제목

<td> : table data 테이블 행에 들어가는 내용

 

위 내용을 토대로 테이블을 만들어보면 이렇게 된다.

<table>
      <caption>
        테이블 제목
      </caption>
      <tr>
        <th>셀 제목1</th>
        <th>셀 제목2</th>
        <th>셀 제목3</th>
        <th>셀 제목4</th>
      </tr>
      <tr>
        <td>셀 내용1</td>
        <td>셀 내용2</td>
        <td>셀 내용3</td>
        <td>셀 내용4</td>
      </tr>
      <tr>
        <td>셀 내용5</td>
        <td>셀 내용6</td>
        <td>셀 내용7</td>
        <td>셀 내용8</td>
      </tr>
    </table>

 


HTML에서 표를 그리는 방법은 복잡해 보일 수 있지만 <tr>을 이용해서 행을 쌓아나간다는 느낌이다.

첫째 행에서는 <th>로 셀의 제목을 만들어주는데 자동으로 내용을 볼드처리해줘서 셀의 제목임을 알 수 있다.

나머지 행에는 <td>로 내용을 채워주는데 각 <tr>의 내부 요소들이 짝을 이루지 않아도 문제가 되지는 않는다.
다만 셀의 모양이 예쁘지는 않아서 각 행의 내용이 짝을 맞추는것이 좋을것 같다.


심화해서 테이블 관련 요소에는 <thead> <tbody> <tfoot>가 있다.

 

<thead> : 테이블 헤더를 그룹화

<tbody> : 테이블 본문을 그룹화

<tfoot> : 테이블 푸터를 그룹화

<table>
      <caption>
        테이블 제목
      </caption>
      <thead>
        <tr>
          <th>셀 제목1</th>
          <th>셀 제목2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>셀 내용1</td>
          <td>셀 내용2</td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td>셀 내용5</td>
          <td>셀 내용6</td>
        </tr>
      </tfoot>
    </table>

 

이렇게 사용 가능하며 테이블 구조를 의미론적으로 올바르게 사용 할 수 있다.
해당 요소를 사용하게 되면 HTML 문서에서 순서가 다르더라도 브라우저에서는 구조를 해석해서 헤더 바디 푸터 순으로 렌더링 하게 된다.

<table>
      <caption>
       뒤죽박죽 테이블
      </caption>
      <tfoot>
        <tr>
          <td>셀 내용5</td>
          <td>셀 내용6</td>
        </tr>
      </tfoot>
      <thead>
        <tr>
          <th>셀 제목1</th>
          <th>셀 제목2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>셀 내용1</td>
          <td>셀 내용2</td>
        </tr>
      </tbody>
    </table>


지금까지 테이블 요소의 행으로 구조를 만들어 나타내는 모습을 봤다면 이번엔 열을 어떻게 관리하는가를 알아보자.

열 관리 요소는 <colgroup> <col>이 있다.

 

 

<colgroup>: 열 그룹을 정의

<col>: colgroup 내에서 각 열의 속성을 정의

<table>
      <colgroup>
        <col style="background-color: pink" />
        <col style="background-color: lightgreen" />
        <col style="background-color: lightblue" />
      </colgroup>
      <caption>
        프로필
      </caption>
      <tr>
        <th>이름</th>
        <th>나이</th>
        <th>직업</th>
      </tr>
      <tr>
        <td>홍길동</td>
        <td>30</td>
        <td>개발자</td>
      </tr>
      <tr>
        <td>김철수</td>
        <td>25</td>
        <td>디자이너</td>
      </tr>
    </table>

 

 

<colgroup> 안에 <col> 수에 따라 테이블의 열이 매칭 되는 방식이며 <colgroup>과 <col> 태그는 항상 테이블의 첫 부분에 위치하며, <thead>, <tbody>, <tr> 태그보다 먼저 나와야 한다.

 

<col>에는 span이라는 속성을 사용 할 수 있는데 <col span="2"> 이런식으로 자신이 위치한 열을 기운으로 스타일링을 하는데 용이하다.

<table>
      <caption>
        프로필
      </caption>
      <colgroup>
        <col style="background-color: pink" />
        <col style="background-color: lightgreen" />
        <col span="2" style="background-color: lightblue" />
      </colgroup>
      <tr>
        <th>이름</th>
        <th>나이</th>
        <th>직업</th>
        <th>연봉</th>
      </tr>
      <tr>
        <td>홍길동</td>
        <td>30</td>
        <td>개발자</td>
        <td>3000</td>
      </tr>
      <tr>
        <td>김철수</td>
        <td>25</td>
        <td>디자이너</td>
        <td>2500</td>
      </tr>
    </table>


<tr> <td> 에는 colspan, rowspan 속성을 사용해서 셀병합 효과를 나타낼 수 있다.

<table border="1">
      <caption>
        열 합치기
      </caption>
      <tr>
        <th colspan="2">이름과 직업</th>
        <th>나이</th>
      </tr>
      <tr>
        <td>홍길동</td>
        <td>개발자</td>
        <td>30</td>
      </tr>
      <tr>
        <td>김철수</td>
        <td>디자이너</td>
        <td>25</td>
      </tr>
    </table>


<table border="1">
      <caption>
        행 합치기
      </caption>
      <tr>
        <th>이름</th>
        <td>홍길동</td>
      </tr>
      <tr>
        <th rowspan="2">연락처</th>
        <td>010-1234-5678</td>
      </tr>
      <tr>
        <td>hong@example.com</td>
      </tr>
    </table>


   <table border="1">
      <caption>
        복합적으로 사용
      </caption>
      <tr>
        <th colspan="2" rowspan="2">학생 정보</th>
        <th colspan="3">과목</th>
      </tr>
      <tr>
        <th>수학</th>
        <th>영어</th>
        <th>과학</th>
      </tr>
      <tr>
        <td rowspan="2">1학년</td>
        <td>홍길동</td>
        <td>90</td>
        <td>85</td>
        <td>95</td>
      </tr>
      <tr>
        <td>김철수</td>
        <td>80</td>
        <td>95</td>
        <td>85</td>
      </tr>
      <tr>
        <td rowspan="2">2학년</td>
        <td>이영희</td>
        <td>95</td>
        <td>90</td>
        <td>80</td>
      </tr>
      <tr>
        <td>박지민</td>
        <td>85</td>
        <td>85</td>
        <td>90</td>
      </tr>
    </table>

'Coding > HTML & CSS' 카테고리의 다른 글

HTML - 섹션과 메인 요소  (0) 2025.02.26
HTML - 컨테이너 요소  (0) 2025.02.26
HTML - 인용문과 줄 바꿈 요소  (0) 2025.02.21
HTML - 프레이징 요소  (0) 2025.02.21
HTML - 정의형 목록  (0) 2025.02.20