티스토리 뷰
Frontend/HTML
표(<table>) 태그 마스터하기: <thead>, <tbody>, <tfoot>를 활용한 체계적인 데이터 정리
미니임 2026. 2. 25. 16:14
웹 페이지에서 데이터를 정리할 때 가장 기본이 되는 요소는 바로 **표(Table)**입니다. 하지만 단순히 <tr>과 <td>만 반복해서 사용하는 것보다, 표의 구조를 명확히 나누어 작성하는 것이 브라우저와 스크린 리더, 그리고 유지보수 측면에서 훨씬 유리합니다.
오늘은 HTML 표 작성의 핵심인 시맨틱 구조 태그들을 살펴보고, 실무에서 바로 활용할 수 있는 풍부한 예제를 소개합니다.
1. 왜 시맨틱 구조 태그를 써야 할까?
표를 만들 때 <thead>, <tbody>, <tfoot>를 사용하는 이유는 다음과 같습니다.
- 가독성 및 유지보수: 코드의 구조가 명확해져 어떤 부분이 제목이고 본문인지 한눈에 파악할 수 있습니다.
- 웹 접근성: 스크린 리더가 표의 구조를 더 정확하게 해석하여 시각 장애인에게 정보를 효율적으로 전달합니다.
- 인쇄 최적화: 표가 여러 페이지에 걸쳐 인쇄될 때, 브라우저 설정에 따라 페이지마다 상단에 제목(<thead>)을 반복해서 출력할 수 있습니다.
2. 핵심 태그 정리
태그설명
| <table> | 표를 생성하는 전체 컨테이너 |
| <thead> | 표의 제목(헤더) 그룹을 정의 |
| <tbody> | 표의 실제 본문 데이터 그룹을 정의 |
| <tfoot> | 표의 요약이나 합계 등이 들어가는 푸터 그룹을 정의 |
| <tr> | 표의 한 행(Row) |
| <th> | 행이나 열의 제목 칸 (기본적으로 굵게, 중앙 정렬) |
| <td> | 일반적인 데이터 칸 |
3. 실전 예제: 월간 가계부 데이터
가장 흔히 볼 수 있는 '가계부' 데이터를 활용해 시맨틱 구조를 적용해 보겠습니다.
예제 코드
<table border="1" style="width: 100%; border-collapse: collapse; text-align: center;">
<!-- 표의 제목 영역 -->
<thead style="background-color: #f2f2f2;">
<tr>
<th>날짜</th>
<th>항목</th>
<th>카테고리</th>
<th>금액(원)</th>
</tr>
</thead>
<!-- 표의 본문 영역 -->
<tbody>
<tr>
<td>2023-10-01</td>
<td>점심 식사</td>
<td>식비</td>
<td>12,000</td>
</tr>
<tr>
<td>2023-10-02</td>
<td>버스 카드 충전</td>
<td>교통비</td>
<td>20,000</td>
</tr>
<tr>
<td>2023-10-05</td>
<td>영화 관람</td>
<td>문화생활</td>
<td>15,000</td>
</tr>
</tbody>
<!-- 표의 하단 요약 영역 -->
<tfoot style="background-color: #e9ecef; font-weight: bold;">
<tr>
<td colspan="3">총 지출 합계</td>
<td>47,000</td>
</tr>
</tfoot>
</table>
4. 복합 예제: 학급 성적표 (Colspan & Rowspan 활용)
데이터가 복잡해질수록 칸을 합치는 colspan(열 합치기)과 rowspan(행 합치기)의 활용이 중요합니다.
예제 코드
<table border="1" style="width: 100%; border-collapse: collapse;">
<thead>
<tr style="background-color: #d1ecf1;">
<th rowspan="2">학생 이름</th>
<th colspan="3">과목별 점수</th>
<th rowspan="2">평균</th>
</tr>
<tr style="background-color: #d1ecf1;">
<th>국어</th>
<th>영어</th>
<th>수학</th>
</tr>
</thead>
<tbody>
<tr>
<td>김철수</td>
<td>90</td>
<td>85</td>
<td>95</td>
<td>90</td>
</tr>
<tr>
<td>이영희</td>
<td>95</td>
<td>100</td>
<td>80</td>
<td>91.6</td>
</tr>
</tbody>
<tfoot>
<tr style="text-align: center; background-color: #fff3cd;">
<td colspan="4">학급 전체 평균</td>
<td>90.8</td>
</tr>
</tfoot>
</table>
5. 표 작성 시 유의할 점
- 순서 준수: HTML5에서는 <thead>, <tbody>, <tfoot> 순서대로 작성하는 것을 권장합니다. (과거에는 <tfoot>을 <tbody> 앞에 쓰기도 했으나 현재는 직관적인 순서를 따릅니다.)
- Scope 속성: <th> 태그에 scope="col" 또는 scope="row" 속성을 추가하면 스크린 리더가 행의 제목인지 열의 제목인지 더 명확하게 인식할 수 있습니다.
- 예: <th scope="col">날짜</th>
- 캡션 사용: 표의 주제를 나타내는 <caption> 태그를 <table> 바로 아래에 추가하면 더욱 완벽한 표가 됩니다.
이제 단순히 정보를 나열하는 것을 넘어, 구조적으로 탄탄한 HTML 표를 만들어 보세요. 데이터의 성격에 맞춰 적절한 태그를 배치하는 것만으로도 웹 사이트의 품질이 한 단계 올라갑니다.
반응형
'Frontend > HTML' 카테고리의 다른 글
| 드롭다운과 선택 박스: <select>, <datalist>, <optgroup>으로 정교한 선택 메뉴 만들기 (0) | 2026.02.25 |
|---|---|
| 사용자 경험을 높이는 폼(form) 디자인: 다양한 <input> 타입과 유효성 검사 활용하기 (0) | 2026.02.25 |
| 반응형 웹의 핵심: <picture>와 srcset으로 기기별 최적화 이미지 보여주기 (0) | 2026.02.25 |
| 웹 페이지에 이미지 넣기: <img> 태그의 alt 속성이 SEO와 접근성에 미치는 영향 (0) | 2026.02.25 |
| 하이퍼링크 <a> 태그 활용 백서: 새 창 열기, 페이지 내 이동(앵커), 전화/메일 연결 (0) | 2026.02.25 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- sLLM
- SSR
- 엣지컴퓨팅
- HTML
- CSR
- 스마트안경
- prompt engineering
- java
- react
- LLM
- AI
- 멀티모달
- Nextjs
- MSA
- TypeScript
- HBM
- It용어
- 카카오
- 구글
- Rag
- CSS
- on-device ai
- 웹기초
- 협력
- Javascript
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
글 보관함