HTML 강좌 / 시맨틱 요소로 페이지 영역 나누기
HTML의 의미 있는 영역 요소는 페이지의 각 부분이 무슨 역할을 하는지 표현합니다. 메뉴에는 nav, 핵심 내용에는 main, 독립적인 글에는 article을 쓰면 시각적 배치와 별개로 문서 구조를 이해하기 쉬워집니다.
영역 요소의 역할 구분하기
header는 페이지나 글의 도입부입니다. 로고, 제목, 탐색 요소 등이 들어갈 수 있습니다.nav는 주요 탐색 링크를 묶습니다. 링크가 있다는 이유만으로 모든 영역을nav로 만들 필요는 없습니다.main은 페이지의 핵심 내용입니다. 한 문서에서 보이는 핵심 콘텐츠를 하나의main으로 묶는 것이 일반적입니다.article은 독립적으로 읽거나 배포할 수 있는 글·게시물 등에,section은 주제별 구역에 사용합니다.section에는 내용을 설명하는 제목을 두는 것이 좋습니다.aside는 주된 내용과 간접적으로 관련된 보조 정보에,footer는 페이지나 글의 끝 정보에 사용합니다.
이 요소들은 화면의 위치를 자동으로 정해 주지 않습니다. 사이드바를 만들려고 aside를 쓰는 것이 아니라, 그 내용이 본문을 보충하는 경우에 쓰고 배치는 CSS로 정합니다.
의미 요소를 쓴다고 검색 순위나 접근성이 자동으로 개선되지는 않습니다. 실제 내용이 요소의 뜻과 맞고, 제목과 링크를 따라 읽었을 때 정보의 흐름이 자연스러워야 합니다. 예를 들어 main에는 사이트마다 반복되는 메뉴보다 그 페이지 고유의 내용을 넣습니다.
작은 페이지를 의미에 맞게 나누기
다음 예제는 페이지 전체를 작성한 코드입니다. header의 페이지 내 메뉴, main의 글과 보조 정보, footer의 끝 정보를 한 문서에서 확인할 수 있습니다.
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>봄에 심기 좋은 식물 | 작은 정원</title>
</head>
<body>
<header>
<p>작은 정원</p>
<nav aria-label="페이지 내 메뉴">
<a href="#article">글 보기</a>
<a href="#sunlight">햇빛 조건</a>
</nav>
</header>
<main>
<article id="article">
<h1>봄에 심기 좋은 식물</h1>
<section id="sunlight">
<h2>햇빛 조건</h2>
<p>식물마다 필요한 햇빛의 양이 다릅니다.</p>
</section>
</article>
<aside>
<p>심기 전에 지역의 마지막 서리 날짜를 확인하세요.</p>
</aside>
</main>
<footer>
<p>작은 정원 안내</p>
</footer>
</body>
</html>
코드 전체를 index.html로 저장하고 브라우저에서 열어 보세요. 제목·메뉴·글·보조 정보·끝 정보가 대체로 위에서 아래로 나타납니다. ‘햇빛 조건’을 누르면 같은 페이지의 해당 구역으로 이동합니다. 메뉴의 href="#sunlight"와 구역의 id="sunlight"가 연결되어 있기 때문입니다.
옆으로 배치하고 싶다면 HTML 구조를 바꾸기보다 CSS 레이아웃을 추가하세요. 예제 안의 h1은 저장한 독립 HTML 문서의 제목이며, 이 강좌 본문에 제목 태그를 하나 더 넣는 것이 아닙니다.
section과 article은 어떻게 선택할까?
독립된 블로그 글 하나는 article에 적합합니다. 그 글 안에서 ‘준비물’과 ‘방법’처럼 주제를 나누는 부분은 각각 section이 될 수 있습니다. 반면 단순히 테두리나 배경색을 주기 위해 묶는 요소라면 section보다 의미가 없는 div가 알맞습니다.
header와 footer는 페이지 전체에만 쓰는 요소가 아닙니다. 독립적인 article 안에서 글의 도입과 끝 정보를 묶는 데도 사용할 수 있습니다. 요소의 이름보다 그 내용의 역할을 먼저 판단하세요. 자세한 정의는 MDN HTML 요소 참고 문서에서 확인할 수 있습니다.
주제별 제목이 필요한 부분이라고 해서 항상 section으로 감쌀 필요는 없습니다. 단순한 문단과 제목만으로 계층이 분명하다면 그대로 두어도 됩니다. 반대로 뉴스 목록처럼 각 항목을 따로 공유해도 이해할 수 있다면 각 항목을 article로 만드는 편이 자연스럽습니다.
구조를 점검할 때
브라우저에서 모양이 비슷해 보이더라도 문서의 제목과 메뉴, 핵심 내용이 순서대로 읽히는지 확인하세요. main을 여러 개 만들거나, 제목 없는 구역을 무작정 section으로 감싸거나, 단지 옆에 표시한다는 이유로 aside를 쓰는 실수를 피하면 구조를 이해하기 쉬워집니다.










