역할 · 문서 구조
role="generic"
스스로는 아무 의미가 없는 이름 없는 컨테이너입니다. <div>, <span>의 암묵적 역할이며 작성자가 직접 쓰지 않습니다.
한눈에 보기
- 분류
- 문서 구조
- 대응 HTML
<div>,<span>등 (<b>,<i>,<u>,<small>, 이름 없는<section>포함)- 이름 정하는 방법
- 금지 (prohibited)
- 이름 필수
- 아니요
- 필수 상위 요소
- 없음
- 필수 하위 요소
- 없음
설명
generic은 WAI-ARIA 1.2에서 추가된 역할로, HTML의 <div>·<span>처럼 의미 없는 요소를 브라우저가 접근성 트리에 표현하기 위한 것입니다. 명세는 작성자가 콘텐츠에 이 역할을 쓰지 말라고 정하고 있습니다.
none/presentation과의 차이
none/presentation은 요소의 의미를 지워 접근성 트리에서 아예 빼는 반면, generic 요소는 트리에 남아 위치·크기 정보와 aria-live 같은 일부 속성을 제공할 수 있습니다. 그래서 <div aria-live="polite">가 라이브 리전으로 동작합니다.
이름 금지
generic에는 aria-label, aria-labelledby, aria-roledescription을 쓸 수 없습니다. 그래서 의미 없는 <div aria-label="…">, <span aria-label="…">은 화면낭독기가 읽지 않는 경우가 많습니다. 이름이 필요한 묶음이라면 group이나 region처럼 이름을 가질 수 있는 역할을 씁니다.
테스터 관점
<div aria-label>, <span aria-label>로 정보를 전달하는 코드를 찾으면 이름이 무시될 수 있다고 지적합니다. 아이콘이라면 role="img"를 함께 주거나 숨긴 텍스트를 씁니다.
함께 쓰는 속성
전역 속성(이름·설명 등)은 모든 역할에 쓸 수 있어 생략했습니다.
사용 예
div에 aria-label만 (비권장)
<div aria-label="필수 항목">*</div>generic은 이름이 금지되어 있어 “필수 항목”이 읽히지 않을 수 있습니다.
대신 이렇게
<span aria-hidden="true">*</span><span class="sr-only">필수 항목</span>
<!-- 또는 의미 있는 역할 -->
<span role="img" aria-label="필수 항목">*</span>화면낭독기에서는
| 상황 | 들리는 안내 (예) |
|---|---|
| div 안 텍스트 읽기 | (역할 안내 없이 내용만 읽음) |
사용 지침
이렇게 쓰세요
- 의미 없는 컨테이너는 그냥
<div>/<span>으로 둡니다. - 이름이 필요하면 group, region, img 등 이름을 허용하는 역할을 씁니다.
이렇게 쓰지 마세요
role="generic"을 직접 쓰지 않습니다.- 의미 없는 요소에
aria-label로 정보를 담지 않습니다.