HTML의 레이아웃 관련 태그들을 코드 예시와 시각적 프리뷰로 한눈에 정리
페이지 또는 섹션의 머리말 영역. 로고, 제목, 내비게이션을 담습니다.
<header> <h1>사이트 제목</h1> <nav>...</nav> </header>
사이트 내비게이션 링크 묶음. 주요 메뉴, 페이지 이동 링크를 담습니다.
<nav> <a href="/">홈</a> <a href="/about">소개</a> </nav>
페이지의 핵심 본문 영역. 페이지 전체에서 딱 한 번만 사용합니다.
<main> <article>...</article> <aside>...</aside> </main>
주제별로 묶인 독립적인 구역. 보통 제목(h2~h6)과 함께 사용합니다.
<section> <h2>수업 정보</h2> <p>내용...</p> </section>
그것만 따로 떼어내도 독립적으로 의미가 통하는 콘텐츠. 블로그 글, 뉴스 기사, 카드 등에 사용합니다.
<article> <h2>블로그 제목</h2> <p>본문 내용...</p> </article>
본문과 간접적으로 관련된 부가 내용. 사이드바, 광고, 관련 링크 등에 사용합니다.
<aside> <h3>관련 글</h3> <ul>...</ul> </aside>
페이지 또는 섹션의 꼬리말 영역. 저작권, 연락처, 하단 링크를 담습니다.
<footer> <p>© 2026 이상경의 웹프로그래밍</p> </footer>
의미 없는 범용 컨테이너. CSS 적용, 레이아웃 묶음용으로 가장 많이 씁니다.
<div class="container"> <div class="card">카드 내용</div> </div>
문단(paragraph). 텍스트 한 덩어리를 표현할 때 씁니다. 위아래 여백이 자동으로 생깁니다.
<p>첫 번째 문단입니다.</p> <p>두 번째 문단입니다.</p>
제목 태그. h1이 가장 크고 중요, h6이 가장 작습니다. SEO에서 h1은 페이지당 1개 권장.
<h1>페이지 대제목 (1개만)</h1> <h2>섹션 제목</h2> <h3>소제목</h3>
목록 태그. ul = 순서 없는 목록(●), ol = 순서 있는 목록(1,2,3), li = 각 항목.
<ul> <!-- 순서 없음 --> <li>HTML</li> <li>CSS</li> </ul> <ol> <!-- 순서 있음 --> <li>1단계</li> <li>2단계</li> </ol>
1차원 레이아웃. 가로 또는 세로 한 방향으로 아이템을 정렬합니다. 내비게이션, 카드 행, 중앙 정렬에 최적.
<div style="display:flex; gap:12px; align-items:center;"> <div>아이템 1</div> <div>아이템 2</div> <div>아이템 3</div> </div>
flex-direction: row(가로) | column(세로)justify-content: center | space-between | flex-startalign-items: center | stretch | flex-startflex-wrap: wrap (줄바꿈 허용)
2차원 레이아웃. 가로·세로를 동시에 제어합니다. 카드 그리드, 대시보드, 복잡한 페이지 구조에 최적.
<div style="display:grid; grid-template-columns:repeat(3,1fr); gap:12px;"> <div>카드 1</div> <div>카드 2</div> <div>카드 3</div> </div>
grid-template-columns: repeat(3, 1fr) — 3등분grid-template-columns: repeat(auto-fit, minmax(200px,1fr)) — 반응형grid-column: 1 / 3 — 셀 병합(가로)grid-row: 1 / 3 — 셀 병합(세로)
표 형태의 데이터를 표시합니다. thead(머리행), tbody(본문), tr(행), th(제목셀), td(데이터셀)로 구성.
<table> <thead> <tr> <th>이름</th> <th>과목</th> </tr> </thead> <tbody> <tr> <td>이상경</td> <td>웹 3D</td> </tr> </tbody> </table>
| 이름 | 과목 | 강의실 |
|---|---|---|
| 이상경 | 웹 3D | 405호 |
| 이상경 | AI 웹호스팅 | 407호 |
의미 없는 범용 인라인 컨테이너. 텍스트 일부에 색상·폰트 등 CSS를 적용할 때 씁니다.
<p>안녕하세요, <span style="color:hotpink">이상경</span> 입니다.</p>
하이퍼링크. href로 이동 주소, target으로 탭 설정.
<a href="https://lskvr.github.io" target="_blank" rel="noopener noreferrer"> 내 홈페이지 </a>
이미지 삽입. alt는 접근성+SEO 필수. loading="lazy"로 성능 최적화.
<img src="img/여주대.png" alt="여주대학교 캠퍼스 전경" width="900" height="500" loading="lazy" >
입력 양식. form은 입력 묶음, label은 설명, input은 실제 입력창.
<form action="/submit" method="post"> <label for="name">이름</label> <input type="text" id="name" name="name"> <label for="email">이메일</label> <input type="email" id="email"> <button type="submit">제출</button> </form>
영상/음성 삽입. controls 속성으로 재생 컨트롤 표시.
<video src="movie.mp4" controls width="640"></video> <audio src="music.mp3" controls></audio>
외부 페이지/지도/유튜브 삽입. 페이지 안에 다른 HTML 문서를 넣습니다.
<iframe src="https://www.youtube.com/embed/영상ID" width="560" height="315" allowfullscreen ></iframe>
그래픽 드로잉 영역. JavaScript로 2D/3D 그래픽을 그립니다. Three.js도 canvas를 사용합니다.
<canvas id="three-canvas" width="800" height="600"> </canvas>
줄바꿈/수평선. br = 텍스트 강제 줄바꿈, hr = 주제 구분선(수평선).
<p>첫 줄<br>두 번째 줄</p> <hr> <!-- 구분선 -->
| 태그 | 타입 | 주요 용도 | SEO/접근성 |
|---|---|---|---|
| <header> | 블록·시맨틱 | 페이지 상단 머리말 | ⭐⭐⭐ |
| <nav> | 블록·시맨틱 | 내비게이션 메뉴 | ⭐⭐⭐ |
| <main> | 블록·시맨틱 | 핵심 본문 (1개만) | ⭐⭐⭐ |
| <section> | 블록·시맨틱 | 주제별 구역 | ⭐⭐⭐ |
| <article> | 블록·시맨틱 | 독립 콘텐츠 단위 | ⭐⭐⭐ |
| <aside> | 블록·시맨틱 | 사이드바/부가정보 | ⭐⭐ |
| <footer> | 블록·시맨틱 | 페이지 하단 꼬리말 | ⭐⭐ |
| <div> | 블록 | 범용 컨테이너 | — |
| <span> | 인라인 | 텍스트 부분 스타일 | — |
| <h1>~<h6> | 블록·시맨틱 | 제목 계층 | ⭐⭐⭐ |
| <p> | 블록·시맨틱 | 문단 텍스트 | ⭐⭐ |
| display:flex | CSS 레이아웃 | 1차원 정렬 | — |
| display:grid | CSS 레이아웃 | 2차원 격자 | — |
| <table> | 블록·시맨틱 | 표 형태 데이터 | ⭐⭐ |