HTML 독학 가이드 5 - 리스트와 테이블

learning by Seven Fingers Studio 16분
HTML리스트테이블uloltable웹개발

쇼핑 목록, 할 일 목록, 메뉴 리스트… 웹에서 목록은 정말 많이 쓰여요. 그리고 데이터를 표로 정리하면 훨씬 보기 좋죠. HTML로 리스트와 테이블 만드는 건 정말 쉬워요!

순서 없는 리스트 (Unordered List)

불릿 포인트(●)로 표시되는 목록이에요.

기본 사용법

<ul>
    <li>사과</li>
    <li>바나나</li>
    <li>딸기</li>
</ul>

실행 결과:

  • 사과
  • 바나나
  • 딸기
  • <ul>: unordered list (순서 없는 리스트)
  • <li>: list item (항목)

중첩 리스트

리스트 안에 리스트를 넣을 수 있어요.

<ul>
    <li>과일
        <ul>
            <li>사과</li>
            <li>바나나</li>
        </ul>
    </li>
    <li>채소
        <ul>
            <li>당근</li>
            <li>브로콜리</li>
        </ul>
    </li>
</ul>

실행 결과:

  • 과일
    • 사과
    • 바나나
  • 채소
    • 당근
    • 브로콜리

순서 있는 리스트 (Ordered List)

숫자로 표시되는 목록이에요.

기본 사용법

<ol>
    <li>집에서 출발</li>
    <li>지하철 타기</li>
    <li>회사 도착</li>
</ol>

실행 결과:

  1. 집에서 출발
  2. 지하철 타기
  3. 회사 도착

1, 2, 3으로 자동 번호가 붙어요.

시작 번호 변경

<ol start="5">
    <li>다섯 번째</li>
    <li>여섯 번째</li>
    <li>일곱 번째</li>
</ol>

실행 결과:

  1. 다섯 번째
  2. 여섯 번째
  3. 일곱 번째

5부터 시작해요.

역순 번호

<ol reversed>
    <li>세 번째</li>
    <li>두 번째</li>
    <li>첫 번째</li>
</ol>

실행 결과:

  1. 세 번째
  2. 두 번째
  3. 첫 번째

3, 2, 1로 표시돼요.

번호 스타일 변경

<!-- 알파벳 소문자 -->
<ol type="a">
    <li>첫 번째</li>
    <li>두 번째</li>
</ol>

<!-- 알파벳 대문자 -->
<ol type="A">
    <li>첫 번째</li>
    <li>두 번째</li>
</ol>

<!-- 로마 숫자 소문자 -->
<ol type="i">
    <li>첫 번째</li>
    <li>두 번째</li>
</ol>

<!-- 로마 숫자 대문자 -->
<ol type="I">
    <li>첫 번째</li>
    <li>두 번째</li>
</ol>

실행 결과:

알파벳 소문자:

  1. 첫 번째
  2. 두 번째

알파벳 대문자:

  1. 첫 번째
  2. 두 번째

로마 숫자 소문자:

  1. 첫 번째
  2. 두 번째

로마 숫자 대문자:

  1. 첫 번째
  2. 두 번째

정의 리스트 (Description List)

용어와 설명을 함께 표시해요.

<dl>
    <dt>HTML</dt>
    <dd>웹 페이지의 구조를 만드는 마크업 언어</dd>

    <dt>CSS</dt>
    <dd>웹 페이지의 스타일을 꾸미는 언어</dd>

    <dt>JavaScript</dt>
    <dd>웹 페이지에 동작을 추가하는 프로그래밍 언어</dd>
</dl>

실행 결과:

HTML
웹 페이지의 구조를 만드는 마크업 언어
<dt><strong>CSS</strong></dt>
<dd>웹 페이지의 스타일을 꾸미는 언어</dd>

<dt><strong>JavaScript</strong></dt>
<dd>웹 페이지에 동작을 추가하는 프로그래밍 언어</dd>
  • <dl>: description list
  • <dt>: description term (용어)
  • <dd>: description definition (설명)

테이블 (Table)

데이터를 표 형태로 정리해요.

기본 구조

<table>
    <tr>
        <th>이름</th>
        <th>나이</th>
    </tr>
    <tr>
        <td>홍길동</td>
        <td>25</td>
    </tr>
    <tr>
        <td>김철수</td>
        <td>30</td>
    </tr>
</table>

실행 결과:

이름 나이
홍길동 25
김철수 30
  • <table>: 테이블 시작
  • <tr>: table row (행)
  • <th>: table header (제목 셀)
  • <td>: table data (데이터 셀)

테두리 추가

<table border="1">
    <tr>
        <th>제목1</th>
        <th>제목2</th>
    </tr>
    <tr>
        <td>데이터1</td>
        <td>데이터2</td>
    </tr>
</table>

참고: CSS로 테두리를 만드는 게 더 좋아요.

thead, tbody, tfoot

테이블을 구조화할 수 있어요.

<table>
    <thead>
        <tr>
            <th>상품명</th>
            <th>가격</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>노트북</td>
            <td>1,000,000원</td>
        </tr>
        <tr>
            <td>마우스</td>
            <td>20,000원</td>
        </tr>
    </tbody>
    <tfoot>
        <tr>
            <td>합계</td>
            <td>1,020,000원</td>
        </tr>
    </tfoot>
