속성 · 표·목록 구조
aria-level
제목·트리 항목·중첩 목록 등이 계층 구조에서 몇 번째 수준인지 알립니다.
한눈에 보기
- 구분
- 속성 (Property)
- 분류
- 표·목록 구조
- 값 형식
- 정수 (integer), 1 이상
- 기본값
없음- 적용 범위
- 특정 역할에만 사용
- HTML 대체
<h1>~<h6>, 중첩된<ul>·<ol>
설명
aria-level은 계층 구조에서의 깊이를 1부터 셉니다. 숫자가 클수록 깊은 수준입니다. heading, treeitem, listitem, row(treegrid 안에서만)에 씁니다.
heading에서는 필수 속성입니다. <div role="heading" aria-level="2">는 <h2>와 같은 의미가 됩니다. 하지만 네이티브 <h1>~<h6>가 있으므로 이를 먼저 씁니다. ARIA 제목은 6보다 큰 수준이 필요하거나, 마크업을 바꿀 수 없는 위젯 안에서만 고려합니다(6을 넘는 수준은 보조기술마다 처리가 다릅니다).
treeitem과 treegrid의 row에서는 DOM 중첩으로 수준을 계산할 수 있으면 생략해도 되지만, 가상 렌더링이나 평평한(flat) DOM 구조처럼 DOM 계층이 실제 수준을 반영하지 못하면 직접 넣어야 합니다. 명세는 이 속성을 컨테이너(group)가 아닌 항목 자체에 넣도록 정합니다. table·grid의 row에 넣은 값은 노출되지 않습니다.
ARIA 1.3 초안에서는 listitem이 이 속성의 사용 역할에서 빠지는 방향이므로, 중첩 목록은 실제 <ul> 중첩으로 표현하는 것이 좋습니다.
검수할 때는 제목 목록(NVDA+F7)이나 트리 탐색에서 안내되는 수준이 화면의 시각적 계층과 일치하는지, 제목 수준을 건너뛰지 않았는지(h2 다음 바로 h4 등), 트리 항목을 펼친 뒤 하위 항목의 수준이 1씩 증가하는지 확인합니다.
값
| 값 | 의미 |
|---|---|
<정수 ≥ 1> | 계층 깊이입니다. 1이 가장 바깥(최상위) 수준입니다. |
(생략) 기본값 | treeitem·listitem은 DOM 중첩으로 계산합니다. heading은 필수이므로 생략하지 않습니다. |
사용 예
네이티브 제목 우선
<!-- 가능하면 -->
<h2>배송 안내</h2>
<!-- 마크업을 바꿀 수 없을 때만 -->
<div role="heading" aria-level="2">배송 안내</div>평평한 DOM으로 그린 트리
<ul role="tree" aria-label="폴더">
<li role="treeitem" aria-level="1" aria-expanded="true" aria-setsize="2" aria-posinset="1">문서</li>
<li role="treeitem" aria-level="2" aria-setsize="1" aria-posinset="1">보고서.hwp</li>
<li role="treeitem" aria-level="1" aria-setsize="2" aria-posinset="2">사진</li>
</ul>DOM 중첩이 없으므로 수준·위치·개수를 모두 직접 지정합니다.
컨테이너에 수준 지정
<!-- 비권장: group이 아니라 각 treeitem에 넣어야 합니다 -->
<ul role="group" aria-level="2">
<li role="treeitem">보고서.hwp</li>
</ul>수준 바꾸기
heading.setAttribute('aria-level', String(level)); // 1 이상의 정수직접 해 보기
제목 수준을 골라 보세요. role="heading" 요소의 aria-level이 바뀝니다. 화면낭독기에서는 제목 탐색(H 키, 숫자 키 1~6)으로 이 제목의 수준이 다르게 안내됩니다.
주문 후 2~3일 안에 도착합니다.
실시간 코드 — 조작하면 속성 값이 바뀌는 모습을 볼 수 있습니다
화면낭독기에서는
| 상황 | 들리는 안내 (예) |
|---|---|
| 제목으로 이동 (H 키) | 제목 수준 2, 배송 안내 |
| 트리 항목에 포커스 | 보고서.hwp, 1/1, 수준 2 |
| 제목 목록 열기 (NVDA+F7) | 수준별로 들여쓰기된 제목 목록에 표시 |
사용 지침
이렇게 쓰세요
- 제목은 먼저
<h1>~<h6>를 씁니다. - DOM 계층이 실제 수준을 반영하지 못하는 트리·트리 그리드에서는 각 항목에 넣습니다.
- 시각적 계층과 수준 값을 일치시키고, 수준을 건너뛰지 않습니다.
이렇게 쓰지 마세요
group이나tree같은 컨테이너에 넣지 않습니다.- 0이나 음수를 넣지 않습니다.
table·grid의row에 넣지 않습니다(treegrid에서만 의미가 있음).- 글자 크기를 바꾸려고 수준을 바꾸지 않습니다. 모양은 CSS로 조정합니다.