웹 애플리케이션 접근성 준수
직접 만든 탭·아코디언·모달·메뉴 같은 웹 애플리케이션 부품이 화면 낭독기와 키보드로 쓸 수 있도록 역할·상태·이름을 전달하는 방법. WAI-ARIA 코드 예시로 정리했습니다.
마지막 수정
무엇을 요구하나요?
직접 만든 웹 애플리케이션 부품(탭, 아코디언, 모달, 드롭다운 메뉴, 토글, 슬라이더 등)도 보조기기로 쓸 수 있어야 합니다. 그러려면 부품마다 다음 세 가지가 프로그램에 전달되어야 합니다.
| 정보 | 뜻 | 예 |
|---|---|---|
| 역할(role) | 무엇인가 | 버튼, 탭, 대화상자 |
| 상태(state) | 지금 어떤가 | 펼침/접힘, 선택됨, 켜짐 |
| 이름(name) | 무엇을 하는가 | “메뉴 열기”, “배송 정보” |
그리고 키보드로 조작할 수 있어야 합니다.
자주 틀리는 예
1. 아코디언의 펼침 상태를 알리지 않음
<div class="acc-head" onclick="toggle(1)">배송 안내</div>
<div class="acc-body" id="acc1">…</div>
<h3>
<button type="button" aria-expanded="false" aria-controls="acc1">배송 안내</button>
</h3>
<div id="acc1" hidden>…</div>
버튼을 누를 때 aria-expanded를 true/false로 바꾸고 hidden을 토글합니다. 간단한 경우는 HTML의 <details>·<summary>를 써도 됩니다.
2. 탭 메뉴에 역할·선택 상태가 없음
<div class="tabs"><span class="on">상세정보</span><span>리뷰</span></div>
<div role="tablist" aria-label="상품 정보">
<button role="tab" id="t1" aria-selected="true" aria-controls="p1">상세정보</button>
<button role="tab" id="t2" aria-selected="false" aria-controls="p2" tabindex="-1">리뷰</button>
</div>
<div role="tabpanel" id="p1" aria-labelledby="t1">…</div>
<div role="tabpanel" id="p2" aria-labelledby="t2" hidden>…</div>
탭 사이는 방향키로 이동하는 것이 일반적인 동작입니다(APG 탭 패턴).
3. 레이어 팝업이 대화상자로 알려지지 않음
<div class="popup">…</div>
<dialog id="notice" aria-labelledby="notice-title">
<h2 id="notice-title">공지사항</h2>
…
<button type="button" onclick="this.closest('dialog').close()">닫기</button>
</dialog>
<dialog>를 showModal()로 열면 역할, 초점 가두기, Esc 닫기를 브라우저가 처리합니다.
확인하는 방법
- 화면 낭독기로 각 부품에 가서 역할·상태·이름이 읽히는지 들어보세요. 예: “배송 안내, 버튼, 접힘”.
- 상태를 바꾼 뒤(펼치기, 탭 선택) 바뀐 상태가 읽히는지 확인하세요.
- 확장 프로그램 페이지 검사는 잘못된 ARIA 속성 값, 필요한 상위 역할이 없는 요소(예: tablist 없는 tab), 이름 없는 버튼, 버튼 안에 넣은 링크 등을 찾아줍니다. 역할에 맞는 키보드 동작은 직접 확인해야 합니다.
직접 점검해 보기
- 페이지 검사 — 확장 프로그램으로 열린 페이지에서 이 항목과 관련된 문제를 찾습니다
- 수동 점검표 — 33개 항목을 직접 확인하고 기록합니다
- 자주 틀리는 10개 항목 맛보기 점검표 — 무료 엑셀
자주 묻는 질문
ARIA를 많이 쓸수록 좋은가요?
아닙니다. 잘못 쓴 ARIA는 없는 것보다 나쁩니다. button, a, details, dialog처럼 원래 기능이 있는 HTML 요소를 먼저 쓰고, 꼭 필요할 때만 ARIA로 보완하세요.
어떤 부품을 어떻게 만들어야 하는지 참고할 자료가 있나요?
W3C의 ARIA Authoring Practices Guide(APG)에 탭, 아코디언, 모달, 메뉴 등 부품별 키보드 동작과 코드 예시가 정리되어 있습니다.
함께 보면 좋은 항목
이 글은 셀프 점검을 돕는 안내이며 공식 해설이나 인증 심사 기준을 대신하지 않습니다. 정확한 기준은 한국형 웹 콘텐츠 접근성 지침 2.2 원문을 확인하세요.