</table>

셀 병합

colspan - 가로 병합

<table border="1">
    <tr>
        <th colspan="2">이름</th>
    </tr>
    <tr>
        <td>홍</td>
        <td>길동</td>
    </tr>
</table>

실행 결과:

이름
길동

2개의 열을 합쳐요.

rowspan - 세로 병합

<table border="1">
    <tr>
        <td rowspan="2">홍길동</td>
        <td>나이: 25</td>
    </tr>
    <tr>
        <td>직업: 개발자</td>
    </tr>
</table>

실행 결과:

홍길동 나이: 25
직업: 개발자

2개의 행을 합쳐요.

실전 예제

할 일 목록

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>할 일 목록</title>
</head>
<body>
    <h1>오늘 할 일</h1>

    <ol>
        <li>아침 먹기</li>
        <li>운동하기
            <ul>
                <li>스트레칭 10분</li>
                <li>런닝 30분</li>
            </ul>
        </li>
        <li>업무 처리
            <ol type="a">
                <li>이메일 확인</li>
                <li>회의 참석</li>
                <li>보고서 작성</li>
            </ol>
        </li>
        <li>저녁 먹기</li>
        <li>독서 1시간</li>
    </ol>
</body>
</html>

실행 결과:

오늘 할 일

  1. 아침 먹기
  2. 운동하기
    • 스트레칭 10분
    • 런닝 30분
  3. 업무 처리
    1. 이메일 확인
    2. 회의 참석
    3. 보고서 작성
  4. 저녁 먹기
  5. 독서 1시간

메뉴 리스트

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>식당 메뉴</title>
</head>
<body>
    <h1>메뉴판</h1>

    <h2>한식</h2>
    <ul>
        <li>김치찌개 - 8,000원</li>
        <li>된장찌개 - 7,000원</li>
        <li>불고기 - 15,000원</li>
    </ul>

    <h2>중식</h2>
    <ul>
        <li>짜장면 - 6,000원</li>
        <li>짬뽕 - 7,000원</li>
        <li>탕수육 - 18,000원</li>
    </ul>
</body>
</html>

실행 결과:

메뉴판

한식

  • 김치찌개 - 8,000원
  • 된장찌개 - 7,000원
  • 불고기 - 15,000원

중식

  • 짜장면 - 6,000원
  • 짬뽕 - 7,000원
  • 탕수육 - 18,000원

성적표

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>성적표</title>
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: center;
        }
        th {
            background-color: #f2f2f2;
        }
    </style>
</head>
<body>
    <h1>2025년 1학기 성적표</h1>

    <table>
        <thead>
            <tr>
                <th>과목</th>
                <th>중간고사</th>
                <th>기말고사</th>
                <th>평균</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>국어</td>
                <td>85</td>
                <td>90</td>
                <td>87.5</td>
            </tr>
            <tr>
                <td>수학</td>
                <td>90</td>
                <td>88</td>
                <td>89</td>
            </tr>
            <tr>
                <td>영어</td>
                <td>80</td>
                <td>85</td>
                <td>82.5</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <th colspan="3">총 평균</th>
                <td>86.3</td>
            </tr>
        </tfoot>
    </table>
</body>
</html>

실행 결과:

2025년 1학기 성적표

과목 중간고사 기말고사 평균
국어 85 90 87.5
수학 90 88 89
영어 80 85 82.5
총 평균 86.3

시간표

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>시간표</title>
</head>
<body>
    <h1>주간 시간표</h1>

    <table border="1">
        <tr>
            <th>시간</th>
            <th>월</th>
            <th>화</th>
            <th>수</th>
        </tr>
        <tr>
            <td>1교시</td>
            <td>국어</td>
            <td>수학</td>
            <td>영어</td>
        </tr>
        <tr>
            <td>2교시</td>
            <td>수학</td>
            <td>영어</td>
            <td>과학</td>
        </tr>
        <tr>
            <td>3교시</td>
            <td colspan="3">체육</td>
        </tr>
    </table>
</body>
</html>

실행 결과:

주간 시간표

시간
1교시 국어 수학 영어
2교시 수학 영어 과학
3교시 체육

자주 하는 실수

1. li를 ul/ol 밖에 쓰기

<!-- 틀림 -->
<li>항목1</li>
<li>항목2</li>

<!-- 맞음 -->
<ul>
    <li>항목1</li>
    <li>항목2</li>
</ul>

2. 테이블 구조 틀리기

<!-- 틀림: tr 없이 td 사용 -->
<table>
    <td>데이터</td>
</table>

<!-- 맞음 -->
<table>
    <tr>
        <td>데이터</td>
    </tr>
</table>

3. colspan/rowspan 계산 실수

<!-- 틀림: 3열인데 colspan="4" -->
<table>
    <tr>
        <td colspan="4">제목</td>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>

<!-- 맞음 -->
<table>
    <tr>
        <td colspan="3">제목</td>
    </tr>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>3</td>
    </tr>
</table>

다음 단계

다음 글에서는 폼과 입력 요소를 배웁니다. 사용자 입력을 받는 입력창, 버튼, 체크박스 등을 만드는 방법을 알아볼 거예요.

리스트와 테이블은 정보를 구조화하는 핵심 요소예요. 잘 활용하세요!


HTML 독학 가이드 시리즈:

← 블로그 목록으로