속성 · 관계 · 전역
aria-flowto
문서 순서와 다른 대체 읽기 순서에서 다음에 올 요소를 ID로 알립니다. 보조기술 지원이 매우 제한적입니다.
한눈에 보기
- 구분
- 속성 (Property)
- 분류
- 관계
- 값 형식
- ID 참조 목록 (ID reference list)
- 기본값
없음- 적용 범위
- 모든 요소 (전역 속성)
- HTML 대체
- 없음 (DOM 순서 자체를 논리적인 읽기 순서로 맞추는 것이 기본 방법입니다)
설명
aria-flowto는 "이 요소 다음에는 저 요소를 읽을 수 있습니다"라는 대체 읽기 경로를 제공합니다. 화면낭독기는 기본적으로 DOM 순서대로 읽는데, 이 속성은 사용자가 원할 때만 그 순서를 건너뛰어 지정한 요소로 이동하도록 돕습니다. ID를 여러 개 넣으면 보조기술은 이를 갈림길 선택지로 제시해야 합니다.
원래 의도한 쓰임은 신문 지면처럼 기사가 여러 단에 걸쳐 이어지거나, 순서도·다이어그램처럼 공간 배치가 읽기 순서를 결정하는 콘텐츠입니다. 이 속성은 탭 이동 순서(포커스 순서)를 바꾸지 않습니다. 오직 보조기술의 읽기 명령에만 영향을 줍니다.
지원 현황이 가장 큰 문제입니다. JAWS는 Windows 브라우저에서 흐름(flow)을 따라 이동하는 기능을 제공하지만, NVDA·VoiceOver·TalkBack·Narrator는 사실상 이 속성을 사용하지 않습니다. 따라서 대부분의 사용자에게는 아무 효과가 없습니다.
그래서 실무에서는 aria-flowto에 기대기보다 DOM 순서를 논리적인 읽기 순서와 일치시키는 것이 원칙입니다(WCAG 1.3.2 의미 있는 순서). CSS Grid·Flexbox의 order, 절대 위치 지정으로 화면 순서만 바꾸는 방식은 이 원칙을 깨기 쉬우므로 주의합니다. 순서를 바꿀 수 없는 특수한 경우에만 보조 수단으로 덧붙입니다.
검수할 때는 이 속성이 있다면 가리키는 ID가 존재하는지 확인하고, 그보다 먼저 DOM 순서만으로 읽었을 때 내용이 자연스럽게 이어지는지 확인합니다. aria-flowto가 있다는 이유로 순서 문제를 통과시키지 않습니다.
값
| 값 | 의미 |
|---|---|
<ID 목록> | 대체 읽기 순서에서 다음에 올 요소들의 ID입니다. 하나면 바로 그 요소로, 여러 개면 선택지로 제시됩니다. |
사용 예
여러 단에 이어지는 기사
<div class="col" id="part-1" aria-flowto="part-2">
<p>기사 첫 부분...</p>
</div>
<aside class="ad">광고</aside>
<div class="col" id="part-2">
<p>기사 이어지는 부분...</p>
</div>JAWS 사용자는 첫 부분에서 바로 이어지는 부분으로 이동할 수 있지만, 다른 화면낭독기 사용자는 광고까지 순서대로 듣습니다.
순서도의 갈림길
<div id="step-check" aria-flowto="step-yes step-no">재고가 있습니까?</div>
<div id="step-yes" aria-label="예: 결제로 이동">결제</div>
<div id="step-no" aria-label="아니요: 입고 알림 신청">입고 알림 신청</div>더 확실한 방법: DOM 순서 자체를 맞추기
<!-- 권장: 기사를 이어서 쓰고, 광고는 기사 뒤로 -->
<article>
<p>기사 첫 부분...</p>
<p>기사 이어지는 부분...</p>
</article>
<aside class="ad">광고</aside>화면낭독기에서는
| 상황 | 들리는 안내 (예) |
|---|---|
| aria-flowto가 있는 요소에서 흐름 이동 명령 (JAWS) | 기사 이어지는 부분...· JAWS |
| 같은 요소 (NVDA, VoiceOver) | (관계를 안내하지 않고 DOM 순서대로 읽음) |
사용 지침
이렇게 쓰세요
- 먼저 DOM 순서를 논리적인 읽기 순서와 맞춥니다.
- 순서를 바꿀 수 없는 다단 기사·순서도 같은 특수한 경우에만 보조 수단으로 씁니다.
- 여러 경로를 줄 때는 대상 요소에 경로를 설명하는 이름을 붙입니다.
이렇게 쓰지 마세요
- CSS로 뒤섞인 화면 순서를
aria-flowto로 "고쳤다"고 판단하지 않습니다. 대부분의 화면낭독기는 무시합니다. - 탭 이동 순서를 바꾸려고 쓰지 않습니다. 포커스 순서에는 영향이 없습니다.
- 존재하지 않는 ID를 넣지 않습니다.
사용할 수 있는 역할
전역 속성이므로 모든 역할과 HTML 요소에 쓸 수 있습니다. 특히 다음 역할과 자주 함께 씁니다.