시맨틱 HTML로 마크업 개선하고 접근성 높이기

문제 상황

회사 메인 프로젝트의 마크업이 전부 div와 span으로만 이루어져 있었다. 웹 접근성 검수를 받으면서 여러 문제가 발견되어 시맨틱 HTML로 전환 작업을 진행했다.

주요 변경 사항

레이아웃 구조화

<!-- Before -->
<div class="header">
  <div class="nav">...</div>
</div>
<div class="content">
  <div class="article">...</div>
</div>

<!-- After -->
<header>
  <nav>...</nav>
</header>
<main>
  <article>...</article>
</main>

콘텐츠 구조 명확화

  • <section>: 주제별 콘텐츠 그룹
  • <article>: 독립적인 콘텐츠 (블로그 포스트, 댓글)
  • <aside>: 사이드바, 관련 링크
  • <footer>: 하단 정보

제목 계층 구조

가장 큰 문제는 h1이 여러 개 있거나 h2 다음에 h4가 오는 등 계층이 엉망이었다. 문서 아웃라인을 그려가며 제목 레벨을 재정리했다.

<article>
  <h2>게시글 제목</h2>
  <section>
    <h3>소제목</h3>
    <p>내용...</p>
  </section>
</article>

결과

스크린리더로 테스트했을 때 랜드마크 영역으로 빠른 이동이 가능해졌고, 제목 단위로 문서 탐색이 자연스러워졌다. Google Search Console에서도 구조화 데이터 점수가 올라갔다.

CSS는 거의 건드릴 필요가 없었다. 클래스 선택자 대신 태그 선택자를 쓸 수 있게 되어 오히려 스타일 코드가 간결해졌다.

배운 점

시맨틱 마크업은 추가 비용이 거의 없으면서도 접근성, SEO, 유지보수성을 모두 개선할 수 있는 가성비 좋은 작업이었다. 앞으로는 초기부터 적절한 태그를 선택하는 습관을 들여야겠다.