DOM 구조
H1 하나면 충분할까? 제목 구조를 DOM으로 점검하는 방법
DOM Accessibility Tree 상의 H1~H6 헤딩 계층구조 스키핑 문제와 시각적 스타일(CSS font-size)과 의미적 제목 레벨의 불일치 대처법을 분석합니다.
실무 검증 기록
마크업 및 접근성 트리 대조
본 기록은 공개 fixture와 재현 조건을 기준으로 정리한 기술 설명입니다. 실제 브라우저·스크린리더 조합의 동작은 별도 수동 검토가 필요합니다.
| 검증 상태 | 공개 fixture 및 공식 규격 대조 완료 |
|---|---|
| 검증 기준 | 공개 fixture 및 재현 조건 |
| 검증 범위 | H1~H6 DOM 계층 구조 및 순차 건너뜀 검증 및 명시된 입력값에 한정 |
| 수동 확인 | 실제 브라우저·키보드·스크린리더 환경에서 별도 확인 필요 |
| fixture에서 확인한 기대 결과 | [실패 상태] H2 누락으로 구조가 잠재적으로 혼란스러움 ➔ [수정 목표] 의미에 맞는 H2 삽입 및 헤딩 목록 재검토 |
검증에 사용된 실제 픽스처 / 재현 조건
<h1> 다음 <h3> 최소 DOM- 시각적으로만 크게 스타일링된 <p class="title"> 요소는 시맨틱 H 태그가 아니면 감지 불가
- SPA 비동기 컴포넌트 마운트 전 초기 HTML 내 제목만 정적 검사
스크린리더(Screen Reader) 사용자는 페이지 구조를 빠르게 파악하기 위해 H 단축키(Heading Quick Navigation)를 사용하여 제목 요소 간을 이동합니다. 이때 DOM 계층구조상 h1 단일 배치 누락, h1에서 h3로의 계층 건너뛰기(Heading Level Skipping), 또는 div 태그에 시각적 큰 글씨만 적용한 구문은 접근성 탐색을 방해합니다. WCAG 2.2 성공 기준 1.3.1 (Info and Relationships)에 따른 논리적 DOM 헤딩 트리 구성법을 설명합니다.
DOM Accessibility Tree와 스크린리더 헤딩 탐색 메커니즘
보조공학기기는 HTML의 <h1>~<h6> 태그를 분석하여 문서의 개요(Outline) 구조를 생성합니다. NVDA, JAWS, VoiceOver 등의 스크린리더는 H 단축키로 헤딩 목록을 팝업 형태로 출력하거나 다음/이전 제목으로 직행합니다.
만약 <h1> 바로 다음에 <h3>가 배치되면 스크린리더 사용자는 <h2>에 해당하는 상위 섹션 정보가 누락되었다고 인지하게 되며 문서의 정보 위계 파악에 혼란을 겪게 됩니다.
시각적 글자 크기(CSS)와 의미적 HTML 헤딩의 분리
디자인상 소단원 제목이 시각적으로 크게 보이고 대단원 제목이 작게 표시되어야 하는 경우가 있습니다. 이때 시각적 스타일에 맞추어 <h3>에 font-size: 2rem을 주고 <h1>에 font-size: 1rem을 부여하는 것은 완전히 정당합니다.
중요한 것은 CSS font-size가 아니라 HTML 태그의 논리적 계층입니다. h1 -> h2 -> h3 순서의 계층구조를 유지하면서 CSS 클래스를 통해 시각적 디자인 스타일을 제어해야 합니다.
올바른 헤딩 계층 구성을 위한 검사 및 가이드
웹 페이지의 헤딩 아웃라인을 점검할 때 다음 검증 절차를 거칩니다.
- 단일 H1 확인: 메인 콘텐츠 영역을 대표하는 <h1> 태그가 1개 존재하는지 확인합니다.
- 순차적 계층 준수: <h1> 하위에 <h2>, <h2> 하위에 <h3> 구조로 단계를 건너뛰지 않고 순차 배치합니다.
- Semantic Tag 활용: 단순 <div class='title'> 대신 헤딩 태그(<h1>~<h6>)를 사용하고 필요한 시각적 스타일은 CSS 클래스로 적용합니다.
흔한 마크업 안티패턴과 올바른 예방책
| 잘못된 마크업 패턴 | 올바른 접근성 구현 |
|---|---|
| <h1> 태그 다음 서브 섹션 제목으로 <h2>를 생략하고 <h3> 태그를 바로 사용하는 것 | DOM 계층 구조는 h1 -> h2 -> h3 순서로 논리적 단계를 지켜 구성합니다. |
| 시각적으로 글씨가 크다는 이유만으로 <div> 요소에 font-size: 32px만 주고 제목 역할을 기대하는 것 | 시각적 크기와 무관하게 정당한 <h2>~<h6> 헤딩 태그를 사용하고 CSS로 스타일을 부여합니다. |
보조공학 낭독 및 브라우저 파싱 한계
- HTML5 섹셔닝(article, section) 내부의 H1 다중 사용은 W3C 문서 아웃라인 알고리즘 미구현으로 스크린리더에서 혼선을 줄 수 있습니다.
- 제목의 텍스트가 본문 콘텐츠의 맥락을 적절히 요약하고 있는지의 '의미적 타당성'은 인간 검토자의 판단이 필요합니다.