ARIA 접근성 가이드

KWCAG 2.2 · 6. 운용의 용이성 · 6.1 입력장치 접근성

6.1.2 초점 이동과 표시

키보드에 의한 초점은 논리적으로 이동해야 하며, 시각적으로 구별할 수 있어야 합니다.

KWCAG 2.0

한눈에 보기

검사 항목
6.1.2 초점 이동과 표시
원칙
6. 운용의 용이성
지침
6.1 입력장치 접근성
도입
KWCAG 2.0

요구 사항

모든 기능을 키보드로 사용할 때 사용자 입력 간의 초점 이동은 적절한 순서를 따라야 하며, 그 과정에서 조작이 불가능해지거나 갑자기 페이지가 바뀌면 안 됩니다. 또 초점을 받은 콘텐츠는 시각적으로 구별되어야 합니다.

  • 초점 이동 순서 유지: 초점 이동 순서는 사용자가 예측하는 순서와 일치해야 합니다. 예를 들어 아이디 → 비밀번호 → 로그인 버튼 순이어야 합니다.
  • 함정 또는 오류 방지: 더 이상 키보드 조작이 불가능해 다음·이전 요소로 초점을 옮길 수 없는 상태(키보드 함정)가 생기지 않아야 합니다.
  • 초점의 시각화: 마우스나 키보드로 초점을 받은 컨트롤은 시각적으로 구별되어야 합니다. 마우스와 키보드의 초점 표시 방법이 달라도 되며, 초점 표시는 시간 제한 없이 유지되어야 합니다.

KWCAG 2.1의 해당 항목: 6.1.2 초점 이동(항목 이름에 “표시”가 추가됨)

왜 필요한가요

화면낭독기 사용자는 주변 배치를 볼 수 없어 초점 순서가 뒤섞이면 내용을 이해하기 어렵습니다. 키보드 사용자는 초점 표시가 없으면 지금 어디에 있는지 알 수 없고, 키보드 함정에 빠지면 페이지를 더 이상 사용할 수 없습니다.

도움받는 사용자

  • 시각장애인(화면낭독기 사용자)
  • 저시력 사용자
  • 키보드·스위치를 쓰는 지체장애인
  • 고령자

적용 방법

초점 순서는 코드 순서로 정하고 양수 tabindex(1 이상)는 쓰지 않습니다. 초점 표시는 outline: none으로 없애지 말고, 필요하면 :focus-visible로 더 잘 보이게 바꿉니다.

초점 표시 스타일
/* 기본 초점 표시를 지우지 말고 강화합니다 */
:focus-visible {
  outline: 3px solid #0b57d0;
  outline-offset: 2px;
}
/* 비권장 */
/* *:focus { outline: none; } */

대화상자처럼 의도적으로 초점을 가두는 경우에도 Esc나 닫기 버튼으로 빠져나올 수 있어야 하고, 닫힌 뒤에는 여는 버튼으로 초점을 돌려 줍니다(대화상자 패턴).

JavaScript
function closeDialog() {
  dialog.close();          // <dialog> 요소
  openerButton.focus();    // 연 버튼으로 초점 복귀
}

사례

코드 순서 = 초점 순서

권장HTML
<form>
  <label for="id">아이디</label><input id="id">
  <label for="pw">비밀번호</label><input id="pw" type="password">
  <button>로그인</button>
</form>

양수 tabindex로 순서 강제

비권장HTML
<input id="pw" tabindex="1">
<button tabindex="2">로그인</button>
<input id="id" tabindex="3">

초점 표시 제거

비권장HTML
<style>a:focus, button:focus { outline: 0; }</style>

자주 하는 실수

  • CSS 초기화로 outline을 없애 초점 위치가 보이지 않습니다.
  • 양수 tabindex로 초점 순서가 화면 순서와 다릅니다.
  • 레이어 팝업이 열려도 초점이 팝업으로 가지 않거나, 닫은 뒤 페이지 처음으로 돌아갑니다.
  • 동영상 플레이어·에디터 안에 들어가면 Tab으로 빠져나올 수 없습니다(키보드 함정).
  • 초점 표시가 몇 초 뒤 사라집니다.
  • 화면에 보이지 않는 숨김 메뉴 링크에 초점이 갑니다.

검사 방법

  • Tab과 Shift+Tab으로 페이지 처음부터 끝까지 이동하며 순서가 논리적인지 확인합니다.
  • 모든 초점 위치에서 초점 표시가 눈에 보이는지, 계속 유지되는지 확인합니다.
  • 팝업·위젯·플레이어 안팎으로 초점이 자유롭게 오가는지(키보드 함정이 없는지) 확인합니다.
  • 보이지 않는 요소에 초점이 가지 않는지 확인합니다.

관련 ARIA

다른 지침의 대응 항목