[HTML 태그] 테이블 요소

2022. 12. 8. 13:11

<table>태그는 데이터를 표로 나타낼 때 사용되는 태그이다.

복잡한 데이터들을 기술할 때 표를 사용한다.

 

 

목차

1. 표의 구성 요소

2. 표의 구조와 관련된 태그

3. 셀 병합

4. 자주 사용되는 태그와 속성


표의 구성 요소

표는 셀(내용이 들어가는 한 칸)로 이루어져 있다.

표의 행을 row, 열을 column이라고 한다.

 

테이블 태그

<table>태그는 표 자체를 의미한다.

<tr>태그는 표의 한 행을 의미한다.

<td>태그는 표의 한 셀을 의미한다.

<th>태그는 표의 구조와 관련된 태그에서 살펴보도록 한다.

모든 테이블 태그는 닫는 태그가 있다.

 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table</title>
    </head>
    <body>
        <table>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
        </table>
	</body>
</html>

 

브라우저 화면

그런데 이 코드를 저장하고 브라우저를 켜서 확인해보면 아무것도 안보인다.

셀 내부에 아무 내용이 없어서 그런데 아래 코드와 같이 수정하면 브라우저에서 표의 모습을 확인할 수 있다.

 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table</title>
        <style media="screen">
            td {border: 1px solid; width: 50px; height: 50px;}
        </style>
    </head>
    <body>
        <table>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
            <tr>
                <td></td><td></td><td></td><td></td>
            </tr>
        </table>
	</body>
</html>

 

브라우저 화면

추가한 코드는 나중에 css를 배우면서 알게될 것이다.

 

 

 

표의 구조와 관련된 태그

위의 4행 4열의 표를 그리는데도 코드가 상당히 복잡해보인다.

표를 구조적으로 파악하기 위해 도움이되는 태그들이 존재한다.

 

추가 태그

<caption>태그는 표의 제목을 의미한다.

<thead>태그는 제목 행(테이블의 가장 위 행)을 그룹화하는 태그이다. <thead>에 들어가는 셀(제목 셀)은 <td>태그가 아닌 <th>태그를 사용해야 한다.

<tbody>태그는 제목과 바닥행을 제외한 본문 행을 그룹화하는 태그이다.

<tfoot>태그는 바닥 행을 그룹화하는 태그이다. <tfoot>태그는 <tbody>태그의 뒤에 위치해야 한다.

 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table</title>
        <style media="screen">
            td {border: 1px solid; width: 50px; height: 50px;}
        </style>
    </head>
    <body>
        <table>
            <caption>Monthly Savings</caption>
            <thead>
                <tr>
                    <th>Month</th>
                    <th>Savings</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>January</td>
                    <td>$100</td>
                </tr>
                <tr>
                    <td>February</td>
                    <td>$80</td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <td>Sum</td>
                    <td>$180</td>
                </tr>
            </tfoot>
        </table>
    </body>
</html>

 

브라우저 화면

 

 

 

셀 병합

셀 병합은 셀 태그들의 rowspan, colspan 속성을 사용한다.

rowspan은 행을 기준으로, colspan은 열을 기준으로 병합한다.

 

설명보단 직접 표를 그려보는 편이 이해가 쉽다.

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table</title>
        <style media="screen">
            td {border: 1px solid; width: 50px; height: 50px;}
        </style>
    </head>
        <table>
            <caption>Monthly Savings</caption>
            <thead>
                <tr>
                    <th>Month</th>
                    <th>Savings</th>
                </tr>
            </thead>
            <tfoot>
                <tr>
                    <td colspan="2">Sum</td>
                </tr>
            </tfoot>
            <tbody>
                <tr>
                    <td>January</td>
                    <td rowspan="2">$100</td>
                </tr>
                <tr>
                    <td>February</td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

 

브라우저 화면

 

 

 

자주 사용되는 태그와 속성

<colgroup> : 테이블의 컬럼(<td>태그)에 적용할 스타일 width와 background(배경색)를 해당 태그에서 미리 적용할 수 있게 한다. 각 열에 해당하는 셀에 각각 스타일을 적용하는 불편함을 덜어준다.

<colgroup>태그 내에서 각 열의 속성을 정의할 때는 <col>태그를 사용한다. 

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table3</title>
    </head>
    <body>
        <table>
            <colgroup>
                <col width="50px" style="background: red">
                <col width="200px" style="background: blue">
                <col width="100px" style="background: green">
            </colgroup>
            <thead>
                <tr>
                    <td>번호</td>
                    <td>제목</td>
                    <td>이름</td>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1</td>
                    <td>1번</td>
                    <td>홍길동</td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

 

브라우저 화면

 

scope 속성 : scope 속성은 <td>태그나 <th>태그의 속성으로 사용할 수 있다. 해당 셀이 row인지 col인지를 명시하는 역할을 한다. 시각 장애인용 스크린 리더기를 통해 코드가 읽어지는 경우 이 scope 속성에 해당하는 속성 값에 따라 어떤 순서로 읽힐지 결정된다.

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table3</title>
        <style media="screen">
            th, td {border: 1px solid; width: 50px; height: 50px;}
        </style>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th scope="col">번호</th>
                    <th scope="col">이름</th>
                    <th scope="col">나이</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td scope="row">1</td>
                    <td>Will</td>
                    <td>19</td>
                </tr>
                <tr>
                    <td scope="row">2</td>
                    <td>Jason</td>
                    <td>28</td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

 

브라우저 화면

scope 속성은 스타일에 영향을 주지않기 때문에 브라우저 화면에서 보이는 표는 scope 속성이 없는 것과 다른 점이 없다.

 

header 속성 : <td>태그의 속성으로 사용할 수 있다. <th>태그의 id를 headers의 속성값으로 명시함으로써 제목 행의 셀과 본문 행의 셀의 관계를 명시한다.

scope 속성과 마찬가지로 브라우저가 따로 속성에 따라 스타일을 적용하지는 않지만 스크린 리더기로 읽을 경우 도움이 된다.

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>table3</title>
        <style media="screen">
            th, td {border: 1px solid; width: 50px; height: 50px;}
        </style>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th scope="col" id="num">번호</th>
                    <th scope="col" id="name">이름</th>
                    <th scope="col" id="age">나이</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td scope="row" headers="num">1</td>
                    <td headers="name">Will</td>
                    <td headers="age">19</td>
                </tr>
                <tr>
                    <td scope="row" headers="num">2</td>
                    <td headers="name">Jason</td>
                    <td headers="age">28</td>
                </tr>
            </tbody>
        </table>
    </body>
</html>

 

브라우저 화면

scope의 예제에서 <th>태그에 id를 <td>태그에 headers를 추가한 코드이다.


부스트코스의 강의 내용을 정리한 포스트입니다.

https://www.boostcourse.org/cs120

 

비전공자를 위한 HTML/CSS

부스트코스 무료 강의

www.boostcourse.org

BELATED ARTICLES

more