링크나 양식(form)에서는 tabindex 속성을 이용하여 탭 이동 순서를 지정할 수 있습니다.
기술설명
이 기술의 목적은 기본 탭 순서가 논리적이지 않을 때 탭 순서를 정하는 것입니다.
대부분 [(웹접근성 지침-일반기술 G59) 상호작용하는 요소들 또한 콘텐츠 순서에 맞게 순서대로 배치하자.]의 내용처럼 만들면 이 기술을 사용할 필요는 없습니다.
개발자가 텝 순서를 직접 지정할 경우 탭의 이동흐름이 직관적이지 않아서 사용자에게 혼란을 줄 수도 있습니다.
하지만 경우에 따라 코드 순서대로 탭이 이동하는 것이 아니라 콘텐츠의 관계로 탭이 이동되어야 합니다.
tabindex 값이 0보다 크면 tabindex가 없는 <a>요소나 tabindex가 0인 <a>요소 보다 먼저 초점(focus)을 받습니다.
tabindex 값이 0보다 큰 요소들이 먼저 포커스를 받은 다음에 나머지 요소들이 순서대로 초점을 받습니다.
예시
[예시1] 족보 검색을 통해 결혼 기록을 찾을수 있습니다.
이 검색 양식에서는 신랑과 신부에 대한 입력 필드가 있습니다.
첫 번째 필드는 신랑, 두 번 째 필드에서는 신부 입력 필드가 포함된 테이블입니다.
콘텐츠 순서는 행 단위이지만 제작자가 봤을 때는 열 단위로 이동하는 것이 더 논리적이라고 판단했습니다.
그래서 신랑 기준을 먼저다 입력한 후에 신부 기준을 입력할 수 있게 했습니다.
tabindex 속성을 이용하여 열 단위로 이동할 수 있게 탭 순서를 지정했습니다.
<form action="#" method="post">
<table summary="첫번째 줄에는 신랑의 검색 기준이 포함되어 있고 두 번째 줄에는 신부의 검색 기준이 포함되어 있습니다.">
<caption>결혼 기록 검색</caption>
<tr>
<th>검색 기준</th>
<th>신랑</th>
<th>신부</th>
</tr>
<tr>
<th>First name</th>
<td><input type="text" size="30" value="" name="groomfirst"
title="신랑의 성" tabindex="1"></td>
<td><input type="text" size="30" value="" name="bridefirst"
title="신부의 성" tabindex="4"></td>
</tr>
<tr>
<th>Last name</th>
<td><input type="text" size="30" value="" name="groomlast"
title="신랑의 이름" tabindex="2"></td>
<td><input type="text" size="30" value="" name="bridelast"
title="신부의 이름“ tabindex="5"></td>
</tr>
<tr>
<th>출생지</th>
<td><input type="text" size="30" value="" name="groombirth"
title="신랑의 출생지" tabindex="3"></td>
<td><input type="text" size="30" value="" name="bridebirth"
title="신부의 출생지" tabindex="6"></td>
</tr>
</table>
</form>
[예시2] 웹 페이지 우측상단에 검색 필드가 있습니다.
이 필드는 tabindex=’1’로 설정되어 있습니다. 그래서 콘텐츠 순서에서 첫 번째가 아니지만 탭 순서로는 첫 번째가 됩니다.
[예시3] Tabindex 값은 순차적일 필요도 없고 특정 값으로 시작할 필요도 없으며, 고유할 필요도 없습니다.
동일한 Tabindex 값을 가졌다면 코딩된 순서 데로 탭 순서가 이동됩니다.
<a href="xxx" tabindex = "1">목록의 1번째 링크</a>
<a href="xxx" tabindex = "1">목록의 2번째 링크/a>
<a href="xxx" tabindex = "1">추가된 링크</a>
<a href="xxx" tabindex = "1">목록의 3번째 링크</a>
...
<a href="xxx" tabindex = "1">목록의 20번째 링크</a>
콘텐츠의 일부에서 탭 순서가 콘텐츠 순서에 따라야 하는 경우, 각 요소에 다른 번호를 지정하기 보다는 모두 동일한 Tabindex 값을 주면 오류 발생을 줄일 수 있습니다.
또한 해당 요소들을 재배치 하거나 요소를 추가하는 경우 논리전인 탭 순서를 유지 할 수 있습니다.
자료
관련기술
G59: 콘텐츠 내의 순서와 관계에 따라 대화형 요소를 순서대로 배치합니다.
F44: 의미와 작동성을 유지하지 않는 탭 순서를 생성하기 위해 tabindex를 사용하여 성공 기준 2.4.3을 충족하지 못함
F85: 순차적 탐색 순서에서 트리거 컨트롤과 인접하지 않은 대화 상자나 메뉴를 사용하여 성공 기준 2.4.3을 충족하지 못함
점검절차
1. tabindex를 사용하는 확인합니다.
2. tabindex를 사용한다면 지정된 탭 순서가 콘텐츠의 관계에 따라 접합하게 주어졌는지 확인합니다.
https://link.coupang.com/a/cl4UpZ
Do it! HTML + CSS + 자바스크립트 웹 표준의 정석: 한 권으로 끝내는 웹 기본 교과서 전면 개정판 - 프
쿠팡에서 Do it! HTML + CSS + 자바스크립트 웹 표준의 정석: 한 권으로 끝내는 웹 기본 교과서 전면 개정판 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 프로그래밍 언어 제품도 바로 쿠
www.coupang.com
https://link.coupang.com/a/cl4UBK
Do it! 인터랙티브 웹 페이지 만들기 - HTML/CSS | 쿠팡
쿠팡에서 Do it! 인터랙티브 웹 페이지 만들기 구매하고 더 많은 혜택을 받으세요! 지금 할인중인 다른 HTML/CSS 제품도 바로 쿠팡에서 확인할 수 있습니다.
www.coupang.com
*이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
나의 정리
링크나 양식(form)에서는 tabindex 속성을 이용하여 탭 이동 순서를 지정할 수 있습니다.
‘탭 이동 순서’란? 키보드의 [Tab]키를 눌렀을 때 요소가 초점(focus)을 받으며 이동되는 순서를 말합니다.
이 순서를 tabindex라는 속성을 이용하면 탭 이동 순서를 지정 할 수 있습니다.
tabindex=“-1”이라고 설정하면 탭 이동을 허락하지 않습니다. 즉 탭으로 선택할 수 없는 요소가 되는 것입니다.
tabindex=“0”은 기본 값으로 탭으로 선택할 수 있는 요소가 됩니다.
tabindex=“1”이면 tabindex=“0”인 요소보다 먼저 탭 순서가 주어집니다.
tabindex 값이 1 이상으로 주어지면 그것은 전체적인 순서가 됩니다.
예를 tabindex=“1”, tabindex=“2”, tabindex=“3”이 있다면 tabindex=“1”로 가장 먼저 이동하고 그다음에 tabindex=“2”, 그 다음에 tabindex=“3”으로 이동합니다. 그리고 마지막으로 tabindex=“0”인 요소로 이동합니다.
tabindex이용한 탭 이동 순서는 브라우저로 보여 지는 시각적 배치와는 다르게 이동 될 수 있기 때문에 사용자에게 혼란을 줄 수 있습니다. 그러므로 제작자는 신중하게 콘텐츠의 요들간의 관계를 잘 생각해서 논리적으로 탭 순서를 주어야 할 것입니다.
H4: Creating a logical tab order through links, form controls, and objects
https://www.w3.org/TR/2016/NOTE-WCAG20-TECHS-20161007/H4.html
H4: Creating a logical tab order through links, form controls, and objects | Techniques for WCAG 2.0
The objective of this technique is to provide a logical tab order when the default tab order does not suffice. Often, G59: Placing the interactive elements in an order that follows sequences and relationships within the content is sufficient and this techn
www.w3.org
'웹접근성지침(WCAG2.0)' 카테고리의 다른 글
[H25] title요소에 사이트의 제목을 제공하자 (1) | 2025.05.09 |
---|---|
[H24] '이미지 맵'에 '대체 텍스트'를 제공하자. (1) | 2025.05.07 |
[H2] 이미지 링크와 텍스트 링크가 인접해 있고 링크가 같다면 하나로 묶어주자 (0) | 2025.04.29 |
[웹접근성 지침-일반기술 G206] 사용자가 가로 스크롤 없이 텍스트를 읽을 수 있게 만들자 (1) | 2025.04.24 |
[웹접근성 지침-일반기술 G205] 색상으로 정보를 알려주는 '폼 컨트롤 레이블(form control labels)'에 '텍스트 큐(text cue)'를 포함 하자. (1) | 2025.04.22 |