역할 · 랜드마크
role="main"
페이지의 핵심 본문을 나타내는 랜드마크입니다. 문서마다 하나만 둡니다.
기초HTML 요소 우선
한눈에 보기
- 분류
- 랜드마크
- 대응 HTML
<main>- 이름 정하는 방법
- 작성자 (author)
- 이름 필수
- 아니요
- 필수 상위 요소
- 없음
- 필수 하위 요소
- 없음
설명
main은 그 페이지에만 있는 중심 내용, 즉 사용자가 이 페이지를 찾아온 이유가 되는 영역을 표시합니다. 머리말·메뉴·꼬리말처럼 여러 페이지에 반복되는 부분은 넣지 않습니다. 화면낭독기 사용자는 랜드마크 이동으로 반복 영역을 건너뛰고 본문으로 바로 갈 수 있어, 반복 영역 건너뛰기(WCAG 2.4.1)를 돕는 기본 수단이 됩니다.
HTML과의 관계
<main> 요소를 쓰면 자동으로 main 역할이 됩니다. 오래된 브라우저 지원을 위해 <main role="main">처럼 쓰던 관행이 있었지만 현재는 필요하지 않습니다.
주의할 점
- 한 문서에는 보이는 main이 하나만 있어야 합니다. HTML도
hidden이 아닌<main>을 둘 이상 두지 못하게 합니다. <main>은<article>,<aside>,<nav>,<header>,<footer>안에 넣지 않습니다.- 페이지의
<h1>은 보통 main 안 첫머리에 둡니다. - “본문 바로가기” 링크는
<main id="content">를 대상으로 하면 됩니다. 일부 브라우저에서 포커스 이동이 확실하도록 대상에tabindex="-1"을 함께 두기도 합니다.
테스터 관점
랜드마크 목록에 “메인”이 정확히 하나 있는지, 반복 영역(메뉴·배너)이 main 밖에 있는지, 본문 바로가기가 main으로 이동하는지 확인합니다.
함께 쓰는 속성
전역 속성(이름·설명 등)은 모든 역할에 쓸 수 있어 생략했습니다.
사용 예
기본 구조
<body>
<a href="#content" class="skip">본문 바로가기</a>
<header>…</header>
<nav aria-label="주 메뉴">…</nav>
<main id="content" tabindex="-1">
<h1>도서 검색</h1>
…
</main>
<footer>…</footer>
</body>단일 페이지 앱에서 div를 써야 할 때
<div id="root">
<div role="main" id="content">…</div>
</div>main이 여러 개 (비권장)
<main>목록</main>
<main>상세</main>보이는 main은 하나여야 합니다. 탭처럼 바꿔 보여 준다면 숨긴 쪽에 hidden을 줍니다.
직접 해 보기
main이 하나일 때와 둘일 때 랜드마크 목록을 비교해 보세요.
예시 페이지 코드
실시간 코드 — 조작하면 속성 값이 바뀌는 모습을 볼 수 있습니다
화면낭독기에서는
| 상황 | 들리는 안내 (예) |
|---|---|
| D 키로 랜드마크 이동 | 메인 랜드마크, 도서 검색, 제목 수준 1 |
| 본문 바로가기 링크 실행 | 메인 랜드마크, 도서 검색, 제목 수준 1 |
사용 지침
이렇게 쓰세요
- 페이지의 고유 본문 전체를
<main>하나로 감쌉니다. - 본문 바로가기 링크의 대상으로 main을 씁니다.
이렇게 쓰지 마세요
- 머리말·메뉴·꼬리말을 main 안에 넣지 않습니다.
- 보이는 main을 두 개 이상 두지 않습니다.
관련 역할·패턴
이 역할을 쓰는 패턴