접근 가능한 리치 인터넷 애플리케이션 (WAI-ARIA) 1.3

W3C 첫 번째 공개 워킹 드래프트

이 문서에 대한 자세한 정보
현재 버전:
https://www.w3.org/TR/2024/WD-wai-aria-1.3-20240123/
최신 공개 버전:
https://www.w3.org/TR/wai-aria-1.3/
최신 에디터스 드래프트:
https://w3c.github.io/aria/
변경 이력:
https://www.w3.org/standards/history/wai-aria-1.3/
커밋 이력
최신 권고안:
https://www.w3.org/TR/wai-aria/
에디터:
James Nurthen (Adobe)
Peter Krautzberger (krautzource UG)
이전 에디터:
Michael Cooper (W3C) (2023년까지 에디터)
Joanmarie Diggs (Igalia, S.L.) (2021년까지 에디터)
Shane McCarron (Spec-Ops) (2018년까지 에디터)
Richard Schwerdtfeger (Knowbility) (2017년 10월까지 에디터)
James Craig (Apple Inc.) (2016년 5월까지 에디터)
피드백:
GitHub w3c/aria (풀 리퀘스트, 새 이슈, 오픈 이슈)

요약

웹 콘텐츠의 접근성을 위해서는 위젯, 구조, 동작에 대한 의미론적 정보가 필요합니다. 이를 통해 보조 기술이 장애인에게 적절한 정보를 전달할 수 있습니다. 이 명세는 접근 가능한 UI 요소를 정의하는 역할, 상태, 속성의 온톨로지를 제공하며, 웹 콘텐츠와 애플리케이션의 접근성과 상호 운용성을 개선하는 데 사용할 수 있습니다. 이러한 의미 체계는 저자가 문서 수준의 마크업에서 사용자 인터페이스 동작과 구조적 정보를 보조 기술에 올바르게 전달할 수 있도록 설계되었습니다. 본 버전은 보조 기술과의 상호 운용성을 높여 더 일관된 접근성 모델을 제공하기 위해 WAI-ARIA 1.1 [wai-aria-1.1] 이후의 새로운 기능을 추가하였으며, [HTML] 및 [SVG2]에 보다 일관된 접근성 모델을 형성합니다. 이 명세는 [HTML] 및 [SVG2] 둘 다를 보완합니다.

이 문서는 WAI-ARIA 제품군의 일부이며, 이에 대한 설명은 WAI-ARIA 개요에서 확인할 수 있습니다.

본 문서의 상태

이 섹션은 본 문서가 발행될 당시의 상태를 설명합니다. 현재 W3C의 발행 목록과 본 기술 보고서의 최신 개정본은 W3C 기술 보고서 인덱스 https://www.w3.org/TR/에서 확인할 수 있습니다.

Accessible Rich Internet Applications 워킹 그룹은 명세서의 모든 측면에 대한 의견을 받고 있습니다. 의견을 제출하실 때, 관련 문서의 맥락에서 문제를 고려해 주세요. 의견을 남기려면 W3C ARIA GitHub 저장소에 이슈를 등록하십시오. 만약 이것이 불가능하다면, public-aria@w3.org로 이메일을 보내주세요 (의견 아카이브). 문서의 진행 중인 업데이트는 공개된 에디터스 드래프트에서 확인할 수 있습니다.

본 문서는 Accessible Rich Internet Applications 워킹 그룹에서 권고 프로세스를 통해 첫 번째 공개 워킹 드래프트로 발행되었습니다.

첫 번째 공개 워킹 드래프트로 발행되었다고 해서 W3C 및 그 회원사의 공식 승인임을 의미하지 않습니다.

이 문서는 초안이며 언제든지 업데이트, 대체 또는 더 이상 사용되지 않을 수 있습니다. 현재 진행 중인 작업임을 감안하여 다른 곳에 인용하는 것은 적절하지 않습니다.

본 문서는 W3C 특허 정책 하에 운영되는 그룹이 작성하였습니다. W3C특허 공개 내역의 공개 목록을 관리하며, 그룹 산출물과 관련된 모든 특허 공개가 이 페이지에 포함되어 있습니다. 또한 특허 공개 방법에 대한 안내도 함께 제공됩니다. 어떠한 개인이 해당 특허가 필수 청구항을 포함하고 있다고 판단할 경우에는 W3C 특허 정책 6항에 따라 해당 정보를 공개해야 합니다.

본 문서는 2023년 11월 3일 W3C 프로세스 문서에 의해 관리됩니다.

1. 소개

이 절은 비규범적입니다.

이 명세의 목표는 다음과 같습니다:

WAI-ARIA는 웹 콘텐츠와 애플리케이션의 접근성과 상호 운용성을 향상시키는 프레임워크를 제공하는 기술 명세입니다. 이 문서는 주로 커스텀 위젯 및 기타 웹 애플리케이션 컴포넌트를 개발하는 개발자를 위해 작성되었습니다. 다른 대상자를 위한 관련 문서 링크는 WAI-ARIA 개요에서 확인할 수 있습니다. 예를 들어, 개발자에게 WAI-ARIA가 해결하고자 하는 접근성 문제와 핵심 개념, 그리고 기술적 접근방식에 대해 안내하는 WAI-ARIA 작성 실무 [WAI-ARIA-PRACTICES-1.2] 등이 있습니다.

이 문서는 현재 역할의 두 가지 측면, 즉 사용자 인터페이스 기능성과 구조적 관계를 다룹니다. 추가 정보와 사용 사례는 WAI-ARIA 작성 실무 [WAI-ARIA-PRACTICES-1.2]에서 대화형 콘텐츠의 접근성을 위해 역할을 사용하는 방법을 확인할 수 있습니다.

이 명세서에서 정의된 역할은 플랫폼 접근성 API에서 사용하는 역할을 지원하도록 설계되었습니다. 동적 웹 콘텐츠 내 요소에 이러한 역할을 선언하는 것은 웹 콘텐츠와 접근성 API를 활용하는 보조 기술 사이의 상호 운용성을 지원하는 데 목적이 있습니다.

이 표준을 지원하기 위한 스키마는 확장 가능하도록 설계되어, 기본 역할을 확장하여 커스텀 역할을 만들 수 있습니다. 이를 통해 사용자 에이전트는 최소한 기본 역할을 지원하고, 커스텀 역할을 지원하는 에이전트는 향상된 접근을 제공할 수 있습니다. 이러한 구조의 많은 부분은 [XMLSCHEMA11-2]에서 형식화될 수 있습니다. 그러나 XSD에서는 baseConcepts와 같은 역할 간 유사성이나 더 자세한 정의를 제공할 수 없습니다.

WAI-ARIA 1.2는 WAI-ARIA 1.2 제품군의 일부로, WAI-ARIA 및 기타 웹 콘텐츠 언어의 의미를 접근성 API에 노출하는 방법을 정의합니다.

1.1 리치 인터넷 애플리케이션 접근성

웹 접근성 분야는 장애인이 웹 콘텐츠를 사용할 수 있도록 하는 방법을 정의합니다. 특정 유형의 장애를 가진 사람들은 보조 기술(AT)을 사용하여 콘텐츠와 상호작용합니다. 보조 기술은 콘텐츠의 표현을 사용자에게 보다 적합한 형식으로 변환하거나, 사용자가 다양한 방법으로 상호작용할 수 있도록 합니다. 예를 들어 사용자는 마우스 드래그 대신 방향키로 슬라이더 위젯과 상호작용할 필요가 있거나, 그렇게 선택할 수도 있습니다. 이를 효과적으로 구현하려면 소프트웨어가 콘텐츠의 의미를 이해해야 합니다. 의미론은 의미의 과학이며, 이 경우에는 사용자의 관점에서 사용자 인터페이스와 콘텐츠 요소에 역할, 상태, 속성을 부여하는데 사용됩니다. 예를 들어 어떤 문단이 의미적으로 올바르게 태그된다면, 보조 기술은 해당 문단을 나머지 콘텐츠와 분리된 단위로 정확한 경계를 인식할 수 있습니다. 조절 가능한 구간 슬라이더나 접을 수 있는 리스트(트리 위젯 등)는 위젯의 다양한 부분에 대해 보조 기술이 효과적으로 상호작용할 수 있도록 의미가 올바르게 식별되어야 하는 보다 복잡한 예시입니다.

신기술은 종종 접근성을 위한 의미 체계를 간과하며, 새로운 저작 실무는 종종 그러한 기술의 본래 의미를 오용합니다. 요소가 언어 내에서 하나의 정의된 의미를 가지지만, 개발자는 다른 의미로 이를 사용하기도 합니다.

예를 들어 웹 애플리케이션 개발자는 HTMLCSS 및 JavaScript를 사용하여 접이식 트리 위젯을 만듭니다. 하지만 HTML에는 의미론적 tree 요소가 없습니다. 비장애인 사용자에게는 이러한 구조가 실제 트리 위젯처럼 보이고 동작하겠지만, 의미가 올바르게 지정되지 않으면 해당 트리 위젯은 인지되거나 조작되기 어렵게 됩니다. 보조 기술이 역할을 인식하지 못할 수 있기 때문입니다. 마찬가지로, 개발자는 SVG에서도 JavaScript만으로 인터랙티브 버튼 위젯을 만듭니다. SVG에는 의미론적 button 요소가 없습니다. 비장애인에게는 버튼처럼 보이지만 의미를 주지 않으면, 해당 버튼은 인지되거나 조작될 수 없게 됩니다. 이는 보조 기술이 역할을 인식하지 못하기 때문입니다.

WAI-ARIA의 도입은 저자가 커스텀 위젯에 적절한 의미를 부여하여 접근 가능하고 사용 가능하며 보조 기술과 상호 운용되는 위젯을 만들 수 있도록 하는 방법입니다. 이 명세는 접근성 제품들이 일반적으로 인식하는 위젯과 구조 유형을, 콘텐츠에 부여할 수 있는 온톨로지역할을 통해 정의합니다. 이를 통해 특정 역할이 부여된 요소는 구현 호스트 언어의 상속 의미와 상관없이 특정 위젯 또는 구조적 유형으로 인식될 수 있습니다. 역할은 플랫폼의 접근성 API에서 일반적으로 사용되는 속성이며, 보조 기술은 이를 활용하여 정보를 사용자에게 제공합니다.

역할 모델은 인터랙션 위젯 및 문서 구조를 나타내는 요소를 포함합니다. 역할 모델은 상속 관계를 설명하며, 각 역할이 지원하는 속성에 대한 세부 정보를 제공합니다. 역할과 접근성 API의 매핑에 대한 정보는 Core Accessibility API Mappings [CORE-AAM-1.2]에서 확인할 수 있습니다.

역할은 요소 유형에 해당하며, 시간이나 사용자 동작에 따라 변경되지 않습니다. 역할 정보는 보조 기술이 사용자 에이전트와 상호작용할 때 사용되어, 특정 요소에 대한 정상적인 처리를 제공합니다.

상태 및 속성은 요소의 상호작용에 영향을 주고 설명하는 중요한 속성을 선언하는 데 사용됩니다. 이들은 사용자 에이전트 및 운영체제가 클라이언트 측 스크립트로 속성이 동적으로 변경되는 경우에도 요소를 올바르게 처리할 수 있도록 해줍니다. 예를 들어, 스크린 리더나 음성 명령 소프트웨어 등 대체 입력/출력 기술은 다양한 상호작용 상태(예: 비활성화, 체크됨 등)를 인식 및 효과적으로 조작하고 전달할 수 있어야 합니다.

보조 기술이 이러한 속성을 Document Object Model [DOM]을 통해 직접 접근하는 것도 가능하지만, 권장되는 방식은 사용자 에이전트가 상태와 속성을 운영체제의 접근성 API에 매핑하는 것입니다. 자세한 사항은 Core Accessibility API Mappings [CORE-AAM-1.2] 및 접근 가능한 이름과 설명 산출 [ACCNAME-1.2]를 참고하세요.

그림 1.0은 사용자 에이전트(예: 브라우저), 접근성 API, 보조 기술 간의 관계를 나타냅니다. 이는 사용자 에이전트가 보조 기술에 제공하는 "계약"을 설명하는데, 여기에는 GUI 기반의 다양한 접근 가능한 플랫폼에서 접근성 API로 제공되는 전형적인 정보(역할, 상태, 선택, 이벤트 알림, 관계 정보, 설명 등)가 포함됩니다. DOM(보통 HTML)은 일반적인 모델-뷰-컨트롤러 관계에서 데이터 모델과 뷰 역할을 담당하며, JavaScript는 표시되는 데이터의 스타일과 내용을 조작하는 컨트롤러입니다. 사용자 에이전트는 운영체제의 접근성 API에 관련 정보를 전달하며, 스크린 리더 등 보조 기술이 이를 활용할 수 있습니다.

The contract model with accessibility APIs

그림 1: 접근성 API와 함께하는 계약 모델

보다 자세한 정보와 역할을 활용한 대화형 콘텐츠의 접근성 제공 방법은 WAI-ARIA 작성 실무에서 확인할 수 있습니다.

대체 입력 장치 사용자는 키보드 접근 가능한 콘텐츠가 필요합니다. 새로운 의미 체계는 WAI-ARIA 작성 실무에서 권장하는 키보드 상호작용과 결합될 때, 대체 입력 솔루션을 통한 명령과 제어를 가능하게 합니다.

WAI-ARIA는 역할 모델과 XHTML 역할 랜드마크를 통해 탐색용 랜드마크를 도입합니다. 이는 손의 움직임이 어렵거나 시력이 약한 이용자에게 키보드 내비게이션 개선에 도움을 줍니다. 또한 WAI-ARIA는 인지적 학습 장애가 있는 사람들에게도 활용될 수 있습니다. 추가 의미 체계는 저자가 필요에 따라 구조를 재구성하거나 대체 콘텐츠로 바꿀 수 있도록 해줍니다.

보조 기술위젯의 상태 및 속성의 현재 값을 가져오고 설정하는 등 대체 입력을 지원할 수 있어야 합니다. 또한 객체의 선택 여부를 파악하고, 리스트박스/그리드 등 다중 선택 위젯을 관리해야 할 수도 있습니다.

음성 기반 명령 및 제어 시스템은 WAI-ARIArole 속성과 같은 의미 체계에서 이점을 얻어 오디오 정보를 사용자에게 효과적으로 전달할 수 있습니다. 예를 들어 역할이 menu이고 자식 요소들이 역할 menuitem인 경우 각각에 "초콜릿", "딸기", "바닐라"와 같은 텍스트가 있다면, 음성 시스템은 "세 가지 중 하나를 선택: 초콜릿, 딸기, 또는 바닐라"라고 안내할 수 있습니다.

WAI-ARIA는 호스트 언어의 의미 체계를 보완하기 위한 것이며, 대체하는 용도가 아닙니다. 호스트 언어에서 WAI-ARIA와 동등한 접근성 기능을 제공할 경우, 호스트 언어의 기능을 사용하세요. WAI-ARIA는 호스트 언어에 필요한 역할, 상태, 속성 표시가 없을 경우에만 사용해야 합니다. 가능하면 호스트 언어의 기능을 먼저 사용하고, 필요시 WAI-ARIA로 의미를 보완하세요. 예를 들어 다중 선택 가능한 그리드는 표(table)로 구현한 후, 이것이 단지 정적 데이터 테이블이 아니라 대화형 그리드임을 WAI-ARIA로 명확히 할 수 있습니다. 이렇게 하면 WAI-ARIA를 지원하지 않는 사용자 에이전트에서 최선의 대체 동작이 가능하며, 호스트 언어의 의미 체계도 보존할 수 있습니다.

1.2 대상 독자

이 명세는 역할, 상태, 속성, 값을 포함하여 WAI-ARIA의 기본 모델을 정의합니다. 이 명세는 다음과 같은 여러 대상에 영향을 줍니다:

각 적합성 요구사항은 적용되는 대상을 명확히 나타냅니다.

비록 이 명세가 위에 언급한 여러 대상에게 적용될 수 있지만, 특정 대상을 직접 겨냥하지 않으며, 이들 대상 모두에게 유일한 정보 출처가 되는 것을 의도하지 않습니다. 다음 문서들은 주요 참고 정보를 제공합니다:

1.3 사용자 에이전트 지원

WAI-ARIA는 두 가지 방식으로 사용자 에이전트의 지원에 의존합니다:

사용자 에이전트가 WAI-ARIA 마크업으로 접근성 API에 노출되는 정보를 개선하는 것 이외에는, 기본적으로 기존과 동일하게 동작합니다. 보조 기술은 접근성 API의 추가 정보를 비웹 콘텐츠의 동일 정보와 마찬가지로 반영합니다. 보조 기술이 아닌 사용자 에이전트는 적절한 접근성 API 업데이트 외에 추가로 할 일이 없습니다.

WAI-ARIA 명세는 WAI-ARIA 마크업을 바탕으로 네이티브 표현이나 상호작용 동작을 강화하는 것을 사용자 에이전트에 요구하지도, 금지하지도 않습니다. 주류 사용자 에이전트는 모든 사용자의 내비게이션을 돕기 위해, WAI-ARIA 랜드마크(예: 다이얼로그 박스, 키보드 단축키 등)를 노출할 수 있습니다. 사용자 에이전트는 장애가 없는 이용자도 포함하여 최대한 많은 도움을 주는 것이 권장됩니다.

WAI-ARIA는 저자의 의도가 보조 기술에 전달될 수 있도록 누락된 의미를 제공하는 것이 목적입니다. 일반적으로, WAI-ARIA를 사용하는 저자는 각각의 표현 및 상호작용 기능을 제공해야 합니다. 시간이 지나면서 호스트 언어가 표준 접근 가능한 사용자 인터페이스 컨트롤(예: 새로운 폼 컨트롤 등)로 WAI-ARIA와 동등한 기능을 제공한다면, 저자는 맞춤 UI 컴포넌트 대신 이를 사용할 수 있습니다. 이 경우 사용자 에이전트는 호스트 언어 네이티브 기능을 지원합니다. WAI-ARIA를 구현하는 호스트 언어 개발자 역시, WAI-ARIA 의미가 호스트 언어 내재 의미와 충돌하지 않는 한 계속 지원하는 것이 권장됩니다. 그 이유는 WAI-ARIA 의미가 저자의 의도를 보다 분명히 드러내기 때문입니다.

1.4 WAI-ARIA와 호스트 언어의 공동 발전

WAI-ARIA는 [HTML] 및 [SVG2] 등 지원 언어의 의미를 보완하거나, 아리아 지원이 명시적으로 포함되지 않은 다른 마크업 기반 언어의 접근성 향상 기술로 사용되도록 설계되었습니다. 새로운 객체 유형의 등장이 웹 언어 표준에 반영되기보다 빠르기 때문에, 저자가 스타일과 스크립트로 페이지 언어에서 직접 지원하지 않는 새로운 유형의 객체를 만들 때 보조 기술에 의미를 명확히 전달할 수 있습니다.

호스트 언어가 해당 객체 유형에 대한 의미론적 요소를 제공하는 경우, 스타일 및 스크립트로 직접 객체를 만드는 것은 적합하지 않습니다. WAI-ARIA로 이러한 객체의 접근성을 향상시킬 수 있으나, 가장 좋은 방법은 사용자 에이전트가 네이티브로 객체를 처리하게 하는 것입니다. 예를 들어, HTML에서 divheading 역할을 부여하는 것보다 h1 요소를 사용하는 것이 더 바람직합니다.

시간이 지남에 따라 호스트 언어는 지금은 오직 WAI-ARIA로만 선언할 수 있는 객체 의미를 자연스럽게 지원하게 될 것으로 기대됩니다. 이는 더욱 의미 중심적이고 접근성 높은 마크업의 등장을 자극하는 WAI-ARIA의 목표와 부합합니다. 주어진 기능에 대한 네이티브 의미가 제공되면, 저자는 해당 네이티브 기능으로 전환하고 WAI-ARIA 적용을 중단하는 것이 바람직합니다. 과거 콘텐츠는 계속 WAI-ARIA를 사용할 수 있으므로, 사용자 에이전트의 WAI-ARIA 지원 필요성은 지속됩니다.

WAI-ARIA의 개별 기능은 시간이 지나면 중요성이 줄어들 수 있지만, WAI-ARIA가 웹 페이지에 의미 체계를 추가하는 일반적인 방법은 계속 필요할 것으로 보입니다. 호스트 언어가 WAI-ARIA가 제공하는 모든 의미를 구현하지 않을 수도 있고, 각 호스트 언어는 기능의 다양한 부분집합만 구현할 수도 있습니다. 새로운 객체 유형은 계속해서 개발되고, 이러한 객체를 접근 가능하게 만드는 방법을 제공하는 것이 WAI-ARIA의 목표이기도 합니다. 웹 저작 실무는 종종 호스트 언어 표준 발전보다 더 빠르게 진화하기 때문에, WAI-ARIA와 호스트 언어는 서로 다른 속도로 함께 발전하게 됩니다.

어떤 호스트 언어는 사용자 인터페이스 이외의 기능을 위한 의미론을 정의하기 위해 존재하기도 합니다. 예를 들어, SVG는 그래픽 객체 생성에 초점을 두고 있으며, 사용자가 직접 조작할 수 있는 UI 컴포넌트의 의미는 제공하지 않습니다. 이러한 경우, WAI-ARIA가 UI 구성 요소에 의미 정보를 추가하기 위한 장기적 접근 방법으로 채택될 수 있습니다.

1.5 저작 실무

1.5.1 저작 도구

WAI-ARIA역할, 상태, 속성 정의에 대한 많은 요구사항은 코드 유효성 검증 등 기타 품질 관리와 마찬가지로 개발 과정에서 자동으로 검사할 수 있습니다. 커스텀 위젯을 만들고자 하는 저자를 지원하기 위해, 저작 도구는 위젯 역할, 상태, 속성을 WAI-ARIA 및 상호 참조되는 관계의 역할·상태·속성과 비교할 수 있습니다. 저작 도구는 위젯 디자인 패턴의 오류를 저자에게 알릴 수 있고, 맥락만으로 확인할 수 없는 정보에 대해 개발자에게 입력을 요구할 수도 있습니다. 예를 들어, 스크립트 라이브러리는 트리뷰 내 개별 항목의 라벨은 파악할 수 있지만, 전체 트리의 라벨은 저자에게 입력을 요청해야 할 수 있습니다. 저작 환경에서 WAI-ARIA 마크업 기반의 논리적 접근성 구조를 시각적으로 표시하는 개요 보기를 제공할 수도 있습니다.

HTMLSVG 모두에서, tabindex는 브라우저가 ARIA가 적용된 구현의 키보드 포커스 내비게이션을 지원하는 중요한 방법입니다. 저작 및 디버깅 도구는 tabindex 값 설정을 검증할 수 있습니다. 예를 들면, 하나의 트리에서 두 개 이상의 treeitem이 tabindex 값을 0 이상으로 가질 때, 어느 treeitem에도 tabindex가 설정되어 있지 않은 경우, 또는 역할이 tree인 요소에 tabindex가 0 이상인데 aria-activedescendant가 정의되지 않은 경우 등이 오류가 될 수 있습니다.

1.5.2 테스트 실무 및 도구

대화형 콘텐츠의 접근성은 정적 검사만으로 확인할 수 없습니다. 대화형 콘텐츠 개발자는 장치 독립적인 위젯 및 애플리케이션 접근성 접근성을 테스트하고, 모든 콘텐츠와 사용자 상호작용 시 변경에 대한 접근성 API의 접근성을 검증해야 합니다.

1.6 보조 기술

접근성 의미 체계에 대한 프로그래밍적 접근은 보조 기술에 필수적입니다. 대부분의 보조 기술은 다른 애플리케이션처럼 공식 접근성 API를 통해 사용자 에이전트와 상호작용합니다. 사용자 인터페이스 내 인지 가능한 객체는 접근성 API 인터페이스로 정의된 접근 가능한 객체로 보조 기술에 노출됩니다. 이를 제대로 구현하려면 역할, 상태, 속성, 맥락 정보 등 접근성 정보가 보조 기술에 접근성 API를 통해 정확히 전달되어야 합니다. 상태 변경이 발생하면, 사용자 에이전트는 적절한 이벤트 알림을 접근성 API에 제공합니다. 많은 호스트 언어(예: HTML)에서는 DOM 자체가 트리형 계층 구조로 맥락 정보를 제공합니다.

일부 보조 기술은 이러한 접근성 API와 상호작용하지만, 다른 보조 기술은 DOM에서 직접 콘텐츠를 받아올 수 있습니다. 이런 기술은 콘텐츠를 재구성하거나 단순화, 스타일을 변경하거나 다시 흐름을 잡아 특정 사용자 집단에 맞춘 적응형 콘텐츠를 만들 수 있습니다. 대표적인 예시로는 고령자, 인지 장애인, 사용 환경의 제약을 받는 이용자가 있습니다. 예를 들어, 지역 네비게이션 랜드마크가 있으면 휴대기기에서는 콘텐츠의 일부만 의미 단위로 표시하는 적응이 가능할 수 있습니다. 이렇게 하면 사용자가 한 번에 처리해야 하는 정보량이 줄어듭니다. 다른 상황에서는 커스텀 UI 컨트롤을 키보드나 터치스크린 등으로 더 쉽게 접근 가능한 형태로 대체할 수도 있습니다.

2. 중요 용어

이 절은 비규범적입니다.

일부 용어는 본문에서 정의되어 있지만, 다음 정의들은 이 문서 전체에서 사용됩니다.

접근성 API

운영 체제 및 기타 플랫폼은 객체이벤트에 대한 정보를 보조 기술에 노출하는 일련의 인터페이스를 제공합니다. 보조 기술은 이러한 인터페이스를 활용하여 해당 위젯에 대한 정보를 얻고, 상호작용합니다. 접근성 API의 예로는 Microsoft Active Accessibility [MSAA], Microsoft User Interface Automation [UI-AUTOMATION], MSAAUIA Express [UIA-EXPRESS], Mac OS X 접근성 프로토콜 [AXAPI], Linux/Unix 접근성 툴킷 [ATK] 및 Assistive Technology Service Provider Interface [AT-SPI], IAccessible2 [IAccessible2] 등이 있습니다.

접근성 객체

플랫폼 접근성 API접근성 트리노드. 접근성 객체는 보조 기술에서 활용할 수 있도록 다양한 상태, 속성, 이벤트를 노출합니다. 마크업 언어(예: HTMLSVG)와 WAI-ARIA에서는 마크업 요소와 그 속성이 접근성 객체로 표현됩니다.

보조 기술

다음 기능을 가진 하드웨어 및/또는 소프트웨어:

  • 사용자 에이전트가 제공하는 서비스에 의존하여 웹 콘텐츠를 수집하고 렌더링하는 도구
  • API(응용 프로그램 인터페이스)를 사용해 사용자 에이전트나 웹 콘텐츠 자체와 함께 동작하는 도구
  • 장애가 있는 사용자의 웹 콘텐츠 활용을 위해 사용자 에이전트가 제공하는 것 이상의 서비스를 제공하는 도구

이 정의는 다른 문서에서 사용되는 것과 다를 수 있습니다.

이 문서 맥락에서 중요한 보조 기술의 예시는 다음과 같습니다:

  • 렌더링된 텍스트와 이미지의 시각적 판독성을 확대 및 개선하는 화면 확대기
  • 합성 음성이나 점자 디스플레이를 통해 정보를 전달하는 스크린 리더
  • 텍스트를 합성 음성으로 변환하는 텍스트-음성 변환기
  • 음성 명령과 받아쓰기를 가능하게 하는 음성 인식 소프트웨어
  • 헤드 포인터, 화면 키보드, 단일 스위치, 숨 불기/빨기 장치 등, 키보드 입력을 모사하는 대체 입력 기술
  • 마우스의 포인팅과 클릭을 모사하는 대체 포인팅 장치
폐지됨(Deprecated)

폐지된 역할, 상태, 속성은 최신 구조나 변경된 상황에 의해 대체되어 더 이상 사용이 권장되지 않는 것으로, 차기 WAI-ARIA 명세에서 제거될 수 있습니다. 사용자 에이전트는 하위 호환을 위해 폐지된 항목도 지원하는 것이 권장됩니다. 자세한 내용은 적합성 절에 있는 폐지된 요구사항을 참고하세요.

정의함

속성 설명에서 값 타입정수, 숫자, 또는 문자열임을 표시할 때 사용됩니다.

관련 용어: 식별함, 표시함

데스크톱 포커스 이벤트

접근성 API를 통해 호스트 운영체제와 주고받는, 입력 포커스가 변경되었음을 알리는 이벤트입니다.

이벤트

객체의 상태 변화 같은 독립적인 변경을 다른 객체에 알리는 프로그래밍 메시지입니다. 웹 페이지에서의 사용자 입력은 주로 인터랙션을 설명하고 문서 객체의 상태 변화를 알리는 추상 이벤트를 통해 전달됩니다. 일부 프로그래밍 언어에서는 이벤트를 알림(notifications)이라고도 합니다.

노출(Expose)

접근성 API의 플랫폼별 정의에 따라 Core Accessibility API Mappings로 변환됩니다.

그래픽 문서

사용자가 탐색할 수 있는 부분을 포함하는 그래픽적 표현이 들어 있는 문서입니다. 차트, 지도, 다이어그램, 도면, 대시보드 등이 그래픽 문서의 예입니다. 그래픽 문서는 기호, 이미지, 텍스트, 그래픽 도형(원, 점, 선, 경로, 사각형 등)의 조합으로 구성됩니다.

숨김(Hidden)

요소가 접근성 트리에서 제외되어 접근성 API에 노출되지 않음을 나타냅니다.

관련: 접근성 트리에서 요소 제외, 모든 사용자에게 숨김, aria-hidden.

모든 사용자에게 숨김

요소가 모든 사용자에게 보이지 않으며, 인지도 할 수 없고, 상호작용할 수도 없음을 의미합니다. 요소aria-hidden을 사용해 숨김 처리될 수 있지만, 완전히 숨김이 아닐 수 있습니다.

관련: 접근성 트리에서 요소 제외, 숨김, aria-hidden.

식별함

속성 설명에서 값 타입ID 참조 (단일 요소 식별) 또는 ID 참조 목록 (여러 요소 식별)임을 뜻합니다.

관련 용어: 정의함, 표시함

표시함

속성 설명에서 값 타입이 토큰 또는 토큰 유사(불리언(true/false), true/false/undefined 포함, 삼위상태(true/false/mixed), 단일 명명 토큰 또는 토큰 목록 등)임을 의미합니다.

관련 용어: 정의함, 식별함

키보드 접근 가능

키보드나 빨대/숨 불기 장치 등 키보드 입력을 모방하는 보조 기술을 사용하는 사용자가 접근할 수 있음을 의미합니다. 이 문서의 참고는 WCAG 2.1 가이드라인 2.1: 모든 기능을 키보드로 이용 가능하게 [WCAG21]을 따릅니다.

랜드마크

사용자가 빠르게 접근하고자 할 수 있는 영역 유형입니다. 이러한 영역 내 콘텐츠는 페이지 내 다른 영역과 구분되며, 내비게이션, 검색, 주요 콘텐츠 탐색 등 특정 사용자 목적과 관련이 있습니다.

라이브 영역

라이브 영역은 주로 외부 이벤트의 결과로 업데이트되는 웹 페이지의 인지 가능한 영역입니다. 이 영역들은 항상 사용자 상호작용의 결과로만 갱신되는 것은 아니며, 포커스가 없어도 갱신될 수 있습니다. 예시로는 채팅 로그, 주식 시세, 경기 점수가 주기적으로 갱신되는 스포츠 현황 등이 있습니다. 이러한 비동기 영역은 사용자의 포커스 밖에서 갱신되는 경우가 많아, 스크린 리더 등 보조 기술이 그 존재를 인지하지 못하거나 이를 처리할 수 없었습니다. WAI-ARIA는 이러한 라이브 영역을 식별하고 처리할 수 있도록 aria-live, aria-relevant, aria-atomic, aria-busy 등의 속성 모음을 제공합니다.

관리되는 상태

접근성 API 상태 중 포커스, 선택 등 사용자 에이전트가 제어하는 상태. 보통 저자가 직접 제어하는 "비관리 상태(unmanaged state)"와 구별됩니다. 단, aria-posinset, aria-setsize 등 일부 관리 상태는 저자가 재정의할 수 있습니다. 많은 관리 상태는 :focus와 같은 CSS 가상 클래스, ::selection 같은 가상 요소 형태로도 사용자 에이전트에 의해 갱신됩니다.

네메스 점자

네메스 점자 수학 코드(Nemeth Braille Code)는 수학 및 과학 표기법을 나타내기 위한 점자 코드입니다. 위키백과의 Nemeth Braille를 참고하세요.

객체

사용자 인터페이스 관점에서, 인지적 사용자 경험에 포함된 항목으로, 마크업 언어에서는 하나 이상의 요소로 표현되며, 사용자 에이전트가 렌더링합니다.

프로그래밍 관점에서는, 비슷한 객체의 일반 특성을 정의하는 하나 이상의 클래스와 인터페이스의 인스턴스입니다. 접근성 API의 객체는 하나 이상의 DOM 객체를 대표할 수 있습니다. 접근성 APIDOM 인터페이스와 구분되는 자체 인터페이스를 정의합니다.
온톨로지

클래스의 특성과 상호 관계를 설명하는 체계입니다.

조작 가능(Operable)

사용자가 제어할 수 있는 방식으로 사용 가능한 상태. 관련 내용은 WCAG 2.1 원칙 2: 콘텐츠는 조작 가능해야 함 [WCAG21]을 참고하시기 바랍니다. 키보드 접근 가능 용어도 참고하세요.

인지 가능(Perceivable)

사용자가 감각적으로 인식할 수 있는 방식으로 제시됨을 의미합니다. 관련 내용은 WCAG 2.1 원칙 1: 콘텐츠는 인지 가능해야 함 [WCAG21]을 참고하시기 바랍니다.

속성(Property)

속성(attribute) 중 특정 객체의 본질에 필수적이거나, 객체와 연관된 데이터 값을 나타내는 속성. 속성의 변화는 객체의 의미나 표현에 중대한 영향을 줄 수 있습니다. 일부 속성(예: aria-multiline)은 상태(state)보다 변동이 적은 경우가 많지만, 이러한 빈도 차이는 규칙이 아닙니다. aria-activedescendant, aria-valuenow, aria-valuetext와 같이 자주 변동되는 속성도 있습니다. 상태와 속성 구분을 참고하세요.

관계(Relationship)

두 개의 독립적인 사물 간의 연결. 관계의 유형에는 한 객체가 다른 객체를 레이블로 지정하거나, 제어하거나 등 여러 가지가 있을 수 있습니다.

역할(Role)

유형을 식별하는 주요 지표. 이 의미적 연결은 도구가 해당 객체와 다른 유사 객체에 대한 사용자 기대치에 맞춰 상호작용을 지원하도록 해줍니다.

의미 체계(Semantics)

사람이 이해하는 의미를, 컴퓨터가 객체(예: 요소, 속성 등)에 대한 표현으로 처리할 수 있도록 정의한 것. 여러 사람이 해당 객체를 일관되게 이해할 수 있도록 신뢰성 있게 설명하는 방법입니다.

상태(State)

상태는 객체의 속성 중, 사용자 동작 또는 자동 처리에 따라 변경될 수 있는 동적 특성을 표현합니다. 상태는 객체의 본질을 바꾸지 않으며, 객체나 사용자 상호작용의 데이터만을 나타냅니다. 상태와 속성의 구분을 참고하세요.

타겟 요소(Target Element)

WAI-ARIA 관계에서 지정된 요소입니다. 예를 들어, <div aria-controls=”elem1”>에서 “elem1”이 타겟 요소의 ID입니다.

유니코드 점자 패턴

유니코드에서는 점자가 'Braille Patterns(점자 패턴)' 블록(U+2800..U+28FF)으로 표현됩니다. 이 블록에는 8점 점자 셀의 가능한 256가지 패턴이 모두 포함되어 있으며, 6점 셀 범위는 U+2800..U+283F로 표현됩니다. 모든 점자 시스템에서 dots-0(U+2800)은 공백 또는 내용 없음(블랭크 패턴)을 나타내는 데 사용됩니다. 위키백과의 Braille Patterns를 참고하세요.

위젯(Widget)

사용자가 상호작용할 수 있는 개별 사용자 인터페이스 객체입니다. 위젯은 하나의 값/동작만 가진 단순(예: 체크박스, 메뉴 항목)부터, 여러 관리 하위 객체를 포함하는 복합(예: 트리, 그리드)까지 다양합니다.

3. 적합성

접근 가능한 리치 인터넷 애플리케이션의 주요 내용은 규범적이며, 적합성 주장에 영향을 미치는 요구사항을 정의합니다. 소개 자료, 부록, "비규범적"으로 표시된 섹션과 그 하위 섹션, 다이어그램, 예제 및 주석은 참고(비규범)입니다. 비규범 자료는 가이드라인을 해석하는 데 도움이 되는 자문 정보를 제공하지만 적합성 주장에 영향을 미치는 요구사항을 만들지 않습니다.

규범적 섹션은 저자와 사용자 에이전트가 명세를 준수하기 위해 따라야 하는 요구사항을 제공합니다. 본 문서의 MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, RECOMMENDED, MAY, OPTIONAL 등의 키워드는 요구사항 수준을 나타내는 RFC에서 사용하는 키워드 [RFC2119]에 정의된 대로 해석됩니다. RFC-2119 키워드는 모두 대문자로 표기되고 class="rfc2119"를 가진 요소에 포함되어 있습니다. 위의 키워드가 보여도 이 형식을 따르지 않으면 RFC 2119의 공식 의미가 아니라 단순히 설명(비규범)으로만 사용된 것입니다. 본 명세에서는 이런 사용을 최대한 피했습니다.

비규범(참고) 섹션은 명세의 이해에 유용한 정보를 제공합니다. 이러한 섹션은 권장 실무 예제를 포함할 수 있지만, 명세를 준수하기 위해 반드시 따라야 하는 것은 아닙니다.

3.1 호스트 언어 간섭 금지

WAI-ARIA 처리는 사용자 에이전트에 의해 호스트 언어의 내장 기능의 일반 동작을 방해해서는 안 됩니다(MUST NOT).

CSS 선택자가 WAI-ARIA 속성(예: input[aria-invalid="true"])을 포함할 경우, 사용자 에이전트는 반드시(MUST) 해당 속성이 DOM에 추가/변경/제거될 때마다 셀렉터와 일치하는(또는 이제 일치하지 않는) 모든 요소의 시각적 표시를 업데이트해야 합니다. 사용자 에이전트는 호스트 언어의 기능 매핑을 접근성 API로 변경할 수 있지만(MAY), WAI-ARIA 마크업을 호스트 언어 기능으로 다시 매핑하기 위해 DOM변경해서는 안 됩니다(MUST NOT).

3.2 모든 WAI-ARIA DOM 내 존재

문서 객체 모델을 구현하는 적합한 사용자 에이전트W3C DOM 명세를 준수하지 않는다면, 역할에 대한 콘텐츠 속성 및 그 WAI-ARIA 역할값WAI-ARIA 상태 및 속성을 저자가 명시한 대로 DOM에 반드시(MUST) 포함시켜야 합니다. 이는 처리 방식에 관계없이 각각의 역할 속성과 모든 WAI-ARIA 상태 및 속성(값 포함)이 문서에 원본 그대로 존재하게 하여 보조 기술 등의 도구가 접근할 수 있게 합니다. 적합한 W3C DOM은 이 기준을 충족합니다.

3.3 보조 기술 알림의 웹 애플리케이션 전달

음성 인식 시스템, 이동성 장애 사용자를 위한 대체 입력 장치 등 보조 기술은 디바이스에 독립적인 방식으로 웹 애플리케이션을 제어할 수 있어야 합니다. WAI-ARIA상태속성은 리치 인터넷 애플리케이션 컴포넌트의 현재 상태를 반영합니다. 보조 기술이 필요한 변경사항을 웹 애플리케이션에 알릴 수 있는 기능은, 이러한 대체 입력 솔루션들이 사용자가 직접 표준 입력 장치를 제어할 수 없을 때도 애플리케이션을 제어할 수 있도록 하므로 필수입니다.

사용자 에이전트는 반드시(MUST) 시스템 접근성 API의 상태나 속성이 바뀔 때 웹 애플리케이션에 변경을 알릴 수 있는 방법을 제공해야 합니다. 또한, 웹 애플리케이션 저자는 사용자 에이전트나 보조 기술로부터 변경 요청 알림을 받을 경우 웹 애플리케이션을 적절히(이상적으로는 SHOULD) 갱신해야 합니다.

3.4 적합성 검사기

문서의 적합성 또는 유효성을 검증하는 모든 애플리케이션이나 스크립트는 가급적(SHOULD) 본 명세의 모든 규범적 저자 요구사항에 대한 테스트를 포함해야 합니다. 특정 요구사항을 테스트할 때, 적합성 검증기는 저자의 "MUST" 요구사항이 충족되지 않으면 오류(MUST)를 발생시키고, "SHOULD" 요구사항이 충족되지 않으면 경고(MUST)를 발생해야 합니다.

3.5 폐지된 요구사항

기술이 발전함에 따라, 예전에 정의된 기능보다 더 효과적으로 사용 사례를 충족하는 새로운 방법이 생길 수 있습니다. 하지만 기존 기능이 이미 널리 구현되어 있으면, 그 기능을 적합성 모델에서 제거하면 기존 적합 콘텐츠가 비적합이 되므로 단순히 삭제할 수 없습니다. 이럴 경우 해당 기능은 "폐지됨(deprecated)"으로 표시됩니다. 이는 기능이 적합성 모델 내에서 허용되고 사용자 에이전트의 지원이 기대되지만, 저자가 새로운 콘텐츠에서 사용하는 것은 권장하지 않음을 의미합니다. 향후 명세 버전에서 해당 기능이 더 이상 널리 사용되지 않는 경우에는 사라질 수 있고, 사용자 에이전트의 지원도 기대되지 않습니다.

4. WAI-ARIA 사용법

복잡한 웹 애플리케이션은 보조 기술이 문서 일부의 의미를 파악할 수 없거나 사용자가 문서의 모든 부분을 효과적으로 탐색할 수 없을 경우 접근 불가하게 됩니다 (WAI-ARIA 작성 실무 참고). WAI-ARIA는 의미를 역할(사용자 인터페이스 요소의 유형을 정의)과 각 역할이 지원하는 상태속성으로 나눕니다.

저자는 문서 내 요소WAI-ARIA 역할과 적합한 상태 및 속성(aria-* 속성)을 생명주기 동안 연결해야 합니다. 단, 해당 요소에 이미 적합한 암시적 WAI-ARIA 의미가 있으면, 해당 역할과 속성은 호스트 언어의 동등한 상태 및 속성이 우선됩니다. 그러나 역할 속성은 호스트 언어 요소의 암시적 역할보다 우선합니다.

4.1 WAI-ARIA 역할

WAI-ARIA 역할요소role 속성을 사용해 설정하며, Role Attribute [ROLE-ATTRIBUTE]에 정의된 role 속성과 유사합니다.

<li role="menuitem">Open file…</li>

역할별 모델의 각 정의는 다음 정보를 제공합니다 :

역할을 부여하면 보조 기술은 각각의 요소를 어떻게 처리해야 하는지 알 수 있습니다. WAI-ARIA 역할이 호스트 언어 의미를 대체할 경우, DOM은 변하지 않고 접근성 트리에서만 변화가 일어납니다.

사용자 에이전트는 반드시(MUST) role 속성 값에 지정된 토큰 중 가장 처음 나타나는, 추상적이지 않은 WAI-ARIA 역할 이름과 일치하는 것을 사용해야 합니다. 자세한 사항은 role 속성의 호스트 언어 구현 섹션을 참고하세요.

4.2 WAI-ARIA 상태 및 속성

WAI-ARIA는 다양한 운영체제 플랫폼에서 플랫폼 접근성 API 지원을 위해 사용되는 접근성 상태속성 모음을 제공합니다. 보조 기술은 노출된 사용자 에이전트 DOM 또는 플랫폼 접근성 API 매핑을 통해 이 정보를 접근할 수 있습니다. 역할과 결합될 경우, 사용자 에이전트는 보조 기술에 사용자 인터페이스 정보를 언제든지 제공할 수 있습니다. 상태 또는 속성이 변경될 때 보조 기술에 알림을 보내 사용자에게 변경 상황을 알릴 수 있습니다.

다음 예시에서 리스트 항목(html:li)을 체크 가능한 메뉴 아이템으로 사용하고, JavaScript 이벤트가 마우스와 키보드 이벤트를 감지해 aria-checked 값을 토글합니다. 역할은 이 단순한 위젯의 동작을 사용자 에이전트에 알리기 위해 사용됩니다. 사용자 동작으로 변경되는(예: aria-checked 등) 속성은 상태 및 속성 절에 정의되어 있습니다.

<li role="menuitemcheckbox" aria-checked="true">Sort by Last Modified</li>

일부 접근성 상태(관리 상태라 함)는 사용자 에이전트가 제어합니다. 예로는 키보드 포커스와 선택이 있습니다. 관리 상태는 :focus, ::selection과 같이 스타일 변화를 정의하는 CSS 의사 클래스에 매핑될 때가 많습니다. 이에 반해 본 명세의 상태는 일반적으로 저자가 제어하며 비관리 상태라고 부릅니다. 일부 상태는 aria-posinsetaria-setsize처럼 사용자 에이전트가 관리하지만, DOM이 불완전해 에이전트의 계산이 잘못될 수 있으면 저자가 이를 재정의할 수 있습니다. 사용자 에이전트는 관리 상태와 비관리 상태 모두를 플랫폼 접근성 API로 매핑합니다.

대부분의 최신 사용자 에이전트는 CSS 속성 선택자 ([CSS3-SELECTORS])를 지원하므로, 저자는 WAI-ARIA 속성 정보를 기반으로 UI를 변경하는 코드를 작성해 동등한 기능을 위해 필요한 스크립트 양을 줄일 수 있습니다. 다음 예시에선, CSS 선택자를 이용해 aria-checked 속성 값에 따라 텍스트 볼드 및 체크마크 이미지를 표시합니다.

[aria-checked="true"] { font-weight: bold; }
[aria-checked="true"]::before { background-image: url(checked.gif); }

CSS로 체크마크 시각 표현을 토글하지 않을 경우, 저자는 체크 상태를 나타내는 이미지를 관리하기 위해 추가 마크업과 스크립트를 사용할 수도 있습니다.

<li role="menuitemcheckbox" aria-checked="true">
  <img src="checked.gif" alt="">
  <!-- note: additional scripts required to toggle image source -->
  Sort by Last Modified
</li>

4.3 포커스 관리 및 키보드 내비게이션 지원

표준 HTML 대화형 요소와 단순 WAI-ARIA 위젯을 사용할 때, 애플리케이션 개발자는 탭 순서를 조정하거나 문서 내 요소에 키보드 단축키를 할당할 수 있습니다.

WAI-ARIA에는 "관리 컨테이너" 위젯(복합 위젯이라고도 함)이 다수 포함됩니다. 적절할 때, 컨테이너는 마지막에 활성화된 하위 요소(일반적으로 첫 항목이 기본값)를 추적해야 합니다. 포커스가 컨테이너를 떠났다가 다시 돌아올 때, 컨테이너는 일관되고 사용하기 쉬운 전략을 유지해야 합니다. 예외도 있지만, 보통 포커스를 잃은 후 다시 받을 때 활성 하위 요소는 마지막 포커싱 상태와 같아야 합니다. 예외 사례에는 컨테이너 위젯 내용이 바뀌거나 메뉴바처럼 사용할 때마다 첫 항목부터 이동해야 한다고 기대되는 위젯 등이 있습니다. 예를 들어, 트리 그룹의 두 번째 항목이 마지막으로 활성 하위 요소였다면 트리 그룹이 다시 포커스를 받았을 때 그 항목이 여전히 활성 하위 요소가 됩니다. 사용자는 컨테이너 내 하위 요소를 클릭해서 컨테이너를 활성화할 수도 있습니다. 컨테이너나 그 활성 하위 요소가 포커스를 받으면, 추가 키(화살표 등)를 눌러 컨테이너 내 활성 하위 요소를 변경할 수 있습니다. 주 내비게이션(대개 TAB) 키를 한번 더 누르면 컨테이너를 벗어나 다음 위젯으로 이동합니다.

리치 인터넷 애플리케이션에서의 키보드 내비게이션은 정적 문서의 상호작용 요소(링크, 폼 컨트롤 등) 사이 탭 이동 패러다임과 다릅니다. 리치 인터넷 애플리케이션에서는 사용자가 메뉴나 스프레드시트 등 복잡한 위젯까지 탭으로 이동한 뒤, 화살표 키로 내부를 탐색합니다. WAI-ARIA가 도입한 키보드 내비게이션 변화는 이러한 접근성 향상을 가능하게 합니다. WAI-ARIA에서는 모든 요소가 키보드 포커스 가능하며, tabindex와 같은 호스트 언어 메커니즘에 더해 aria-activedescendant도 키보드 조작을 위한 수단이 될 수 있습니다. 대다수 WAI-ARIA 위젯 개발은 키보드 내비게이션이 올바르게 작동하는지에 의존합니다.

아래에서 설명한 대로 aria-activedescendant를 구현할 때, 사용자 에이전트는 DOM 포커스를 컨테이너 요소나 해당 컨테이너를 컨트롤하는 input 요소에 유지합니다. 하지만, 사용자 에이전트는 데스크톱 포커스 이벤트와 상태를 보조 기술에 전달할 때 aria-activedescendant가 가리키는 요소가 포커스를 받은 것처럼 동작합니다. 사용자 에이전트는 활성 하위 요소가 컨테이너의 진짜 하위 요소인지는 검증하지 않습니다. 사용자 에이전트는 DOM 포커스를 가진 요소에서 키보드 이벤트를 반드시 처리해야 합니다. 활성 하위 요소로 향한 키보드 이벤트는 포커스를 가진 DOM 요소로 버블되어 처리됩니다.

4.3.1 저자를 위한 정보

저자가 포커스를 가진 요소를 제거할 경우, 가능한 한(SHOULD) 논리적 요소로 포커스를 이동해야 합니다. 마찬가지로, 사용자가 명시적으로 스크롤하지 않은 이상 포커스를 가진 요소를 화면 밖으로 스크롤하지 않아야 합니다.

저자는 SHOULD 모든 상호작용 요소가 포커스 가능하고, 복합 위젯의 모든 부분 또한 포커스 가능하거나 기능을 사용하는 문서화된 대안이 있도록 해야 합니다.

저자는 다음 컨테이너 역할에 대해 반드시(MUST) 포커스를 관리해야 합니다:

WAI-ARIA를 지원하는 사용자 에이전트는 tabindex, focus, blur 등 호스트 언어 메커니즘의 사용 범위를 모든 요소로 확장합니다. 호스트 언어가 지원하는 경우, 저자는 div, span, img와 같은 임의 요소를 tabindex="0"로 지정해 기본 탭 순서에 포함시킬 수 있습니다(MAY). 또한, 음수 tabindex를 가진 항목은 스크립트나 마우스 클릭으로만 포커스 가능하지만 기본 탭 순서에서는 제외됩니다. 이는 [HTML] 및 [SVG2] 모두에서 지원됩니다.

저자는 aria-activedescendant를 사용해 보조 기술widget 요소의 어느 하위 요소가 사용자 인터페이스에서 키보드 포커스를 갖는지 알릴 수 있습니다(MAY). 이는 listbox 등, 페이지 Tab 순서는 하나만 차지하고 나머지는 화살표 등 다른 키로 내부 요소 포커스를 이동하는 위젯에서 특히 편리합니다.

일반적으로 저자는 호스트 언어 의미 체계로 위젯을 Tab 순서에 포함시키고(HTML에선 tabindex="0" 등), aria-activedescendant로 현재 활성 하위 요소의 ID를 지정합니다. 현재 포커스된 하위 요소에 대해 시각적 스타일링은 저자(개발자)가 책임지며, :focus로는 컨테이너 자체에만 적용할 수 있습니다.

포커스 관리에 대한 더 많은 정보는 키보드 인터페이스 개발에서 확인하세요 (WAI-ARIA 작성 실무).

4.3.2 사용자 에이전트를 위한 정보

사용자 에이전트는 aria-activedescendant를 구현하기 위해 반드시(MUST) 다음을 수행해야 합니다:

  1. 키보드 내비게이션을 위한 호스트 언어 메서드를 구현하여 aria-activedescendant를 지원하는 위젯이 탭 순서에 포함될 수 있도록 합니다.
  2. 플랫폼에서 데스크톱 포커스 또는 접근성 API 포커스를 DOM 포커스와 별개로 노출하는 경우, DOM 포커스가 있을 때 aria-activedescendant가 유효한 ID 참조를 가리킨다면 그 어떤 요소에도 접근성 API에서 포커싱 상태를 노출하지 않아야 합니다.
  3. aria-activedescendant 속성이 DOM 포커스를 받은 요소에서 변경될 때, 이전 포커스 객체에서 포커스 상태를 제거하고 aria-activedescendant가 가리키는 새 요소에 접근성 API 데스크톱 포커스 이벤트를 발생시켜야 합니다. aria-activedescendant가 비워지거나 현재 문서의 요소를 가리키지 않는다면, 속성이 변경된 객체에 해당 이벤트를 발생해야 합니다.
  4. ID 속성을 가진 요소가 aria-activedescendant로 참조될 수 있을 때, 다음 접근성 API 상태를 적용해야 합니다. aria-activedescendant로 참조될 수 있는 경우는 두 가지입니다. 하나는 그 요소가 aria-activedescendant 속성을 가지고 있는 요소의 접근성 하위 요소인 경우, 또 하나는 접근성 하위 요소이지만 combobox, textbox, searchbox 역할의 요소에 의해 제어되는 경우:
    1. 해당 요소가 WAI-ARIA 역할을 가지면 포커스 가능해야 함. 이는 aria-activedescendant 속성에서 참조될 수 있기 때문입니다. 네이티브 요소 중 role 속성이 없는 요소는 자체 의미 체계에 따라 포커스 여부가 결정됩니다.
    2. aria-activedescendant 속성의 대상이 되고 DOM 포커스가 있으면 포커스 상태를 가져야 합니다.

보조 기술이 플랫폼 접근성 API로 포커스 변경을 요청할 경우, 사용자 에이전트는 반드시(MUST) 다음을 수행해야 합니다:

  1. 이전 포커스 객체에서 플랫폼의 포커스 상태를 제거
  2. DOM 포커스 설정:
    1. 요소DOM 포커스를 받을 수 있으면, 사용자 에이전트DOM 포커스를 반드시(MUST) 그 요소에 설정해야 합니다.
    2. 그렇지 않고, 포커스 대상이 ID를 가지며 해당 ID가 aria-activedescendant 속성이 적용된 포커스 가능한 요소에서 참조된다면, 사용자 에이전트는 DOM 포커스를 aria-activedescendant 속성 보유 요소에 반드시(MUST) 설정해야 합니다.
      참고

      ID를 가진 요소는, aria-activedescendant 속성을 가진 컨테이너의 접근성 하위 요소이거나, aria-activedescendant 속성을 가진 요소에 의해 제어되는 컨테이너의 하위 요소일 때 참조될 수 있습니다(예: combobox). 그 외의 경우, aria-activedescendant 참조는 저자 오류를 뜻합니다.

      참고

      포함 요소에 DOM 포커스를 줄 수 없다면 이는 저자 오류입니다.

    3. 그 외의 경우 사용자 에이전트는 하위 요소 자체에 DOM 포커스를 설정하려고 시도할 수 있습니다(MAY).
  3. 포커스 대상이 ID를 가지며, 해당 ID가 aria-activedescendant 속성과 DOM 포커스를 가진 컨테이너 요소의 접근성 하위 요소이거나, aria-activedescendantDOM 포커스를 모두 가진 요소에 의해 제어되는 컨테이너의 하위 요소라면, 사용자 에이전트는 그 ID가 가리키는 요소에 접근성 API 포커스 상태를 주고 포커스 이벤트를 발생시켜야 합니다.

5. 역할 모델

이 절에서는 WAI-ARIA 역할을 정의하고 그 특성과 속성에 대해 설명합니다.

역할과 그 특성, 지원하는 상태 및 속성, 그리고 이를 마크업에서 어떻게 사용할 수 있는지에 대한 명세는 모두 규범적 내용으로 간주해야 합니다.

콘텐츠가 DOM에 반영되도록, 사용자 에이전트는 가능한 한(SHOULD) role 속성을 구현된 접근성 API의 적절한 값으로 매핑해야 하며, role 속성이 변경될 때마다 매핑을 업데이트해야 합니다(SHOULD).

5.1 개념 간의 관계

역할 모델은 다음과 같은 관계를 사용하여 WAI-ARIA 역할끼리, 그리고 HTML과 같은 타 명세의 개념과 연결합니다.

5.1.1 상위(슈퍼클래스) 역할

현재 서브클래스 역할이 역할 모델에서 확장하는 역할입니다. 이 확장에 따라 상위 역할의 모든 상태와 속성이 하위 역할로 전달됩니다. 널리 알려진 안정적인 명세를 제외하면, 상속은 본 명세서 내부에 정의된 항목에 한정될 수 있어, 외부 항목 변경이 상속된 클래스에 영향을 주지 않도록 할 수 있습니다.

5.1.2 하위(서브클래스) 역할

이 역할이 슈퍼클래스가 되는 역할의 참고용 목록입니다. 이는 명세서를 읽기 쉽게 하기 위함으로, 새로운 정보를 추가하지는 않습니다.

다른 명세의 유사하거나 관련된 아이디어에 대한 참고용 정보입니다. 연관된 개념은 반드시 동일하지는 않습니다. 관련 개념끼리는 속성을 상속하지 않습니다. 따라서 한 개념의 정의가 변경되더라도, 연관된 개념의 속성, 동작, 정의에는 영향을 미치지 않습니다.

예를 들어, 프로그레스 바는 상태 표시기와 비슷합니다. 그래서 progressbar 위젯status를 포함하는 연관 개념을 가집니다. 그러나 status 정의가 변경되어도 progressbar 정의에는 영향을 주지 않습니다.

5.1.4 기본 개념(Base Concept)

역할의 원형으로 간주되는 객체에 대해 참고용 정보입니다. 기본 개념은 타입과 비슷하지만, 제한이나 속성을 상속받지 않습니다. 기본 개념은 외부 개념에 대해 상속 대체물로 설계되었습니다. 기본 개념은 연관 개념과 유사하지만, 거의 역할 정의와 똑같습니다.

예를 들어, 이 문서에서 정의된 checkboxHTML<input type="checkbox">와 기능과 동작이 유사합니다. 따라서 checkbox에는 [HTML] checkboxbaseConcept로 표시됩니다. 단, 원래 [HTML] checkbox baseConcept 정의가 바뀌어도, 실제 타입 상속이 없으므로 본 명세의 checkbox 정의에는 영향이 없습니다.

5.2 역할의 특성

역할은 그 특성으로 정의되고 설명됩니다. 특성은 역할이 무엇인지, 그 뒷배경이 되는 개념이 무엇인지, 해당 역할이 어떤 인스턴스를 포함하거나 반드시 포함해야 하는지를 명확히 합니다. 위젯의 경우, HTML 폼에 매핑되는 사용자 에이전트와의 상호작용 방식도 포함합니다. 또한, 해당 역할이 지원하는 WAI-ARIA의 상태 및 속성도 표시됩니다.

역할은 다음과 같은 특성을 정의합니다.

5.2.1 추상 역할

불리언(Boolean)

추상 역할은 모든 WAI-ARIA 역할의 기반이 됩니다. 콘텐츠 작성자는 절대(MUST NOT) 추상 역할을 사용해서는 안 됩니다. API 바인딩에 구현되지 않기 때문입니다. 사용자 에이전트 역시 MUST NOT 추상 역할을 접근성 API의 표준 역할 메커니즘에 매핑해서는 안 됩니다. 추상 역할은 다음을 위해 제공됩니다:

  1. 역할 모델을 조직화하고, 알려진 개념의 맥락에서 역할에 의미를 부여하기 위함
  2. 필요한 특성을 포함한 역할 추가를 간소화하기 위함

5.2.2 필수 상태 및 속성

해당 역할과 하위 역할에 반드시 필요한 상태속성입니다. 콘텐츠 저자는 필수 상태 및 속성에 대해 비어 있지 않은 반드시(MUST) 제공해야 하며, undefined 값을 사용해서는 안 됩니다(MUST NOT). 단, 해당 상태 또는 속성의 지원값에 undefined가 명시적으로 포함된 경우만 예외입니다.

어떤 객체가 여러 상위 항목에서 상속받고, 어떤 상위 항목은 속성이 지원됨을, 다른 상위 항목은 필수임을 나타낸다면, 해당 속성은 상속받은 객체에서 필수입니다.

참고

적절한 암시적 WAI-ARIA 의미가 있는 호스트 언어 속성도 이 요건을 충족합니다.

5.2.3 지원되는 상태 및 속성

해당 역할 및 하위 역할에 적용할 수 있는 상태속성입니다. 콘텐츠 저자는 지원되는 상태 및 속성에 제공할 수 있음(MAY) 하지만, 기본값이 충분한 경우에는 생략해도 됩니다. 사용자 에이전트는 해당 역할의 모든 지원 상태 및 속성을 접근성 API반드시(MUST) 매핑해야 합니다. 만약 값이 정의되지 않았고 역할의 기본값이 있다면, 사용자 에이전트가능한 한(SHOULD) 기본값을 노출해야 합니다.

참고

적절한 암시적 WAI-ARIA 의미가 있는 호스트 언어 속성도 이 요건을 충족합니다.

5.2.4 상속된 상태 및 속성

역할이 슈퍼클래스 역할에서 상속받는 속성의 참고용 목록입니다. 상태속성은 DOM 트리의 상위 요소가 아니라, 역할 모델의 슈퍼클래스에서 상속받습니다. 이 속성들은 자동 상속에 따라 별도로 명시하지 않아도 됩니다. 이 정보는 명세서 이해를 돕기 위해 제공됩니다. 지원 상태 및 속성과 상속된 상태 및 속성의 집합이 해당 역할이 지원하는 전체 상태 및 속성 집합을 이룹니다.

5.2.5 사용 금지 상태 및 속성

해당 역할에서 사용을 금지하는 상태 및 속성의 목록입니다. 저자는 절대(MUST NOT) 사용 금지 상태나 속성을 지정해서는 안 됩니다.

참고

적절한 암시적 WAI-ARIA 의미가 있는 호스트 언어 속성은, 이 절의 상태/속성도 사용 금지임을 의미합니다.

5.2.6 허용된 접근성 자식 역할

역할을 가진 요소의 접근성 자식(간단히 "자식")에 허용되는 역할의 목록입니다. 저자는 반드시(MUST) 허용 역할을 가진 자식 요소만 추가해야 합니다. 예를 들어, list 역할을 가진 요소는 listitem 역할을 가진 자식을 가질 수 있지만, option 역할은 허용되지 않습니다.

특정 요소가 어떤 요소의 자식인지 판단할 때, 사용자 에이전트generic 또는 none 역할의 중간 요소는 무시해야 합니다(MUST).

선조 요소의 자식이 아닌 후손은 허용된 접근성 자식 역할에 의해 제한받지 않습니다. 예를 들어, imagelist의 허용 자식이 아니지만, list 허용 자식 listitem의 후손이라면 유효한 후손이 될 수 있습니다.

참고

'허용된 접근성 자식 역할'이 있다고 해서 역관계가 성립하는 것은 아닙니다. 이 목록의 역할을 가진 요소가 항상 해당 역할의 요소 안에 있어야 하는 것은 아닙니다. 특정 역할 요소의 포함 맥락에 대한 요구사항은 필수 접근성 부모 역할을 참고하세요.

참고

'허용된 접근성 자식 역할'의 서브클래스 역할을 가진 요소는 이 요건을 충족하지 않습니다. 예를 들어, listbox 역할은 자식으로 option 또는 group 역할을 허용하지만, group 역할이 row의 슈퍼클래스여도 row 역할을 가진 자식을 두어도 listboxoption 또는 group 역할의 자식을 허용하는 요건을 충족하지 못합니다.

참고

적절한 암시적 WAI-ARIA 의미가 있는 요소도 이 요건을 충족합니다.

참고

허용된 접근성 자식 역할을 마크업하는 유효 샘플:

  1. 직접적인 DOM 자식:
    <div role="listbox">
    	<div role="option">option text</div>
    </div>
  2. 중간에 generic이 있는 DOM 자식:
    <div role="listbox">
    	<div>
    		<div role="option">option text</div>
    	</div>
    </div>
  3. 직접적인 aria-owns 관계:
    <div role="listbox" aria-owns="id1"></div>
    <div role="option" id="id1">option text</div>
  4. 중간에 generic이 있는 aria-owns 관계:
    <div role="listbox" aria-owns="id1"></div>
    <div id="id1">
    	<div>
    		<div role="option">option text</div>
    	</div>
    </div>

5.2.7 필수 접근성 부모 역할

필수 접근성 부모(간단히 "부모") 역할은 해당 역할이 허용되는 컨테이너를 정의합니다. 만약 역할에 필수 접근성 부모가 있다면, 저자는 해당 역할을 가진 요소가 필수 접근성 부모 역할을 가진 요소의 접근성 자식임을 반드시(MUST) 보장해야 합니다. 예를 들어, listitem 역할은 list 역할의 자식일 때만 의미가 있습니다.

특정 요소가 필수 역할의 부모를 가지는지 판단할 때, 사용자 에이전트generic 또는 none 역할의 요소는 무시해야 합니다(MUST).

참고

적절한 암시적 WAI-ARIA 의미가 있는 요소도 이 요건을 충족합니다.

5.2.8 접근 가능한 이름 산출

다음 중 하나의 값:
  1. author: 이름이 명시적 마크업(예: aria-label 속성, aria-labelledby 속성, 호스트 언어의 라벨링 메커니즘 등)에서 작성자에 의해 제공됩니다. HTML의 경우 title 속성이 텍스트 대체 지정에 있어 최하위 우선순위입니다.
  2. contents: 이름이 element 노드의 텍스트 값에서 옵니다. 일부 역할에서는 "author" 방식과 함께 허용될 수 있으나, 더 높은 우선순위의 "author" 정보가 없는 경우에만 사용됩니다. 우선순위는 accessible name and description computation 알고리즘 [ACCNAME-1.2]에 따릅니다.
  3. prohibited: 해당 요소는 author로부터 이름을 지원하지 않습니다. 저자는 절대(MUST NOT) aria-label 혹은 aria-labelledby 속성을 사용해 요소 이름을 지정해서는 안 됩니다.
5.2.8.1 이름 산출(Name Computation)

이름 산출(Name Computation)은 접근 가능한 이름과 설명 명세에서 정의됩니다.

5.2.8.2 설명 산출(Description Computation)

설명 산출(Description Computation)은 접근 가능한 이름과 설명 명세에서 정의됩니다.

5.2.8.3 접근 가능한 이름 및 설명 산출

접근 가능한 이름 및 설명 산출은 접근 가능한 이름과 설명 명세에서 정의됩니다.

5.2.8.4 author에서 이름을 지원하는 역할
5.2.8.5 콘텐츠에서 이름을 지원하는 역할
5.2.8.6 이름 지정이 금지된 역할

5.2.9 프리젠테이션 자식

불리언 (true | false)

DOM의 자손 노드는 프리젠테이션 용도입니다. user agents는 이 요소의 자손을 플랫폼 접근성 API노출하지 않아야 합니다(SHOULD NOT). 사용자 에이전트가 자손 노드를 숨기지 않으면 일부 정보가 중복으로 읽힐 수 있습니다.

5.2.10 역할의 암시적 값

많은 상태와 속성은 기본값을 가지고 있습니다. 경우에 따라 특정 역할에서 사용할 때의 기본값이 일반 기본값과 달라야 할 수 있습니다. 상태나 속성에서 비표준 기본값을 요구하는 역할은 "역할의 암시적 값"에 이를 명시합니다. 이는 "Default for state or property name is new default value" 형식으로 표현됩니다. 저자가 명시적으로 값을 제공하지 않으면 해당 역할을 정의한 경우 새로운 기본값이 적용됩니다.

5.3 역할의 분류

현재 사용자 시나리오를 지원하기 위해, 본 명세에서는 사용자 인터페이스 역할위젯(슬라이더, 트리 컨트롤 등) 또는 페이지 구조(섹션, 내비게이션 등)를 정의하는 역할로 나눕니다. 일부 보조 기술은 application 또는 document 역할로 표시된 영역에 대해 특수 상호작용 모드를 제공합니다.

역할 간의 관계를 시각적으로 설명한 자료는 ARIA 1.2 클래스 다이어그램에서 볼 수 있습니다.

역할 분류는 다음과 같습니다:

  1. 추상 역할(Abstract Roles)
  2. 위젯 역할(Widget Roles)
  3. 문서 구조 역할(Document Structure Roles)
  4. 랜드마크 역할(Landmark Roles)
  5. 라이브 리전 역할(Live Region Roles)
  6. 윈도우 역할(Window Roles)

5.3.1 추상 역할

아래 역할들은 일반 역할 개념 정의를 위해 WAI-ARIA 역할 모델을 지원하기 위해 쓰입니다.

추상 역할은 온톨로지 용도로 사용됩니다. 저자는 추상 역할을 콘텐츠에 사용해서는 안 됩니다(MUST NOT).

5.3.2 위젯 역할

아래 역할들은 독립 사용자 인터페이스 위젯이거나, 더 큰 복합 위젯의 일부로 동작합니다.

아래 역할들은 복합 사용자 인터페이스 위젯 역할을 합니다. 이러한 역할들은 주로 내부 위젯을 관리하는 컨테이너로 동작합니다.

5.3.3 문서 구조 역할

아래 역할들은 페이지 내에서 콘텐츠를 조직하는 구조를 설명합니다. 문서 구조는 일반적으로 상호작용하지 않습니다.

5.3.4 랜드마크 역할

아래 역할은 페이지 내의 네비게이션 랜드마크 영역입니다. 이들 역할은 모두 landmark 기본 타입에서 상속받으며, Role Attribute [ROLE-ATTRIBUTE]에서 가져온 것입니다. 이 역할들은 WAI-ARIA 역할 모델의 일부임을 명확히 하기 위해 여기에 포함되어 있습니다.

5.3.5 라이브 리전 역할

아래 역할라이브 리전이며, 라이브 리전 속성으로 변경될 수 있습니다.

5.3.6 윈도우 역할

아래 역할은 브라우저 또는 애플리케이션 내에서 윈도우 역할을 합니다.

5.4 역할 정의

아래는 WAI-ARIA 역할의 알파벳순 목록입니다.

추상 역할은 온톨로지 용도로 사용됩니다. 저자는 추상 역할을 콘텐츠에 사용해서는 안 됩니다(MUST NOT).

alert
중요하고 보통 시간에 민감한 정보를 담는 라이브 리전의 한 유형입니다. 관련 역할: alertdialog, status 참조.
alertdialog
경고 메시지를 포함하는 대화상자의 일종으로, 최초 포커스가 다이얼로그 내부의 요소에 갑니다. 관련 역할: alert, dialog.
application
하나 이상의 포커스 가능한 요소와 사용자 입력(키보드, 제스처 등)이 필요한 structure로, widget 역할이 지원하는 표준 상호작용 패턴을 따르지 않는 경우에 해당합니다.
article
페이지의 독립적인 구성을 이루는 문서, 페이지 또는 사이트의 일부 섹션입니다.
banner
주로 사이트 전체와 관련된 내용을 포함하며 페이지별 내용이 아닌 landmark입니다.
blockquote
다른 출처에서 인용한 콘텐츠 섹션입니다.
button
사용자가 클릭하거나 누를 때 동작이 발생하는 입력 컴포넌트입니다. 관련 역할: link.
caption
눈에 보이는 콘텐츠로, figure, grid, group, radiogroup, table, treegrid에 이름이나 설명을 제공합니다.
cell
테이블 형 컨테이너의 셀입니다. 관련 역할: gridcell.
checkbox
세 가지 (true, false, mixed)을 가질 수 있는 체크 가능 입력 요소입니다.
code
컴퓨터 코드 조각을 표현하는 콘텐츠 영역입니다.
columnheader
열에 대한 헤더 정보를 담고 있는 셀입니다.
combobox
다른 요소(listbox, grid 등)를 컨트롤하는 input으로, 동적으로 팝업되어 사용자가 input 값 설정을 도울 수 있습니다.
command
동작을 수행하지만 입력 데이터를 받지 않는 위젯 유형입니다.
comment
다른 콘텐츠에 대한 반응을 포함하는 댓글 콘텐츠입니다.
complementary
주 콘텐츠의 형제 또는 바로 아래에 위치하며, 주요 콘텐츠와 떨어져 있어도 의미를 가질 수 있는 landmark입니다.
composite
내부 탐색이 가능한 접근성 하위 요소를 포함할 수 있는 위젯입니다.
contentinfo
상위 문서의 정보가 담긴 landmark입니다.
definition
용어나 개념에 대한 정의입니다. 관련 역할: term.
deletion
삭제된, 삭제 제안이 된, 또는 맥락상 더 이상 관련이 없는 콘텐츠를 나타냅니다. 관련 역할: insertion.
dialog
웹 애플리케이션의 주 창의 하위 윈도우(다이얼로그)입니다. HTML 페이지에서는 전체 문서(body 요소)가 주 애플리케이션 창입니다.
directory
[ARIA 1.2에서 폐지됨] 그룹 구성원에 대한 목록(예: 정적 목차)입니다.
document
사용자(보조기술 사용자)가 읽기 모드로 탐색하고자 할 수 있는 콘텐츠를 담는 요소입니다.
emphasis
하나 이상의 강조된 문자입니다. 관련 역할: strong.
feed
스크롤할 수 있는 list이며, 스크롤에 따라 article이 리스트 양쪽 끝에서 추가되거나 제거될 수 있습니다.
figure
일반적으로 그래픽 문서, 이미지, 미디어, 코드 예시, 예제 텍스트 등을 포함하는 인지 가능한 section입니다. figure의 일부는 사용자 탐색이 가능할 수 있습니다(MAY).
form
아이템과 객체의 집합을 포함하여 폼을 구성하는 landmark 영역입니다. 관련 역할: search.
generic
자체적으로 의미가 없는 이름 없는 컨테이너 요소입니다.
grid
하나 이상의 행과 셀을 포함하며, 일부 또는 모든 셀이 방향키 등 2차원 내비게이션 방법으로 포커스 가능한 복합 widget입니다.
gridcell
grid 또는 treegridcell입니다.
group
보조기술이 페이지 요약이나 목차 등에 포함시키지 않도록 설계된 사용자 인터페이스 객체 집합입니다.
heading
페이지 섹션의 제목입니다.
image
여러 요소로 이루어진 이미지를 담는 컨테이너입니다. 동의어: img.
img
여러 요소로 이루어진 이미지를 담는 컨테이너입니다. 동의어: image.
input
사용자 입력을 받는 범용 위젯 유형입니다.
insertion
추가되었거나 추가 제안된 콘텐츠입니다. 관련 역할: deletion.
landmark
특정 저자가 지정한 목적과 관련이 깊고 중요도가 높아 사용자가 쉽게 탐색할 수 있거나 페이지 요약 등에 포함하고자 할 수 있는 콘텐츠를 담는 인지 가능한 section입니다. 페이지 요약은 사용자 에이전트나 보조기술이 동적으로 생성할 수 있습니다.
link
내부 또는 외부 자원의 인터랙티브 참조로, 활성화 시 해당 자원으로 이동합니다. 관련 역할: button.
list
listitem 요소를 포함하는 section입니다. 관련 역할: listbox.
listbox
사용자가 선택할 수 있는 항목들을 제공하는 위젯입니다. 관련 역할: combobox, list.
listitem
리스트 또는 디렉터리 내의 단일 항목입니다.
log
의미 있는 순서로 새로운 정보가 추가되고 오래된 정보가 사라질 수 있는 라이브 리전입니다. 관련 역할: marquee.
main
문서의 주요 콘텐츠를 담는 landmark입니다.
mark
포함 맥락에서 해당 콘텐츠의 중요성 때문에 표시되거나 강조된(하이라이트된) 콘텐츠입니다.
marquee
비필수 정보가 자주 바뀌는 라이브 리전 유형입니다. 관련 역할: log.
math
수학적 표현을 나타내는 콘텐츠입니다.
menu
사용자에게 선택지를 제공하는 위젯 유형입니다.
menubar
보통 가로로 표시되며 항상 표시되는 menu의 표현입니다.
menuitem
menu 또는 menubar 내 선택 항목입니다.
menuitemcheckbox
체크 가능 상태(: true, false, mixed)를 가진 menuitem입니다.
menuitemradio
동일 역할을 가진 집합 내에서 오직 하나만 체크될 수 있는 체크 가능 menuitem입니다.
meter
정해진 범위 내의 스칼라 측정값이나 분수값을 나타내는 요소입니다. 관련 역할: progressbar.
navigation
문서 또는 관련 문서를 탐색하는 데 사용하는 내비게이션 요소(보통 링크 집합)를 포함하는 landmark입니다.
none
내재된 네이티브 역할 시맨틱이 접근성 API에 매핑되지 않는 요소입니다. 동의어: presentation.
note
주요 내용을 보완하여 추가 정보나 부가적 맥락을 제공하는 section입니다.
option
listbox 내 항목입니다.
paragraph
문단 단위의 콘텐츠입니다.
presentation
내재된 네이티브 역할 시맨틱이 접근성 API에 매핑되지 않는 요소입니다. 동의어: none.
progressbar
오래 걸리는 작업의 진행 상태를 표시하는 요소입니다.
radio
동일 역할 집합에서 오직 하나만 체크 가능한 체크 가능 입력입니다.
radiogroup
radio 버튼 집단입니다.
range
값의 범위를 나타내는 요소입니다.
region
특정 저자가 지정한 목적과 관련이 곧고, 중요도가 높아 사용자가 쉽게 탐색하거나 페이지 요약에 포함되길 원할 수 있는 콘텐츠를 담는 landmark입니다.
roletype
모든 역할이 상속하는 기본 역할입니다.
row
테이블 형 컨테이너 내의 행입니다.
rowgroup
테이블 형 컨테이너 내의 하나 이상의 행 요소를 포함하는 구조입니다.
rowheader
행에 대한 헤더 정보를 담는 셀입니다.
scrollbar
뷰 영역 내에서 콘텐츠 스크롤을 제어하는 그래픽 객체입니다. 콘텐츠가 뷰 영역 내에 완전히 표시되는지는 상관 없습니다.
search
전체가 합쳐져 검색 기능을 구성하는 아이템 및 객체의 모임을 담는 landmark 영역입니다. 관련 역할: form, searchbox.
searchbox
검색 조건 입력용 텍스트박스 유형입니다. 관련 역할: textbox, search.
section
페이지 상에 렌더링되는 구조적 포함 단위입니다.
sectionhead
관련 섹션의 주제를 라벨링하거나 요약하는 구조입니다.
select
사용자가 여러 선택지 중에서 값을 선택할 수 있는 폼 위젯입니다.
separator
콘텐츠 섹션 또는 메뉴 항목 그룹을 구분하고 나누는 구분선입니다.
slider
사용자가 지정된 범위 내에서 값을 선택하는 입력입니다.
spinbutton
사용자가 불연속적 선택지 중 하나를 선택할 수 있는 range 유형입니다.
status
사용자에게 참고로 제공되는 라이브 리전 유형으로, alert를 사용할 만큼 중요하지 않지만 주로(필요시) 상태 표시줄로 나타날 수 있습니다.
strong
중요, 심각 또는 긴급한 내용을 담습니다. 관련 역할: emphasis.
structure
문서 구조 요소입니다.
subscript
하나 이상의 아래첨자 문자입니다. 관련 역할: superscript.
suggestion
콘텐츠에 대한 단일 제안 변경입니다.
superscript
하나 이상의 위첨자 문자입니다. 관련 역할: superscript.
switch
on/off 값을 표현하는 체크박스 유형으로, checked/unchecked가 아닌 값을 가집니다. 관련 역할: checkbox.
tab
사용자에게 보여줄 탭 콘텐츠를 선택하는 메커니즘을 제공하는 그룹 라벨입니다.
table
데이터를 행과 열로 배열한 section입니다. 관련 역할: grid.
tablist
tab 요소들의 목록이며, 이러한 요소는 tabpanel 요소를 참조합니다.
tabpanel
tab에 관련된 리소스를 담는 컨테이너이며, 각 tabtablist 내에 포함됩니다.
term
정의가 달릴 수 있는 단어 또는 구. 관련 역할: definition.
textbox
자유 형식 텍스트 값을 허용하는 입력 유형입니다.
time
특정 시점을 나타내는 요소입니다.
timer
시작 시점부터 경과 시간이나 종료까지 남은 시간을 숫자로 표시하는 라이브 리전 유형입니다.
toolbar
자주 사용하는 기능 버튼이나 컨트롤을 한데 모아 콤팩트한 시각적 형태로 제시하는 모음입니다.
tooltip
요소의 설명을 나타내는 컨텍스트 팝업입니다.
tree
계층적으로 정리된 컬렉션에서 사용자가 하나 이상 항목을 선택할 수 있는 widget입니다.
treegrid
tree와 마찬가지로 행의 확장과 축소가 가능한 grid입니다.
treeitem
tree 내의 항목입니다.
widget
그래픽 사용자 인터페이스(GUI)의 인터랙티브 컴포넌트입니다.
window
브라우저 또는 애플리케이션의 윈도우입니다.

alert role

중요하며 일반적으로 시간에 민감한 정보를 담는 라이브 리전의 한 종류입니다. 관련 역할: alertdialog, status를 참고하세요.

alert는 사용자에게 즉시 중요한 메시지를 전달할 때 사용됩니다. 경고음 등 오디오 경고가 있을 경우, alert는 청각 장애인 사용자를 위해 접근 가능한 대안을 제공합니다. alert role은 알림 메시지를 포함하는 요소에 적용합니다. alertstatus 역할의 특수한 형태로, 원자적 라이브 리전으로 처리됩니다.

alert는 단호(assertive)한 라이브 리전이며, 이는 보조기술 사용자에게 즉시 알림이 전달됨을 의미합니다. 운영체제에서 지원하는 경우 user agentWAI-ARIA alert가 생성될 때 접근성 API를 통해 시스템 alert event권장(SHOULD) 발생시켜야 합니다.

alert가 처리되기 위해 저자나 사용자 에이전트가 포커스를 설정하거나 관리할 필요는 없습니다. alert는 포커스를 받을 필요가 없으므로, 저자는 사용자가 alert를 닫아야 하는 것을 요구하지 않아야 합니다(SHOULD NOT). 메시지가 전달될 때 포커스를 이동시키고 싶다면, 저자는 alert 대신 alertdialog사용해야 합니다(SHOULD).

alert 역할을 가진 요소는 aria-live 값이 암묵적으로 assertive이고, aria-atomic 값이 암묵적으로 true입니다.

특성:
특성
상위 역할(Superclass Role): section
하위 역할(Subclass Roles):
상속된 상태 및 속성(Inherited States and Properties):
이름 출처(Name From): author
역할의 암묵적 값(Implicit Value for Role): aria-live의 기본값은 assertive입니다.
aria-atomic의 기본값은 true입니다.

alertdialog role

경고 메시지를 포함하며, 처음 포커스가 다이얼로그 내 요소로 가는 대화상자의 한 종류입니다. 관련 역할: alert, dialog.

alertdialog는 사용자에게 경고를 전달하는 역할입니다. alertdialog role은 경고 메시지와 나머지 다이얼로그 모두를 포함하는 노드에 적용합니다. 저자는 alertdialog가 표시되는 동안 키보드와 마우스 동작이 다이얼로그 내에서만 동작하도록 보장하여 대화상자를 모달로 만드는 것을 권장합니다(SHOULD). aria-modal 참고.

alert와는 달리, alertdialog는 사용자로부터 응답을 받을 수 있습니다. 예를 들어 사용자가 생성된 경고를 확인했다는 응답을 받을 때입니다. alert dialog가 표시될 때 저자는 입력 컨트롤이나 확인 버튼 등 alertdialog 내의 활성 요소에 포커스를 두는 것을 권장합니다(SHOULD). user agent는 접근성 API를 통해, 의도된 accessibility API가 명시된 경우에 시스템 alert event권장해서 발생시켜야 합니다(SHOULD).

저자는 alertdialog에서 경고 메시지 요소를 참조하기 위해 aria-describedby 사용을 권장합니다(SHOULD). 그렇지 않은 경우 보조 기술이 자체 복구 메커니즘으로 경고 메시지의 내용을 확인할 수 있습니다.

특성:
특성
상위 역할(Superclass Role):
상속된 상태 및 속성(Inherited States and Properties):
이름 출처(Name From): author
접근 가능한 이름 필수(Accessible Name Required): True

application role

하나 이상의 포커스 가능한 요소를 포함하며, 키보드나 제스처 이벤트와 같이 사용자 입력이 필요하지만 widget 역할이 지원하는 표준 상호작용 패턴을 따르지 않는 structure입니다.

일부 user agent보조 기술은 기본 입력 이벤트(예를 들어 위아래 방향키 이벤트 등)를 가로채어 읽기 커서를 제어하는 브라우즈 모드를 제공합니다. 이 브라우즈 모드는 widget 역할이 없는 요소가 그러한 키보드·제스처 이벤트를 받아 상호작용 기능을 제공하는 것을 방해합니다.

WAI-ARIA widget 역할로 지원되지는 않지만, 독자적 상호작용 모델이 필요한 경우 저자는 해당 요소에 application 역할을 지정할 수 있습니다(MAY). 그리고 사용자가 application 역할의 요소로 이동할 때, 표준 입력 이벤트를 가로채는 보조 기술은 대부분 또는 모든 입력 이벤트를 웹 애플리케이션으로 직접 전달하도록 동작을 전환해야 합니다(SHOULD).

예시: 프레젠테이션 슬라이드 편집기는 방향키로 슬라이드 내 텍스트박스와 이미지 요소의 위치를 바꿉니다. 이와 같은 상호작용 모델에 해당하는 WAI-ARIA widget 역할은 없으므로, 저자는 슬라이드 컨테이너에 application 역할, aria-roledescription에 "Slide Editor", aria-describedby를 지정해 설명을 제공할 수 있습니다.

일부 보조 기술에서 application 요소에 포함된 포커스 가능한 요소만 접근되기 때문에, 저자는 반드시(MUST) 내부의 모든 장식용이 아닌 정적 텍스트나 이미지 콘텐츠도 접근 가능하도록 아래 방법 중 하나를 사용해야 합니다:

  1. aria-labelledby 또는 aria-describedby로 콘텐츠를 포커스 가능한 요소와 연결합니다.
  2. document 또는 article 역할을 가진 포커스 가능한 요소에 콘텐츠를 배치합니다.
  3. 포커스 관리에 설명된 대로 접근성 하위 요소의 포커스를 직접 관리하며, aria-activedescendant 값을 포커스된 내용을 담는 요소로 업데이트합니다.
특성:
특성
상위 역할(Superclass Role): structure
지원 상태 및 속성(Supported States and Properties):
상속된 상태 및 속성(Inherited States and Properties):
이름 출처(Name From): author
접근 가능한 이름 필수(Accessible Name Required): True

article role

문서, 페이지 또는 사이트의 독립적인 일부를 구성하는 페이지의 섹션입니다.

article은 내비게이션 랜드마크가 아니지만, 중첩하여 토론의 구조를 만들 수 있으며, 보조 기술이 article의 중첩 구조를 사용하여 사용자가 토론의 맥락을 따라가는 데 도움을 줄 수 있습니다. article은 포럼 게시물, 잡지나 신문 기사, 블로그 글, 사용자 댓글 등 독립적인 어떤 콘텐츠라도 될 수 있습니다. 독립적이라는 의미는, article의 콘텐츠만으로도 예를 들어 syndication에서 단독으로 제공될 수 있기 때문입니다. 그러나 요소는 여전히 상위와 연관됩니다. 예를 들어, 상위 body 요소의 연락처 정보는 article에도 적용됩니다. article을 중첩할 경우, 자식 article 내용은 부모 article과 관련된 콘텐츠를 나타냅니다. 예를 들어, 댓글이 허용된 블로그 포스트는 댓글을 부모 article에 중첩된 article로 나타낼 수 있습니다. 저자, 제목, 날짜, 기타 article에 연결된 정보는 중첩된 article에는 적용되지 않습니다.

사용자가 article 역할이 할당된 요소로 이동할 때, 표준 키보드 이벤트를 가로채는 보조 기술은 보통 키보드 이벤트를 웹앱으로 넘기지 않고, 문서 탐색 모드로 동작을 전환해야 합니다(SHOULD). 일부 보조 기술은 사용자가 중첩된 article 구조를 탐색할 수 있게 도와주는 기능을 제공합니다.

articlefeed 맥락에 있다면, 저자는 aria-posinsetaria-setsize 값을 지정할 수 있습니다(MAY).

특성:
특성
상위 역할(Superclass Role): document
하위 역할(Subclass Roles):
연관 개념(Related Concepts):
지원 상태 및 속성(Supported States and Properties):
상속된 상태 및 속성(Inherited States and Properties):
이름 출처(Name From): author

blockquote role

다른 출처에서 인용한 콘텐츠 섹션입니다.

특성:
특성
상위 역할(Superclass Role): section
연관 개념(Related Concepts):
상속된 상태 및 속성(Inherited States and Properties):
이름 출처(Name From): author

button role

사용자가 클릭하거나 누를 때 동작이 발생하는 입력입니다. 관련 역할: link.

버튼은 주로 개별 동작을 위해 사용됩니다. 버튼의 시각적 표준화는 사용자가 위젯을 버튼으로 인식하기 쉽게 해주고, 툴바에서 더 콤팩트하게 표시할 수 있게 합니다.

버튼은 선택적으로 attribute aria-pressed를 지원합니다. aria-pressed 속성이 비어 있지 않으면 토글 버튼입니다. aria-pressedtrue이면 버튼이 "눌림" 상태이고, false이면 눌리지 않은 상태입니다. 속성이 존재하지 않으면 단순 명령 버튼입니다.

특성:
특성
상위 역할(Superclass Role): command
기본 개념(Base Concept): <button> in HTML
연관 개념(Related Concepts):
지원 상태 및 속성(Supported States and Properties):
상속된 상태 및 속성(Inherited States and Properties):
이름 출처(Name From):
  • contents
  • author
접근 가능한 이름 필수(Accessible Name Required): True
자식 프리젠테이션(Children Presentational): True

caption role

figure, grid, group, radiogroup, table, treegrid를 명명하거나 설명하는 눈에 보이는 콘텐츠입니다.

caption 사용 시 저자는 다음 사항을 지켜야 합니다(SHOULD):

caption이 포함 요소의 접근 가능한 이름 역할을 한다면 저자는 포함 요소에 aria-labelledby 속성을 명시해서 caption 역할 요소를 참조할 것을 권장합니다(SHOULD).

<div role="radiogroup" aria-labelledby="cap">
   <div role="caption" id="cap">
     과일을 선택하세요
   </div>
   <!-- ... -->

caption에 포함된 콘텐츠가 이름 및 설명 역할을 모두 한다면, 저자는 선택적으로(MAY) aria-labelledbycaption 내에서 포함 요소의 "이름" 역할을 하는 요소를 참조하고, aria-describedby로 설명 콘텐츠 역할을 하는 caption 내 요소를 참조할 수 있습니다.

<div role="table" aria-labelledby="name" aria-describedby="desc">
   <div role="caption">
     <div id="name">콘테스트 참가자</div>
     <div id="desc">
       이 표는 지난 4주간 콘테스트에서 총 500명의 참가자가 수용되었음을 보여줍니다.
     </div>
   </div>
   <!-- ... -->

caption이 장문의 설명이거나, 설명에 의미를 가진 시맨틱 요소가 포함된다면 저자는 선택적으로(MAY) aria-labelledby로 "이름" 역할의 요소를 참조하고, 설명 콘텐츠 역할 요소를 aria-details로 참조할 수 있습니다.

<div role="figure" aria-labelledby="name" aria-details="details">
  <!-- figure 컨텐츠 예: 복잡 데이터 시각화 SVG -->
   <div role="caption">
     <div id="name">20XX년 매출 정보</div>
     <div id="details">
       이 막대그래프는 5년간의 총 매출액을 나타냅니다.
       <a href="...">작년 매출 정보</a>를 볼 수 있고, <button aria-pressed="false">이전 연도</button> 정보를 이 그래픽에 오버레이 할 수도 있습니다.
     </div>
   </div>
   <!-- ... -->

caption이 이름 역할에 적합한 텍스트 없이 설명만 포함된다면, aria-label이나 aria-labelledby를 사용해 접근 가능한 이름을 제공하고, captionaria-details로만 참조해서 설명 콘텐츠로 사용할 수 있습니다(MAY).

<div role="figure" aria-label="매출 정보" aria-details="details">
  <!-- figure 컨텐츠 예: 복잡 데이터 시각화 SVG -->
   <div role="caption" id="details">
     이 막대그래프는 5년간의 총 매출액을 나타냅니다.
     <a href="...">작년 매출 정보</a>를 볼 수 있고,
     <button aria-pressed="false">이전 연도</button> 정보를 이 그래픽에 오버레이 할 수도 있습니다.
   </div>
   <!-- ... -->
특성:
특성
상위 역할(Superclass Role): section
연관 개념(Related Concepts):
필수 접근성 부모 역할(Required Accessibility Parent Roles):
상속된 상태 및 속성(Inherited States and Properties):
사용 금지 상태 및 속성(Prohibited States and Properties):
이름 출처(Name From): prohibited

cell role

표 형태 컨테이너 내의 셀입니다. 관련 역할: gridcell 참고.

저자는 반드시(MUST) elementrole cell을 지정할 경우 rolerow인 요소의 접근성 자식이어야 합니다.

특성:
특성
상위 역할: section
하위 역할:
기본 개념: <td> in HTML
필수 접근성 부모 역할: row
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

checkbox role

세 가지 을 가질 수 있는 체크 가능한 입력(인풋)입니다: true, false, mixed.

aria-checked attributecheckbox가 체크됨(true), 체크 해제됨(false), 혹은 일부만 체크된 상태(mixed)(여러 element가 혼합되어 있음)를 나타냅니다. 많은 체크박스는 mixed 값을 사용하지 않으므로 사실상 불린 체크박스입니다.

참고

HTML의 네이티브 체크박스의 강한 시맨틱 때문에, 저자는 input type=checkbox에서 aria-checked 사용을 피할 것을 권장합니다. 대신 네이티브 checked 어트리뷰트나 indeterminate IDL 속성을 사용해 체크박스의 "checked"나 "mixed" 상태를 각각 지정하세요.

특성:
특성
상위 역할: input
하위 역할:
연관 개념:
필수 상태 및 속성:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True
자식 프리젠테이션: True

code role

컴퓨터 코드 조각을 나타내는 섹션입니다.

code 역할의 주요 목적은 보조 기술에 해당 콘텐츠가 컴퓨터 코드임을 알려, 특히 음성 출력(합성음)과 관련해 특별한 표현이 요구될 수 있음을 알리는 것입니다. 즉, 화면 낭독기 등 텍스트를 음성으로 읽어주는 도구는 일반 기호(예: "-")도 모두 말하도록 구두점 명료도를 지원해야 합니다(SHOULD).

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
사용 금지 상태 및 속성:
이름 출처: prohibited

columnheader role

열의 헤더 정보를 담는 셀입니다.

columnheader는 표나 그리드에서 열 헤더로 쓸 수 있습니다. 파이 차트 등에서도 데이터의 관계를 나타내기 위해 사용할 수 있습니다.

columnheader는 해당 열의 모든 셀과의 관계를 만듭니다. 이는 HTML th element 중 열 범위(scope)가 지정된 structurally equivalent 역할입니다.

저자는 반드시(MUST) elementrole columnheader를 지정한 경우 row 역할의 요소의 접근성 자식이어야 합니다.

aria-selected 상태를 columnheader에 지정하더라도, 사용자 에이전트는 그와 같은 열의 모든 셀이 동일하게 선택 상태가 되도록 aria-selected 상태를 자동으로 전파해서는 안 됩니다(MUST NOT). 각 애플리케이션 목적에 따라 저자가 수동으로 전파할 수도 있습니다(MAY).

columnheader 역할은 상호작용 가능한 grid와 비상호작용 표(table) 모두 사용 가능하지만, aria-readonlyaria-required의 사용은 상호작용 요소에만 적용됩니다. 따라서, table에 속한 columnheader에는 두 속성을 사용하지 않아야 하며(SHOULD NOT), 사용자 에이전트도 columnheadergrid 계통이 아닌 경우, 두 속성을 보조 기술에 노출하지 않아야 합니다(SHOULD NOT).

참고

셀은 행으로 묶이므로 단일 열 컨테이너 요소가 존재하지 않습니다. 열은 각 row 내 동일 위치를 차지하고 있는 gridcell 요소 집합입니다.

참고: aria-disabled 사용

현재 aria-disabledcolumnheader에서 지원되지만, 추후 버전에서는 gridtreegrid 맥락이 아닐 때는 금지될 예정입니다.

특성:
특성
상위 역할:
기본 개념: <th scope="col"> in HTML
필수 접근성 부모 역할: row
지원 상태 및 속성: aria-sort
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True

combobox role

input 역할을 가지며, listboxgrid와 같이, 사용자가 input 값을 설정하도록 도와주는 보조 팝업 요소를 동적으로 제어합니다.

편집자 주: ARIA 1.2 combobox 역할의 주요 변경사항

combobox에 대한 가이드가 이전 패턴의 구현 문제로 인해 ARIA 1.2에서 상당히 변경되었습니다. 사용자 에이전트, 보조 기술, 규정체크 도구의 저자 및 개발자들은 본 섹션을 신중히 검토해야 합니다. 변경 사항 설명은 ARIA 저장소 위키에서 볼 수 있습니다.

combobox는 이름이 지정된 입력 필드에 보조 팝업 요소를 통해 값 선택을 지원하는 기능을 결합합니다. combobox 입력은 편집과 입력이 가능한 단일라인 텍스트 필드이거나, combobox의 현재값만 보여주는 요소일 수도 있습니다. combobox가 텍스트 입력과 aria-autocomplete에서 설명한 오토컴플리트 동작을 지원한다면 저자는 반드시(MUST) combobox 요소에 aria-autocomplete를 적절한 동작값으로 설정해야 합니다.

보통 combobox의 최초 상태는 축소(collapsed)된 상태입니다. 축소된 상태에서는 combobox 요소와 별도의 팝업 제어 button(선택 사항)만이 보입니다. combobox가 현재 값과 관련 팝업 요소 모두가 보이면 확장(expanded) 상태입니다. 저자는 반드시(MUST) aria-expanded를 확장 시 true, 축소 시 falsecombobox 요소에 지정해야 합니다.

저자는 반드시(MUST) combobox에 연결된 팝업 요소가 listbox, tree, grid, 또는 dialog 역할일 것을 보장해야 합니다. 팝업이 보이면 저자는 반드시(MUST) aria-controls 값이 팝업 요소를 참조하도록 combobox에 설정해야 합니다.

combobox 역할 요소는 암묵적으로 aria-haspopup 값이 listbox입니다. 만약 combobox의 팝업 역할이 listbox 이외라면 저자는 반드시(MUST) 팝업 역할에 맞는 aria-haspopup 값을 지정해야 합니다.

만약 팝업의 가시성을 포인터/터치로 조작하는 추가 아이콘이 있다면, 저자는 해당 요소가 button 역할이며 포커스 가능하지만 페이지 Tab 시퀀스에는 포함되지 않고, combobox의 자식이 아니도록 권장합니다(SHOULD). 또한, 키보드 접근성을 위해 combobox 요소와 팝업 내 요소 간 포커스 이동을 위한 키보드 메커니즘 제공도 권장합니다(SHOULD). 예시로, 아래 화살표는 입력필드에서 팝업의 첫 포커스 가능 자식으로 이동하는 관례가 있습니다. 만약 팝업 요소가 aria-activedescendant를 지원하면, 실제 포커스 이동 대신 comboboxaria-activedescendant 값을 변경해도 됩니다. 팝업 자식이 활성화 상태일 때, 저자는 선택적으로(MAY) comboboxaria-activedescendant 값을 팝업 내 활성 요소 id로 지정할 수 있습니다(포커스는 combobox 유지).

사용자 에이전트는 반드시(MUST) combobox 역할 요소의 값을 보조 기술에 노출해야 합니다. combobox 값은 다음 중 하나로 표현됩니다:

  • combobox가 예를 들어 HTML input 요소 등 값이 존재하는 호스트 언어 요소라면 그 값이 combobox의 값입니다.
  • 그 외에는, combobox의 자식요소 후손 값을 통해 결정되며, button의 이름 산정법과 동일하게 정해집니다.
    <label id="tag_label" for="tag_combo">Tag</label>
  <input type="text" id="tag_combo"
      role="combobox" aria-autocomplete="list"
      aria-haspopup="listbox" aria-expanded="true"
      aria-controls="popup_listbox" aria-activedescendant="selected_option">
<ul role="listbox" id="popup_listbox" aria-labelledby="tag_label">
   <li role="option">Zebra</li>
   <li role="option" id="selected_option">Zoom</li>
</ul>
편집자 주: ARIA 1.2 combobox 유효성 변경

아래 내용을 반드시 주의 깊게 보세요. 이 변경으로 기존 ARIA 1.1 combobox 사양을 따르는 combobox는 ARIA 사양에 더 이상 부합하지 않습니다.

참고

본 명세에서 정의하는 combobox의 구조 요건은 ARIA 1.0, 1.1과 다릅니다:

  • ARIA 1.0에서는 combobox 역할 입력요소가 반드시 단일라인 텍스트필드이고 aria-controls 대신 aria-owns로 팝업을 참조해야 했습니다.
  • ARIA 1.1(지원 확대 안됨)에서는 combobox가 포커스 불가 요소이고 필수 접근성 자식 두 개(포커스 가능 textbox와, textbox가 제어하는 팝업요소)를 가져야 했음.
  • ARIA 1.2의 변화로 보조 기술과의 상호운용성이 향상됐고 저자는 실제 HTML select와 유사한 UI를 만들 수 있게 되었습니다.

combobox 구현의 특징과 동작은 매우 다양합니다. 이에 따라 다양한 중요한 작성 고려사항이 있으니, 상세 구현은 WAI-ARIA Authoring Practices를 참고하세요.

특성:
특성
상위 역할: input
연관 개념:
필수 상태 및 속성: aria-expanded
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
역할의 암묵적 값: aria-haspopup의 기본값은 listbox입니다.

command role

행동을 수행하지만 입력 데이터를 받지는 않는 위젯 형태입니다.

command는 온톨로지에서 사용되는 추상 역할입니다. 저자는 절대(MUST NOT) 콘텐츠에 command 역할을 사용해서는 안 됩니다.

특성:
특성
추상 역할: True
상위 역할: widget
하위 역할:
상속된 상태 및 속성:

comment role

comment는 다른 콘텐츠에 대한 반응을 담는 내용을 포함합니다.

comment는 작은 텍스트 영역부터 다른 코멘트, 전체 article까지 어떤 가시 콘텐츠에도 주석을 달 수 있습니다. 저자는 comment와 피평(주석대상) 콘텐츠 간의 관계를 다음과 같이 권장(SHOULD)합니다:

  1. comment가 또 다른 comment의 답글(reply)인 경우:
    • 모든 상위 comment가 DOM에 있으면, reply comment를 답글 대상 comment의 시맨틱 자식(즉, DOM 자손요소 또는 aria-owns 활용)으로 작성하세요.
    • 또는, 상위 comment의 일부/전체가 DOM에 없을 경우(페이지네이션 등), 계층 레벨은 aria-level로, 그룹 내 위치 추가 정보는 aria-posinsetaria-setsize지정할 수 있습니다(MAY).
  2. 그 외, comment가 페이지 내의 다른 콘텐츠와 연관된 경우:
    • comment를 가진 요소를 aria-details로 참조하여 피평 콘텐츠에 지정하세요.
    • 여러 comment가 하나의 콘텐츠에 달렸으면 각각을 aria-details로 모두 참조하거나, comment 컨테이너를 aria-details로 지정하세요. 이때 해당 comment 컨테이너가 comment 요소 모음임을 명확히 하려면, group 또는 region 역할을 부여할 것을 권장합니다(SHOULD).

aria-level, aria-posinset, aria-setsize를 author가 comment 요소에 명시적으로 선언하지 않은 경우, 사용자 에이전트는 반드시(MUST) 빠진 값을 자동 계산하여 보조기술에 노출해야 합니다.

특성:
특성
상위 역할: article
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

complementary role

이 역할은 메인 콘텐츠와 형제이거나 자식인 경우, 메인 콘텐츠를 보완하는 landmark입니다. complementary 랜드마크의 내용은 연관된 메인 콘텐츠와 분리되어 있어도 의미를 가집니다.

role이 적합한 콘텐츠 유형에는 다양한 것이 있습니다. 예를 들어 포털사이트에서는 상영시간, 현재 날씨, 관련기사, 주목해야 할 주식 등이 될 수 있습니다. 만약 보완 콘텐츠가 메인 콘텐츠와 완전히 분리되어 있다면 더 일반적인 역할이 적합할 수 있습니다.

보조 기술은 사용자가 complementary 역할 요소로 빠르게 이동할 수 있도록 권장합니다(SHOULD). user agentscomplementary 역할 요소를 내비게이션 랜드마크로 처리하는 것이 권장됩니다(SHOULD). user agents는 사용자가 complementary 역할 요소로 신속 이동하는 기능을 제공할 수 있습니다(MAY).

특성:
특성
상위 역할: landmark
연관 개념:
상속된 상태 및 속성:
이름 출처: author

composite role

내비게이션 가능한 accessibility descendants를 포함할 수 있는 위젯입니다.

저자는 복합 위젯이 웹 페이지 전체 내비게이션 시스템에서 하나의 네비게이션 스톱(탭정거점)으로만 동작하도록 권장합니다(SHOULD). 복합 위젯에 포커스가 들어오면, 저자는 사용자가 해당 복합 요소의 element접근성 자식을 별도 내비게이션 방식으로 이동할 수 있도록 권장합니다(SHOULD).

composite는 온톨로지에서 사용하는 추상 역할입니다. 저자는 절대(MUST NOT) 콘텐츠에 composite 역할을 사용해서는 안 됩니다.

특성:
특성
추상 역할: True
상위 역할: widget
하위 역할:
지원 상태 및 속성:
상속된 상태 및 속성:

contentinfo role

상위 문서에 대한 정보를 포함하는 landmark입니다.

이 영역에 포함되는 정보 예시는 저작권 정보와 개인정보 처리방침 링크 등이 있습니다.

보조 기술은 사용자가 contentinfo 역할의 요소로 빠르게 이동할 수 있도록 권장합니다(SHOULD). user agentscontentinfo 역할 요소를 내비게이션 랜드마크로 처리하는 것이 권장됩니다(SHOULD). user agents는 사용자가 contentinfo 역할 요소로 신속 이동하는 기능을 제공할 수 있습니다(MAY).

저자는 한 페이지에 contentinfo 역할의 element를 반드시 1개 이하로만 지정하는 것이 권장됩니다(SHOULD).

참고

documentapplication 요소가 DOM에서 중첩될 수 있으므로, 각각이 별도의 문서 노드에 연결되는 경우(document 안의 document 등) 또는 aria-owns 속성을 사용하면, 하나의 DOM에 여러 contentinfo 요소가 존재할 수 있습니다.

특성:
특성
상위 역할: landmark
연관 개념:
상속된 상태 및 속성:
이름 출처: author

definition role

용어나 개념에 대한 정의입니다. 관련 역할: term.

저자는 반드시(MUST) 정의하려는 element를 명확히 하고 그 요소에 term 역할을 지정해야 합니다.

저자는 사용해서는 안 됩니다(SHOULD NOT) form 컨트롤과 같은 상호작용 요소에 definition 역할을 지정하면 보조기술 사용자가 해당 요소와 상호작용하지 못할 수 있으므로 지양해야 합니다.

특성:
특성
상위 역할: section
상속된 상태 및 속성:
사용 금지 상태 및 속성:
이름 출처: prohibited

deletion role

deletion은 삭제된 콘텐츠, 삭제 제안 콘텐츠, 또는 해당 맥락에서 더 이상 적절하지 않은 콘텐츠를 나타냅니다. 관련 역할: insertion.

deletion은 주로 두 버전 간 콘텐츠 차이 표시, 또는 다수의 사용자가 콘텐츠를 편집하는 상황에서 삭제 제안 내용을 표시하는 데 사용됩니다.

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
사용 금지 상태 및 속성:
이름 출처: prohibited

dialog role

다이얼로그는 웹 애플리케이션의 기본 창의 하위 창입니다. HTML 페이지의 경우, 기본 애플리케이션 창은 전체 웹 문서이며, 즉 body 요소입니다.

다이얼로그는 주로 사용자에게 정보를 입력하거나 응답하도록 요청할 때 사용됩니다. 작업 흐름을 중단하도록 설계된 다이얼로그는 보통 모달입니다. 관련 역할: alertdialog를 참고하세요.

저자는 반드시(MUST) 다이얼로그에 접근 가능한 이름을 제공해야 하며, aria-label 또는 aria-labelledby 속성으로 지정할 수 있습니다.

저자는 권장합니다(SHOULD) 모든 다이얼로그(모달, 비모달 모두)에 최소 하나 이상의 포커스 가능한 자손 요소를 갖도록 해야 합니다. 다이얼로그가 표시될 때는 모달 다이얼로그 내의 요소에 포커스를 주고, 모달 다이얼로그의 포커스 관리를 권장합니다(SHOULD).

참고

이 역할의 설명에서 "웹 애플리케이션"이라는 용어는 접근성 기술 동작을 지정하는 application 역할을 의미하지 않습니다.

특성:
특성
상위 역할: window
하위 역할:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

directory role

[ARIA 1.2에서 폐지됨] 그룹의 구성원에 대한 참조 목록(예: 정적 목차)입니다.

참고

접근성 API에서 노출되는 directory role은 사실상 list role과 동등합니다. 따라서 directory 사용은 보조기술 사용자에게 추가적인 이점을 주지 않습니다. 저자는 directory를 폐지된 것으로 간주하고, list 또는 호스트 언어의 동등 시맨틱을 사용하는 것을 권장합니다.

directory는 연결된 것이든 연결되지 않은 것이든 정적 목차입니다. 이는 리스트로 구축된 목차(중첩 리스트 포함) 모두를 포함합니다. 동적 목차는 tree 역할을 사용할 수도 있습니다.

특성:
특성
상위 역할: list
상속된 상태 및 속성:
이름 출처: author

document role

element 내에 포함되어 있는 콘텐츠로, 보조 기술 사용자가 읽기 모드로 탐색하고자 할 수 있습니다.

user agent 포커스가 document 역할이 지정된 요소로 이동할 때, 정적 콘텐츠 읽기 모드가 있는 보조 기술선택적으로(MAY) 읽기 모드로 전환하고, 위/아래 방향키 같은 표준 입력 이벤트를 읽기 커서 조작용으로 가로챌 수 있습니다.

읽기 모드가 있는 보조 기술은, widget 또는 application 역할이 아닌 모든 요소에 대해 기본적으로 읽기 모드를 사용합니다. 따라서 document 역할이 보조 기술 동작을 바꾸는 것이 유용한 상황은, document 역할 요소가 widget 또는 application의 포커스 가능한 자식인 경우뿐입니다. 예를 들어, application 요소에 정적 리치 텍스트가 포함된 경우, 그 텍스트가 들어있는 요소에 document 역할을 부여하고 tabindex0으로 하면, 스크린리더 사용자가 Tab 키로 document 요소에 포커스할 때 읽기 커서로 해당 내용을 탐색할 수 있습니다.

특성:
특성
상위 역할: structure
하위 역할:
상속된 상태 및 속성:
이름 출처: author

emphasis role

하나 이상의 강조(강세)된 문자입니다. 관련 역할: strong를 참고하세요.

emphasis 역할의 목적은 콘텐츠의 의미를 강조하거나 스트레스 주는 것입니다. 단순히 의미에 영향 없는 타이포그래피적 변화를 전달하려는 목적이 아닙니다. 저자는 권장합니다(SHOULD) emphasis 역할의 부재가 내용의 의미 변화를 야기할 때만 이 역할을 사용해야 합니다.

emphasis 역할은 중요성을 전달하는 용도가 아닙니다. 그러한 목적에는 strong 역할이 더 적합합니다.

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
사용 금지 상태 및 속성:
이름 출처: prohibited

feed role

스크롤이 가능한 list로, 스크롤 될 때 articles이 리스트 양 끝에 추가되거나 제거될 수 있습니다.

feed는 문서 탐색 모드를 지원하는 스크린리더와 같은 보조기술 사용자들이 탐색 커서를 사용하여, 무한히 스크롤될 수 있는 다양한 리치 콘텐츠 스트림을 읽고 스크롤할 수 있게 해 줍니다. feed에서 보조기술은 사용자의 읽기 커서 이동을 user agent 포커스 이동을 통해 웹앱에 전달하며, 앱은 사용자의 읽기에 맞게 새로운 콘텐츠를 추가하거나 시각적으로 콘텐츠 위치를 조정할 수 있습니다. 또한 feed는 콘텐츠의 추가/제거를 보조기기에 알릴 수 있게 하여 읽기 흐름을 방해하지 않고도 더 신뢰성 있게 보기를 갱신할 수 있도록 도와줍니다.

예시로, feed는 각 article에 텍스트, 링크, 이미지, 덧글, 공유 및 댓글 기능 위젯 등이 포함된 뉴스 스트림에 사용할 수 있습니다. 스크린리더 사용자가 각 기사에 포커스하면서 기사를 읽고 상호작용할 때, 각 기사가 뷰에 표시되고 필요할 경우 새로운 기사가 추가됩니다.

feed는 자식이 article 역할을 가지는 컨테이너 요소입니다. articlesfeed 양단에서 추가/제거될 경우, 저자는 변경 전 feedaria-busytrue로, 변경 완료 후 false로 지정하는 것이 권장됩니다(SHOULD). feed 중간에 articles를 삽입/제거하는 것은 지양해야 합니다(SHOULD). 이 요구사항들은 보조기술이 읽기 커서 이동과 동시에 피드 변경에 부드럽게 반응할 수 있게 도와줍니다.

저자는 권장합니다(SHOULD) feed 내 각 article가 포커스 가능하도록 하고, user agent 포커스가 해당 article나 그 자손에 위치할 때 프로그램이 해당 article를 스크롤 뷰로 가져가는 기능을 제공해야 합니다. 예시로, HTML에서는 각 articletabindex-1 또는 0으로 설정해야 합니다.

보조기술의 읽기 커서가 한 article에서 다른 article로 이동하면, 보조기술article에 user agent 포커스를 이동하도록 권장합니다(SHOULD). 읽기 커서가 article 내 포커스 가능한 요소에 멈추면, 보조기술은 해당 요소에 포커스를 이동할 수 있습니다(MAY).

읽기 커서로 다른 article로 이동하려면, 페이지에 또 다른 article이 존재해야 하므로, 저자는 user agent 포커스가 로드된 article 집합의 양단에 도달하기 전 미리 추가 콘텐츠를 로드할 것을 권장합니다(SHOULD). 또는, 양단에 button 등 추가 로드 트리거 UI 요소가 포함된 article을 둘 수 있습니다(MAY).

요약 레이블 외에도, 저자는 선택적으로(MAY) aria-describedbyfeedarticle에 적용해, 스크린리더가 각 article 탐색 시 어떤 요소를 레이블 뒤에 읽어야 할지 추천할 수 있습니다. 스크린리더는 선택적으로(MAY) 사용자가 article로 이동할 때 레이블과 접근 가능한 설명을 함께 읽어, 반복적이거나 덜 중요한 위젯 등 저자가 설명에 제외한 요소를 사용자가 건너뛸 수 있게 도와줄 수 있습니다.

저자는 권장합니다(SHOULD) feedarticles 간 포커스 이동을 위한 키보드 명령을 제공해야 하며, article 탐색 기능이 없는 보조기술 사용자도 키보드로 feed를 탐색할 수 있게 해야 합니다.

만약 feed의 전체 기사 수가 고정이라면, 저자는 선택적으로(MAY)articlearia-setsize를 명시할 수 있습니다. 전체 수가 매우 크거나 불특정, 빈번히 변하는 경우, 저자는 선택적으로(MAY) aria-setsize-1로 지정해 집합 크기를 알 수 없음을 전달할 수 있습니다.

피드 디자인 패턴 구현에 대한 더 자세한 내용은 WAI-ARIA Authoring Practices를 참고하세요.

특성:
특성
상위 역할: list
허용된 접근성 자식 역할: article
상속된 상태 및 속성:
이름 출처: author

figure role

일반적으로 section의 시각적으로 인지 가능한 컨텐츠로, 주로 그래픽 문서, 이미지, 미디어 플레이어, 코드 스니펫, 예시 텍스트 등을 포함합니다. figure의 부분은 사용자가 탐색할 수 있습니다(MAY).

저자는 권장합니다(SHOULD) 메인 텍스트에서 해당 figure로의 참조를 제공하고, figure가 반드시 참조 요소와 같은 위치에 표시될 필요는 없습니다. 저자는 선택적으로(MAY) figurecaption을 설정할 수 있으며, 이는 이름, 설명 텍스트, 또는 둘 다를 포함할 수 있습니다. caption이 제공되고 figure의 내용을 묘사하는 역할이라면, 저자는 권장합니다(SHOULD) aria-details를 이용해 figurecaption의 연관을 명시하세요.

저자는 선택적으로(MAY) aria-label 또는 aria-labelledby를 이용해 페이지 내 다른 텍스트를 참조하여 figure에 접근 가능한 이름을 제공할 수 있습니다.

figurecaption을 연결하는 더 자세한 방법은 caption 역할 설명을 참고하세요.

보조기술은 사용자가 figure로 빠르게 이동할 수 있도록 권장합니다(SHOULD). User agents는 figure로 신속 이동을 제공할 수 있습니다(MAY).

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
이름 출처: author

form role

여러 아이템 및 객체가 모여 하나의 폼을 구성하는 landmark 영역입니다. 관련 역할: search.

폼에는 호스트 언어 폼 컨트롤, 스크립트 기반 제어, 하이퍼링크 등이 혼합될 수 있습니다. 저자는 가능한 경우 반드시 네이티브 호스트 언어 시맨틱을 활용해 폼 컨트롤을 생성해야 합니다. 폼의 목적이 검색 조건 제출이라면, 저자는 일반 form 대신 search 역할을 권장합니다(SHOULD).

저자는 반드시(MUST) form 역할의 각 요소에 해당 폼의 목적을 설명하는 짧은 레이블을 제공해야 합니다. 눈에 보이는 레이블이 있는 경우 aria-labelledby로 이를 참조하는 것이 권장됩니다(SHOULD). 레이블은 가능하다면 heading(제목) 안에 포함하는 것이 권장됩니다(SHOULD). heading은 표준 호스트 언어 heading 요소나 heading 역할 요소가 될 수 있습니다(MAY).

저자가 사용자의 특정 행동(예: 값 변경)에 의해 표준 onsubmit 이벤트가 발생하지 않음에도 스크립트로 폼을 submit하도록 한다면, 사전 안내를 해주는 것이 권장됩니다(SHOULD).

보조기술은 사용자가 form 역할 요소로 신속하게 이동할 수 있게 권장합니다(SHOULD). User agentsform 역할 및 접근 가능한 이름이 있는 요소를 내비게이션 랜드마크로 처리하는 것이 권장됩니다(SHOULD). User agents는 사용자가 form 역할 요소로 신속 이동할 수 있는 기능을 제공할 수 있습니다(MAY).

특성:
특성
상위 역할: landmark
기본 개념: <form> in HTML
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

generic role

그 자체로 의미를 가지지 않는, 이름 없는 컨테이너 element입니다.

generic 역할은 주로 호스트 언어(예: HTML div, span)의 암묵적 역할로, 주로 user agent 구현자가 사용하기 위한 것입니다. 저자(콘텐츠 작성자)는 이 역할을 콘텐츠에 사용해서는 안 됩니다(SHOULD NOT). 저자는 암묵적 접근성 시맨틱을 제거할 때 presentation 또는 none을, 이름 있는 컨테이너로 의미적 그룹화를 원할 때는 group 역할을 사용할 수 있습니다(MAY).

presentation 역할과 유사하게, generic 역할 요소도 aria-live 속성과 같이, 자식에 일부 접근성 속성을 제공할 수 있습니다.

그러나 presentation 역할 요소와 달리, user agent는 허용된 접근성 속성이 명시된 경우 generic 요소를 접근성 API에 노출합니다. 허용 속성이 지정되지 않은 경우, user agent는 generic 요소를 무시할 수 있습니다(MAY).

특성:
특성
상위 역할: structure
연관 개념:
상속된 상태 및 속성:
사용 금지 상태 및 속성:
이름 출처: prohibited

grid role

방향키 등 양방향 탐색 수단을 사용하여 그리드 내 일부 또는 모든 셀에 포커스를 둘 수 있는 하나 이상의 행과 한 개 이상의 셀 모음을 포함하는 복합 widget입니다.

grid 역할은 특정 시각적(예: 표 형태) 표현을 의미하지 않습니다. 이는 관계를 설명합니다. 단순히 체크박스 모음이나 내비게이션 링크 묶음에서부터, 복잡한 스프레드시트 응용 프로그램 구성에 이르기까지 다양하게 활용할 수 있습니다.

grid의 셀 요소는 gridcell 역할을 가집니다. 저자는 선택적으로(MAY) 셀을 행 또는 열 헤더로 지정할 때는 rowheader 또는 columnheader role을 쓸 수 있습니다. 저자는 반드시(MUST) gridcell, columnheader, rowheader 역할 요소가 row 역할 요소의 접근성 자식이 되도록 하고, 이 rowrowgroup 또는 grid 역할의 접근성 자식이 되도록 해야 합니다.

키보드 접근성을 위해, 저자는 포커스 관리 설명대로 grid의 후손 포커스를 관리하는 것이 권장됩니다(SHOULD). 사용자가 grid를 키보드로 탐색할 때 포커스는 다음과 같이 두는 것이 권장됩니다(SHOULD):

  • gridcell에 포커스 받을 때 방향키를 소모하지 않는 인터랙티브 widget 하나(예: checkbox, button, link)만 있으면, 저자는 선택적으로(MAY) 그 안의 인터랙티브 요소에 포커스를 둘 수 있습니다. 이렇게 하면 내장 위젯을 직접 조작할 수 있습니다.
  • 그 외에는 포커스를 받는 요소가 gridcell, rowheader, columnheader가 되도록 권장합니다(SHOULD).

저자는 권장합니다(SHOULD) 포커스가 가능한 셀에 다음 중 하나 이상이 포함되어 있다면 내용 내 탐색 또는 상호작용을 할 수 있도록 모드 변경 수단을 제공해야 합니다:

  • 방향키로 조작이 필요한 위젯, 예: comboboxradiogroup
  • 여러 인터랙티브 요소
  • 편집 가능한 콘텐츠

예시로, 스프레드시트 셀에 combobox나 편집 가능한 텍스트가 있다면 포커스 시 Enter 키로 셀 상호작용 또는 편집 모드를 활성화시키고, 이렇게 되면 방향키로 해당 comboboxtextbox를 조작할 수 있습니다. 다시 Enter, Tab, Escape 또는 다른 키를 누르면 그리드 탐색 모드로 돌아갈 수도 있습니다.

저자는 선택적으로(MAY) gridcell에 수식 결과를 표시할 수 있으며 이 값은 사용자가 편집할 수도 있습니다. 예를 들어 스프레드시트 앱에서 gridcell은 계산된 값을 표시하다가 사용자가 편집 모드를 활성화하면 textbox가 나타나 입력할 수 있습니다.

aria-readonlygrid 역할 요소에 지정되면, user agents는 반드시 해당 gridgridcell 접근성 자식 전체에 해당 값을 전달하고, 접근성 API에 노출해야 합니다. 개별 gridcell에서는 이 값을 개별적으로 덮어쓸 수 있습니다(MAY).

셀 편집 기능이 있는 grid에서, 포커스 가능한 gridcell의 내용이 편집 불가라면 해당 셀에 aria-readonlytrue로 지정할 수 있습니다(MAY). 단, grid 또는 셀에 지정된 aria-readonly의 값은 셀 내용 편집 가능 여부만 나타내며, 그리드 자체의 탐색/조작 가능 여부는 의미하지 않습니다.

aria-readonly가 지정되지 않았다고 해서 gridgridcell 내용이 편집 가능함을 의미하지는 않습니다. 예를 들어, grid가 수정 불가한 요소 모음(예: 날짜를 나타내는 link 등)일 경우 저자는 aria-readonly 값을 명시할 필요가 없습니다.

저자는 선택적으로(MAY) 포커스 가능한 gridcell이 어떤 작업의 대상(선택 가능)임을 aria-selected 속성으로 나타낼 수 있습니다. 만약 grid가 여러 gridcell 동시 선택을 지원한다면, 저자는 grid 역할 요소에 aria-multiselectabletrue로 두는 것이 권장됩니다(SHOULD).

WAI-ARIA는 호스트 언어 요소를 확장할 수 있으므로 gridHTML table 같이 네이티브 테이블 요소와 속성을 재사용할 수 있습니다. 저자가 grid 역할을 HTML table에 적용할 때, 후손 tr, td에는 추가로 rowgridcell 역할을 적용할 필요가 없습니다. user agent가 자동으로 적절히 변환합니다. 네이티브 테이블을 재사용하면서 특정 gridcell이 여러 행 또는 열에 걸쳐야 할 경우, 저자는 WAI-ARIAaria-rowspan 또는 aria-colspan 속성 대신 호스트 언어 속성을 활용하는 것이 권장됩니다(SHOULD).

그리드 디자인 패턴 구현에 대한 자세한 내용은 WAI-ARIA Authoring Practices를 참고하세요.

특성:
특성
상위 역할:
하위 역할:
기본 개념: <table> in HTML
허용된 접근성 자식 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

gridcell role

grid 또는 treegridcell입니다.

gridcell은 포커스 가능, 편집 가능, 선택 가능할 수 있습니다. 또한 관계(예: aria-controls)를 사용해 기능적 관계를 표현할 수 있습니다.

gridcell에 행/열 헤더나 둘 다 지정하려고 할 때, 해당 헤더를 DOM 구조로 파악할 수 없다면, 저자는 권장합니다(SHOULD) gridcellaria-describedby를 지정해 관련 role rowheader 또는 columnheader 요소를 참조해야 합니다.

treegrid에서는, 저자는 선택적으로(MAY) aria-expanded 속성을 사용해 gridcell을 확장 가능 셀로 정의할 수 있습니다. aria-expanded 속성이 제공된 경우 해당 셀에만 적용되며, 행 컨테이너 전체를 대변하지 않습니다. 이 속성은 피벗 테이블 등의 동작에 주로 사용됩니다.

저자는 반드시(MUST) elementrole gridcell을 부여할 때, 해당 요소가 반드시 row 역할 요소의 접근성 자식이 되도록 해야 합니다.

특성:
특성
상위 역할:
하위 역할:
기본 개념: <td> in HTML
필수 접근성 부모 역할: row
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

group role

보조 기술에 의해 페이지 요약 또는 목차에 포함되지 않아야 할 UI objects의 집합입니다.

region은, 페이지 요약이나 목차에 포함될 UI 객체 집합이라는 점에서 대조됩니다.

저자는 권장합니다(SHOULD) groupwidget 내 논리적 아이템 묶음(예: 트리 위젯 하위 요소들을 동일 계층의 형제 집합으로 묶음)으로 사용해야 합니다. 하지만 grouplistbox 맥락에서 사용될 때는 저자가 반드시(MUST) 자식 요소를 option 요소로 제한해야 합니다. 즉 group의 처리 방법은 제공 맥락에 따라 저자와 보조 기술이 다르게 해석해야 합니다.

저자는 선택적으로(MAY) group 요소를 중첩할 수 있습니다. 만약 특정 구간이 웹 페이지 목차에 포함될 만큼 중요하다면 저자는 roleregion 또는 표준 랜드마크 역할로 지정하는 것이 권장됩니다(SHOULD).

특성:
특성
상위 역할: section
하위 역할:
연관 개념:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

heading role

페이지 구간의 제목(heading)입니다.

heading 역할 요소가 논리적 계층 구조로 구성되도록, 저자는 반드시(MUST) aria-level 속성으로 적절한 계층을 나타내야 합니다.

특성:
특성
상위 역할: sectionhead
연관 개념:
필수 상태 및 속성: aria-level
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True

image role

이미지를 구성하는 요소 모음의 컨테이너입니다. 동의어: img를 참고하세요.

참고
ARIA 1.3 image 역할 관련 참고사항.

image는 ARIA 1.3에서 ARIA 1.0의 img 역할의 동의어로 추가되었습니다. image 역할은 다른 역할들의 이름(완전한 단어 또는 단어 결합 형태)과의 문법적 일관성을 높입니다.

img role

이미지를 구성하는 요소 모음의 컨테이너입니다. 동의어: image를 참고하세요.

img는 캡션, 설명 텍스트, 여러 이미지 파일을 포함할 수 있으며, 이들이 함께 나타날 때 하나의 이미지로 인식됩니다. img는 그 구성이 도형 object의 모음이든 아니든 문서 내의 하나의 그래픽을 나타냅니다. img 역할의 요소가 지각 가능하려면, 저자는 반드시(MUST) 그 요소에 접근 가능한 이름을 제공해야 합니다. 이는 aria-label 또는 aria-labelledby 속성으로 지정할 수 있습니다.

특성:
특성
상위 역할: section
관련 개념:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
자식 presentational: True

input role

사용자 입력을 허용하는 일반적인 위젯 유형입니다.

input은 온톨로지에서 사용되는 추상 역할입니다. 저자는 절대(MUST NOT) input 역할을 실제 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할: True
상위 역할: widget
하위 역할:
지원 상태 및 속성: aria-disabled
상속된 상태 및 속성:

insertion role

insertion에는 추가된 것으로 표시되거나, 추가가 제안된 콘텐츠가 포함됩니다. 관련 역할: deletion를 참고하세요.

insertion은 주로 두 콘텐츠 버전 간의 차이점을 표시하거나, 여러 사람이 콘텐츠를 수정할 때 추가 제안 내용을 표시하는 데 사용됩니다.

특성:
특성
상위 역할: section
관련 개념:
상속된 상태 및 속성:
사용 금지 상태 및 속성:
이름 출처: prohibited

landmark role

특정 목적에 관련된 콘텐츠를 포함하고 저자가 지정한 만큼 sufficiently important해서 사용자가 해당 영역으로 쉽게 이동할 수 있기를 기대하며, 페이지 요약에도 포함될 수 있는 가시적 section입니다. 이러한 페이지 요약은 user agent 또는 보조기술에 의해 동적으로 생성될 수 있습니다.

landmark는 온톨로지에서 사용하는 추상 역할입니다. 저자는 절대(MUST NOT) landmark 역할을 실제 콘텐츠에 사용해서는 안 됩니다.

저자는 콘텐츠의 목적을 landmark 역할의 서브클래스 역할을 할당하고, 필요하다면 간단하고 설명적인 레이블을 제공하여 지정합니다.

landmark 역할의 서브클래스 역할이 부여된 요소는 landmark 영역 또는 내비게이션 landmark 영역이라 부릅니다.

보조기술은 landmark 영역으로 빠르게 이동할 수 있도록 권장합니다(SHOULD). user agents는 landmark 영역으로 신속 이동을 제공할 수 있습니다(MAY).

특성:
특성
추상 역할: True
상위 역할: section
하위 역할:
상속된 상태 및 속성:

list role

section 내에 listitem 요소들을 포함하는 구역입니다. 관련 역할: listbox 참고.

list에는 자식 요소의 rolelistitem인 요소가 포함됩니다.

특성:
특성
상위 역할: section
하위 역할:
기본 개념:
  • <ol> in HTML
  • <ul> in HTML
허용된 접근성 자식 역할: listitem
상속된 상태 및 속성:
이름 출처: author

listbox role

사용자가 여러 항목 중 하나 이상을 선택할 수 있는 위젯입니다. 관련 역할: comboboxlist.

리스트 내 항목은 정적이며, 표준 HTML select element와 달리 이미지도 포함할 수 있습니다. listbox는 자식 요소의 roleoption 또는 group이며, group 내부 자식의 roleoption이여야 합니다.

키보드 접근성을 위해, 저자는 포커스 관리 섹션에서 설명한 대로 모든 option 하위 요소의 포커스를 적절히 관리하는 것이 권장됩니다(SHOULD).

listbox 역할 요소는 명시적으로 aria-orientation 값을 지정하지 않아도 기본값이 vertical입니다.

특성:
특성
상위 역할:
관련 개념:
허용된 접근성 자식 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
역할의 암시적 값: aria-orientation의 기본값은 vertical입니다.

listitem role

list 또는 directory의 한 항목입니다.

저자는 반드시(MUST) elementrolelistitem일 때 반드시 해당 요소가 elementrolelist인 요소의 접근성 자식이 되도록 해야 합니다.

특성:
특성
상위 역할: section
하위 역할:
기본 개념: <li> in HTML
필수 접근성 부모 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

log role

live region의 한 유형으로, 새로운 정보는 의미 있는 순서로 추가되고, 이전 정보는 사라질 수 있습니다. 관련 역할: marquee 참고.

예시로는 채팅 로그, 메시지 기록, 게임 로그, 에러 로그 등이 있습니다. 다른 live region에 비해, 이 role에서는 로그에 새 항목이 도착한 순서와 읽기 순서 간의 관계가 있습니다. log는 의미 있는 순서를 가지며, 새로운 정보는 항상 log 끝에만 추가되고 임의 위치에 추가되지 않습니다.

log 역할 요소는 명시적으로 지정하지 않아도 aria-live 값이 polite입니다.

특성:
특성
상위 역할: section
상속된 상태 및 속성:
이름 출처: author
역할의 암시적 값: aria-live의 기본값은 polite입니다.

main role

문서의 주요 콘텐츠를 포함하는 landmark입니다.

이 영역은 문서의 중심 주제와 직접적으로 관련되어 있거나 이를 확장 설명하는 콘텐츠를 나타냅니다. main role은 “주요 콘텐츠로 건너뛰기” 링크(혹은 기타 landmarks로 이동) 기능에 대한 좀 더 자연스러운 대안으로, 보조기기, user agent, 브라우저 확장 기능 등이 사이드패널, 다이얼로그 같은 UI 기능이나 키보드 단축키로 주요 콘텐츠로 바로가기 옵션을 제공할 때 활용할 수 있습니다.

보조기기권장합니다(SHOULD) 사용자가 main 역할 요소로 빠르게 이동할 수 있도록 해야 합니다. user agents 역시 main 역할 요소를 내비게이션 landmark로 취급하는 것이 권장됩니다(SHOULD). user agents는 사용자가 main 역할 요소로 빠르게 이동할 수 있는 기능을 제공할 수 있습니다(MAY).

저자는 한 페이지 내에 main role이 지정된 element를 최대 한 개까지만 두는 것이 권장됩니다(SHOULD).

참고

DOM에서 documentapplication 요소는 중첩될 수 있으므로, (예: document 안에 document), 또는 aria-owns 속성으로 각기 다른 문서 노드에 연결되는 경우라면 여러 개의 main 요소가 DOM 후손으로 존재할 수 있습니다.

특성:
특성
상위 역할: landmark
관련 개념:
상속된 상태 및 속성:
이름 출처: author

mark role

포함 컨텍스트에서 중요성이 높아 참조 또는 주석 용도로 표시·강조된 콘텐츠입니다.

mark의 예시 활용:

  • 원본에는 강조 표시가 없으나 인용문에서 특별히 주목할 부분을 강조(출력물에서 형광펜으로 구절을 칠하는 것과 유사)
  • 사용자의 현재 활동과 관련된 부분을 나타내기, 예를 들어 검색 기능에서 찾아낸 텍스트 일치 항목 강조

저자는 지양해야 합니다(SHOULD NOT) 순수 장식 목적(예: 구문 강조)의 스타일링에 mark를 사용하지 않도록 해야 합니다.

특성:
특성
상위 역할: section
관련 개념:
상속된 상태 및 속성:
사용 금지 속성:
이름 출처: prohibited

marquee role

필수적이지 않은 정보가 자주 바뀌는 live region 유형입니다. 관련 역할: log 참고.

marquee의 일반적인 사용 예로 주식 시세 표시기, 광고 배너 등이 있습니다. marqueelog의 주요 차이점은, log는 일반적으로 의미 있는 순서 또는 중요한 콘텐츠 변경의 순차성을 갖는다는 점입니다.

marquee 역할 요소는 명시적으로 지정하지 않아도 aria-live 값이 off입니다.

특성:
특성
상위 역할: section
상속된 상태 및 속성:
이름 출처: author

math role

수학식(수학적 표현식)을 나타내는 콘텐츠입니다.

math 역할의 콘텐츠는 MathML [MathML3]와 같은 접근 가능한 포맷, 또는 브라우저 네이티브 구현이나 polyfill 라이브러리를 통한 변환이 가능한 TeX, LaTeX 등 다른 텍스트 기반 표현으로 마크업해야 합니다.

수학식을 이미지로 표현하는 것은 이상적이지 않으나, 과거 레거시 콘텐츠에는 이미지로 수학식을 표현한 경우가 많습니다. 저자는 권장합니다(SHOULD) 이미지로 표현된 수식에도 해당 수식을 음성으로 읽을 때와 같이 설명하는 텍스트 대체 레이블을 부여해야 합니다.

참고

브라우저가 MathML을 네이티브로 지원할 경우, 단순 텍스트 근사치로는 구현할 수 없는 더욱 강력하고 접근 가능한 수식 경험을 제공합니다. 일부 렌더링 엔진은 스크린리더와 긴밀히 연동되어 수식의 공간적 터치 탐색이나 Nemeth 점자 형식의 점자 디스플레이 출력도 가능합니다. 저자가 텍스트 근사치를 제공하더라도 수식 이미지만으로는 이러한 통합을 지원할 수 없습니다.

작성 시점 기준, 일부 주요 브라우저는 MathML을 기본 지원하지 않으므로 JavaScript polyfill 라이브러리로 보완해야 할 수 있습니다. 수학 콘텐츠는 네이티브 MathML을 우선 사용하고 꼼꼼히 테스트하세요. 불가피할 경우 polyfill 라이브러리나 텍스트 대체 설명이 포함된 이미지 폴백을 제공합니다.

MathML 예제 - TeX 주석 내장

<!-- Note: MathML 미지원 UA에서 렌더링되도록 JavaScript polyfill 라이브러리를 사용하세요. -->
<!-- math 요소에는 role="math"가 암묵적으로 지정됨. -->
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mrow>
    <mi>x</mi>
    <mo>=</mo>
    <mfrac>
      <mrow>
        <mo form="prefix"></mo>
        <mi>b</mi>
        <mo>±</mo>
        <msqrt>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo></mo>
          <mn>4</mn>
          <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
          <mi>a</mi>
          <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
          <mi>c</mi>
        </msqrt>
      </mrow>
      <mrow>
        <mn>2</mn>
        <mo>&#x2062;<!-- &InvisibleTimes; --></mo>
        <mi>a</mi>
      </mrow>
    </mfrac>
  </mrow>
  <annotation encoding="TeX">
    x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
  </annotation>
</math>

일반 HTML 또는 Polyfill DOM에서의 MathML 이차방정식 결과

랜더링 엔진에서 MathML과 같은 네이티브 수학 포맷을 지원하지 않을 경우, 저자는 선택적으로(MAY) JavaScript 등을 활용해 다음과 같은 HTML 이미지(데이터 URI 활용)와 일반 텍스트 대체 콘텐츠로 다운그레이드할 수 있습니다.

<img role="math" src="..." alt="x=⟮−b±√⟮b²−4ac⟯⟯÷2a">
특성:
특성
상위 역할: section
상속된 상태 및 속성:
이름 출처: author

meter 역할

알려진 범위 내에서의 스칼라 측정값 또는 분수 값을 나타내는 요소입니다. 관련 progressbar를 참고하세요.

작성자는 선택적으로 aria-valueminaria-valuemax를 설정하여 meter의 최소값과 최대값을 지정할 수 있습니다. 그렇지 않으면, 암시적 값은 <input type="range"> 의 규칙을 따릅니다:

  • aria-valuemin이 없거나 숫자가 아닌 경우 기본값은 0(영)입니다.
  • aria-valuemax이 없거나 숫자가 아닌 경우 기본값은 100입니다.

aria-valuenow의 값은 반드시 계산된 aria-valueminaria-valuemax 값을 벗어나면 안 됩니다.

작성자는 진행상황 표시meter 역할을 사용하지 않는 것이 좋으며, 해당 용도로 progressbar 역할이 존재합니다.

참고

현재, WAI-ARIA 속성 중 low, optimum, 및 high (HTML<meter> 요소에 있는 속성)과 일치하는 것이 없습니다. 이러한 속성의 추가는 ARIA 1.3 버전에서 고려될 예정입니다.

특성:
특성
상위 역할(Superclass Role): range
연관 개념:
필수 상태 및 속성: aria-valuenow
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요 여부: True
자식 요소 표현 여부: True
이 역할의 암시적 값: aria-valuemin의 기본값은 0입니다.
aria-valuemax의 기본값은 100입니다.

none 역할

암시적인 네이티브 역할 의미가 접근성 API에 매핑되지 않는 요소입니다. 동의어로 presentation가 있습니다.

참고
ARIA 1.1의 none 역할 관련 참고사항.

ARIA 1.1에서 워킹 그룹은 nonepresentation 역할의 동의어로 도입하였습니다. 이는 "presentation" 또는 "presentational" 용어의 본래 의미에 혼동이 많았기 때문입니다. 많은 사람이 role="presentation"aria-hidden="true"와 동의어라고 잘못 생각하였으며, role="none"이 실제 의미를 더 명확하게 전달한다고 판단하였습니다.

페이지의 외형을 바꾸기 위해 사용되지만 요소 타입이 내포하는 기능, 상호작용, 구조적 의미를 모두 갖지 않거나, WAI-ARIA를 지원하지 않는 구형 브라우저에서 접근성 대안을 제공하려는 용도로 사용됩니다.

예시 사용 사례:

  • 컨텐츠가 전적으로 표현용인 요소(예: 공백 이미지, 장식 그래픽, 레이아웃용 div 등)
  • img role 컨테이너에 포함된 이미지로서, 전체 텍스트 대체가 aria-labelledbyaria-describedby로 제공된 경우
  • 추가 마크업 "hook"(예: CSS용)
  • 레이아웃 테이블 및 관련 행, 셀 등

none/presentation 역할을 가진, 포커스 불가능한 요소에 대해서는, 유저 에이전트가 해당 요소의 암시적인 네이티브 시맨틱(역할, 상태, 속성 등)을 접근성 API에 노출해서는 안 됩니다. 그러나 해당 요소 내에 명시적 또는 상속된 역할이 없는 후손 요소와 그 컨텐츠는 반드시 노출해야 합니다. 즉, none/presentation 역할은 해당 요소를 접근성 트리에서 없앱니다(또는 역할을 제거함) 하지만, 포함된 컨텐츠는 보존합니다.

예를 들어, 아래 두 마크업은 접근성 API에서 거의 동일하게 노출됩니다.

<!-- 1. role="none"은 암시적으로 부여된 'heading' 역할 의미를 제거하나, 내용(중첩된 하이퍼링크 포함)에는 영향을 주지 않습니다. -->
<h1 role="none"> Sample Content <a href="...">let's go!</a> </h1>

<!-- 2. span은 암시적인 'generic' 역할만 갖고 접근성 관련 속성이 없으므로, 하이퍼링크 등 내용만 노출됩니다. -->
<span> Sample Content <a href="...">let's go!</a> </span>

HTML에서 <img> 요소는 이미지 파일 유형과 관계 없이 단일 엔터티로 취급됩니다. 따라서 role="none" 또는 role="presentation"HTML img에 적용하면 aria-hidden="true"와 동일합니다. 이미지 내용을 접근 가능하게 하려면 <object><iframe> 요소로 임베드하거나, 인라인 SVG 코드를 사용하고 해당 콘텐츠를 위한 접근성 지침을 따라야 합니다.

작성자는 이미지에 none/presentation 역할을 적용할 때, 의미 있는 텍스트 대체(예: HTML에서 alt="")를 제공하지 않아야 합니다.

아래 예시에서, 감싸는 img 요소는 캡션 문장으로 적절히 라벨링됩니다. 이런 경우 img 요소에 none/presentation 역할을 지정할 수 있습니다. 역할과 텍스트 대체가 컨테이너에서 제공되므로, 이미지 자체에는 별도 의미가 없이 표현만 합니다.

<div role="img" aria-labelledby="caption">
  <img src="example.png" role="none" alt="">
  <p id="caption">A visible text caption labeling the image.</p>
</div>

아래 샘플은 앵커(HTML a 요소)가 treeitem 역할을 하게 하기 위해, 리스트 항목(HTML li 요소)에 none/presentation를 명시적으로 지정하여 사용자 에이전트의 내장 시맨틱을 덮어쓰는 방법을 보여줍니다.

<ul role="tree">
  <li role="none">
	<a role="treeitem" aria-expanded="true">An expanded tree node</a>
  </li></ul>
표현 역할 상속

none/presentation 역할은 암시적인 네이티브 시맨틱(즉, 기본 접근성 API 역할이 명확한 요소)에 부여됩니다. 일부 요소는 후손 요소가 있어야만 의미가 완성됩니다. 예를 들어, HTML에서 table 역할 요소에는 tr(암시적으로 row role 보유)이 필요하고, trth 또는 td 자식(columnheader, rowheader, cell 역할 보유)이 필요합니다. 리스트도 리스트 항목 자식이 필요합니다.WAI-ARIA에서 이런 후손을 허용된 접근성 자식 역할(Allowed Accessibility Child Roles)이라 정의합니다.

암시적 또는 상속된 역할이 none/presentation인데, 해당 요소가 WAI-ARIA 역할 중 허용된 접근성 자식 역할을 요구한다면, 명시적인 역할이 지정되지 않은 후손 접근성 하위에 대해 유저 에이전트는 none 역할을 상속 적용해야 합니다. 또, 호스트 언어에서 자식 요소를 명확히 규정하는 경우, 명시적 역할이 없는 자식에도 none을 상속 적용해야 합니다.

명시적 또는 상속된 none/presentation 역할이며 포커스가 불가능한 요소에는, 유저 에이전트가 해당 요소에 대한 WAI-ARIA 상태 및 속성 처리(예: ul이나 olnone/presentation 지정 시 li의 내장 시맨틱 삭제)를 무시해야 합니다. HTMLtable 요소의 thead, tbody, tfoot, tr, th, td 등도 자동으로 시맨틱이 제거됩니다.

참고

WAI-ARIA 허용된 접근성 자식 역할과 일치하는 요소의 암시적 네이티브 시맨틱만 제거됩니다. 다른 컨텐츠(중첩된 테이블, 리스트 등)는 none/presentation이 명시적으로 지정되지 않으면 그대로 유지됩니다.

접근성 API에서, 아래 마크업 예제들은 거의 동일하거나 매우 유사한 역할 시맨틱(일반적 역할 또는 무 역할)과 컨텐츠를 같습니다.

<!-- 1. [role="none"]은 암시적인 'list' 및 'listitem' 역할을 제거하나, 내용에는 영향을 주지 않습니다. -->
<ul role="none">
  <li> Sample Content </li>
  <li> More Sample Content </li>
</ul>

<!-- 2. "foo"에 대한 암시적 역할이 없으므로 내용만 노출됩니다. -->
<foo>
  <foo> Sample Content </foo>
  <foo> More Sample Content </foo>
</foo>
참고

실제 환경에서 none/presentation 상속이 빈번히 적용되는 테이블과 리스트 외에도, (feed, listbox 등) 허용 자식이 특정된 다른 WAI-ARIA 역할이 존재합니다.

명시적/상속된 none/presentation 역할을 지정하면, 유저 에이전트는 해당 요소에 대한 호스트 언어 기반 라벨링 요소에도 상속된 none 역할을 적용해야 합니다. 예를 들어, table에 이 역할이 적용되면 caption의 시맨틱도 제거됩니다.

편집자 주

none/presentation 역할 충돌 해소에 관한 정보는 작성 오류 처리로 이동하였습니다.

특성:
특성
상위 역할(Superclass Role): structure
상속된 상태 및 속성:
금지되는 상태 및 속성:
이름 출처: prohibited

note role

section의 하위 내용으로, 주요 내용을 보충하는 추가 정보나 괄호 속 맥락을 나타냅니다.

note는 페이지나 문서 작성자가 제공하는 컨텐츠이며, 반응이나 제안을 제공하는 용도로 사용되어선 안 됩니다. 이런 목적이라면 commentsuggestion를 참고하세요.

페이지의 일반적인 내용 흐름 중에 사용될 때, note는 보충하는 내용과 암묵적으로 연결됩니다. 아래 예시는 페이지 읽기 순서에서 추가 정보를 알리기 위해 note를 사용하는 방법을 보여줍니다:

<p>... 다음 결과는 테스트한 기능에 대한 지원 내역을 요약합니다.</p>
<div role="note">
  <p>이 페이지가 게시된 시점에는 모든 결과가 정확함을 참고하세요.</p>
  <p>결과에 차이점이 있다면 알려주세요!</p>
</div>
<p>...</p>

note 역할이 있는 요소가 보충하는 내용과 프로그래밍적으로 연관될 필요가 있다면, 작성자는 다음 방법 중 하나를 사용해 요소를 연관시킬 수 있습니다:

  • note에 구조적 또는 인터랙티브한 내용(예: 링크, 버튼, 목록, 테이블 등)이 포함된 경우 aria-details를 사용하세요.
  • note가 짧고 정적인 텍스트만으로 구성된 경우 aria-describedby를 사용하세요.
 <!-- 링크가 포함된 note를 aria-details로 참조 -->
 ...
<button aria-details="info-note">시작하기</button>
...
<div role="note" id="info-note">
  <p>시작 전에 더 자세한 정보가 필요하신가요?</p>
  <p>필요한 모든 정보를 확인하려면 <a href="...">제품 설명 페이지</a>를 방문하세요.</p>
</div>
특성:
특성
상위 역할(Superclass Role): section
상속 상태 및 속성:
이름 출처: author

option role

listbox 내의 항목입니다.

작성자는 반드시 요소roleoption을 가질 때 접근성 자식으로 role listbox 혹은 role group (이때 반드시 접근성 자식으로 role listbox여야 함)의 요소 내에 있어야 합니다. listbox에 연결되지 않은 option은 접근성 API에 올바르게 매핑되지 않을 수 있습니다.

특정 조건에서는 사용자 에이전트가 listbox 내 각 option에 대한 aria-selected의 기본값을 제공할 수도 있으며, 그렇게 하는 경우 다음 기준이 충족되어야 합니다:

만약 사용자 에이전트가 option에 대한 aria-selected 값을 암시적으로 제공한다면, optionDOM 포커스를 갖거나 listboxDOM 포커스를 가지고 optionaria-activedescendant로 참조된다면 값은 true 여야 합니다. 그 외의 경우는 false 여야 합니다.

작성자는 권장되기로 option 요소의 선택 상태를 다음 중 하나로 명확히 표시해야 합니다:

  • 단일 선택 listbox에서 선택된 option에는 aria-selectedtrue로, 선택되지 않은 옵션에는 false를 선택적으로 적용.
  • 다중 선택 listbox 내부의 모든 옵션에 aria-selected 또는 aria-checked를 사용하여, 선택된 옵션은 true로, 선택되지 않은 옵션은 false로 설정.

작성자는 동일 listbox 내 포함된 optionaria-selectedaria-checked를 모두 지정해서는 안 되며, 단, 다음 모든 조건을 동시에 만족하는 극히 드문 경우만 예외입니다:

  • aria-selected의 의미와 목적이 aria-checked와 UI상 다를 것.
  • 사용자 인터페이스 상에서 각 상태의 의미와 목적이 명확히 구분될 것.
  • 각 상태를 별도로 제어할 수 있는 방법이 제공될 것.
특성:
특성
상위 역할(Superclass Role): input
하위 역할(Subclass Roles):
기본 개념(Base Concept): <option> : HTML에서 사용
연관 개념:
필수 접근성 부모 역할:
지원되는 상태 및 속성:
상속 상태 및 속성:
이름 출처:
  • 내용(contents)
  • 작성자(author)
접근 가능한 이름 필요 여부: True
자식 요소 표현 여부: True

paragraph role

콘텐츠의 단락입니다.

특성:
특성
상위 역할(Superclass Role): section
연관 개념:
상속 상태 및 속성:
금지되는 상태 및 속성:
이름 출처: prohibited

presentation role

요소로, 암시적 네이티브 역할 의미가 접근성 API에 매핑되지 않습니다. 동의어로 none이 있습니다.

참고
ARIA 1.1 none 역할에 대한 참고.

ARIA 1.1에서 워킹 그룹은, "presentation" 또는 "presentational"의 의도된 의미를 저자가 혼동하는 경우가 많았기 때문에 presentation 역할의 우선적 동의어로 none을 도입하였습니다. 많은 사람들은 role="presentation"aria-hidden="true"로 잘못 간주하는데, ARIA 워킹 그룹은 role="none"이 실제 의미를 보다 명확히 전달한다고 보고 있습니다.

progressbar role

오랜 시간이 소요되는 작업의 진행 상태를 표시하는 요소입니다.

progressbar는 사용자의 요청이 수신되었으며, 애플리케이션이 해당 작업을 완료하기 위해 진행 중임을 나타냅니다.

작성자는 선택적으로 aria-valueminaria-valuemax을 설정하여 진행 표시기의 최소값과 최대값을 지정할 수 있습니다. 그렇지 않은 경우 아래와 같이 HTML<input type="range"> 규칙을 따릅니다:

  • aria-valuemin이 없거나 숫자가 아닐 때, 기본값은 0(영)입니다.
  • aria-valuemax이 없거나 숫자가 아니면, 기본값은 100입니다.

작성자는 권장되기로 aria-valuenow을 제공해야 하며, 값이 불확정(indeterminate)이면 aria-valuenow 속성을 생략해야 합니다. 화면상 진행 표시가 갱신될 때마다 이 값을 권장되기로 함께 갱신해야 합니다. 만약 progressbar가 특정 영역의 로딩 진행도를 설명한다면, 작성자는 aria-describedby로 진행 상태를 참조하고, 해당 영역에 aria-busy 속성을 true로 설정하여 로딩이 끝날 때까지 유지해야 합니다. progressbar는 항상 읽기 전용이므로 사용자가 직접 값을 변경할 수 없습니다.

참고

보조 기술은 aria-valuetext가 지정되지 않은 한, aria-valuenow의 값을 aria-valueminaria-valuemax 사이의 퍼센트로 표시하는 것이 일반적입니다.

특성:
특성
상위 역할:
연관 개념:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요: True
자식 요소 표현 여부: True
이 역할의 기본 값: aria-valuemin의 기본값은 0입니다.
aria-valuemax의 기본값은 100입니다.

radio role

같은 역할을 가진 그룹 내에서 한 번에 하나만 선택(체크)할 수 있는 체크 가능한 입력 요소입니다.

작성자는 권장되기로 role이 radio요소들을 명확히 그룹화하여 어떤 것이 동일한 값을 제어하는지 식별해야 합니다. 이를 위해 radio 요소들을 radiogroup 역할을 가진 요소로 감쌉니다. radio 버튼들을 radiogroupDOM 자식으로 만들 수 없는 경우, 작성자는 radiogroup 요소에 aria-owns 속성을 사용하여 자식과의 관계를 나타내야 합니다.

특성:
특성
상위 역할:
연관 개념:
필수 상태 및 속성:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필요: True
자식 요소 표현 여부: True

radiogroup role

radio 버튼 그룹입니다.

radiogroup는 한 번에 단 하나만 체크될 수 있는 select 목록의 일종입니다. 작성자는 그룹 내에서 오직 하나의 라디오 버튼만 동시에 체크될 수 있도록 권장되기로 해야 합니다. 그룹의 한 항목이 선택되면, 이전에 체크되어 있던 항목의 aria-checked 속성false가 되며, 해당 항목은 선택 해제됩니다.

특성:
특성
상위 역할: select
연관 개념: list
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요: True

range role

값의 범위를 나타내는 요소입니다.

range추상 역할로 온톨로지에서만 사용됩니다. 작성자는 절대로 range 역할을 컨텐츠 안에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: structure
하위 역할:
지원 상태 및 속성:
상속된 상태 및 속성:

region role

특정 작성자가 지정한 목적에 관련된 콘텐츠를 포함하며, 사용자가 해당 섹션으로 쉽게 이동하거나 페이지 요약에서 목록으로 확인할 만큼 충분히 중요한 landmark입니다. 이러한 페이지 요약은 사용자 에이전트나 보조 기술에 의해 동적으로 생성될 수 있습니다.

작성자는 권장되기로, 랜드마크 역할main, complementary, navigation 등 다른 역할로 내용을 정확하게 설명할 수 없는 경우에만 region 역할을 섹션에 사용해야 합니다.

작성자는 반드시 각 region 역할 요소에 해당 영역의 목적을 설명하는 간략한 레이블을 제공해야 합니다. 작성자는 권장되기로, 만약 시각적으로 보이는 레이블이 있다면 aria-labelledby로 참조해야 하며, 가능하다면 레이블을 항상 heading 내부에 포함시키는 것이 좋습니다. 이 heading은 표준 호스트 언어의 heading 요소이거나, heading 역할을 가진 요소일 수도 있습니다.

보조 기술권장되기로 사용자가 region 역할이 지정된 요소로 신속하게 이동할 수 있도록 해야 합니다. 사용자 에이전트권장되기로 접근 가능한 이름이 있는 region 역할 요소를 내비게이션 랜드마크로 취급해야 하며, 사용자 에이전트선택적으로 region 역할 요소로 신속하게 이동할 수 있는 기능을 제공할 수도 있습니다.

특성:
특성
상위 역할: landmark
연관 개념:
상속 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요: True

roletype role

모든 다른 역할이 상속받는 기본 role입니다.

이 역할의 속성은 이 역할이 할당된 객체의 구조적, 기능적 목적을 설명합니다. 역할은 인스턴스를 이해하고 조작할 때 사용할 수 있는 개념입니다.

roletype는 온톨로지에서만 사용되는 추상 역할입니다. 작성자는 절대로 roletype 역할을 실제 콘텐츠에 사용하면 안 됩니다.

특성:
특성
추상 역할 여부: True
하위 역할:
지원 속성 및 상태:

row role

표 형태의 컨테이너에서 셀들의 행입니다.

행(row)은 cell 또는 gridcell 요소를 포함하므로, table, grid, treegrid 구조를 조직하는 역할을 합니다.

row 역할은 table, grid, treegrid에서 모두 사용될 수 있지만, aria-expanded, aria-posinset, aria-setsize, aria-level의 시맨틱은 상호작용 트리 그리드의 계층 구조에만 적용됩니다. 따라서, 작성자는 절대 table 또는 grid 하위의 row에는 aria-expanded, aria-posinset, aria-setsize, aria-level을 적용해서는 안 되며, 사용자 에이전트도 treegrid 하위가 아닌 이상 이 네 가지 속성 중 어느 것도 보조 기술에 노출해서는 안 됩니다.

작성자는 반드시 요소role row를 가질 때는 접근성 자식table, grid, rowgroup, treegrid 등의 역할 요소가 되어야 합니다.

참고: aria-disabled 사용

현재 aria-disabledrow에서 지원되지만, 향후 버전에서는 grid 또는 treegrid 컨텍스트가 아닌 row에서는 이를 금지할 예정입니다.

특성:
특성
상위 역할:
기본 개념: <tr> (HTML)
필수 접근성 부모 역할:
허용된 접근성 자식 역할:
지원 속성 및 상태:
상속 상태 및 속성:
이름 출처:
  • contents
  • author

rowgroup role

표 형태의 컨테이너에서 하나 이상의 row 요소를 포함하는 구조입니다.

rowgroup 역할은 자식 중 관계접근성 자식row 역할 요소와 관계를 형성합니다. 이는 HTMLtable 요소에서 thead, tfoot, tbody와 구조적으로 동등합니다.

작성자는 반드시 요소role rowgroup을 가질 경우 접근성 자식grid, table, treegrid 역할인 요소여야 합니다.

참고

rowgroup 역할은 HTML 내 역할 대칭성 지원을 위해 존재하는 부분도 있으며, 명시적으로 presentation 역할이 부여된 HTML table 요소에서 표현 상속 전파를 허용합니다.

참고

이 역할은 row group의 타입(예: theadtbody 구분 등)을 구별하지 않지만, WAI-ARIA 2.0 이슈로 제기되어 있습니다.

특성:
특성
상위 역할: structure
기본 개념: <tbody>, <tfoot><thead> (HTML)
필수 접근성 부모 역할:
허용된 접근성 자식 역할: row
상속 상태 및 속성:
이름 출처: author

rowheader role

행의 헤더 정보를 포함하는 셀입니다.

rowheader 역할은 셀을 table, grid, 또는 treegrid의 행 헤더로 식별하는 데 사용될 수 있습니다. rowheader는 자신과 해당 행의 모든 셀 사이에 관계를 설정합니다. 이는 HTML th 요소scope="row"를 지정한 것과 구조적으로 동등합니다.

작성자는 반드시 요소role rowheader를 가질 때, 해당 요소가 접근성 자식으로 row 역할의 요소 내에 있도록 해야 합니다.

aria-selected 상태를 rowheader에 적용하더라도 사용자 에이전트가 해당 행의 모든 셀에 aria-selected 상태를 자동으로 전파해서는 안 됩니다. 개별 애플리케이션에 따라 작성자가 이 방식으로 선택을 전파할 수도 있습니다.

rowheader 역할은 대화형 그리드와 비대화형 테이블 모두에서 사용될 수 있지만, aria-expanded, aria-readonly, aria-required는 대화형 요소에만 적용됩니다. 따라서 작성자는 table 하위의 rowheaderaria-expanded, aria-readonly, aria-required사용해서는 안 되며 사용자 에이전트는 rowheadergrid 또는 treegrid 하위가 아닌 경우 해당 속성들을 보조 기술에 노출해서는 안 됩니다.

참고: aria-disabled 사용

현재 aria-disabledrowheader에서 지원되지만, 추후 버전에서는 grid 또는 treegrid 컨텍스트가 아닌 rowheader에서는 사용할 수 없도록 변경될 예정입니다.

특성:
특성
상위 역할:
기본 개념: <th scope="row"> (HTML)
필수 접근성 부모 역할: row
지원 속성 및 상태:
상속 속성 및 상태:
이름 출처:
  • 내용
  • 작성자
접근 가능한 이름 필요 여부: True

scrollbar role

콘텐츠가 보기 영역에 완전히 표시되는지 여부와 무관하게, 보기 영역 내 콘텐츠의 스크롤을 제어하는 그래픽 객체입니다.

scrollbar는 스크롤바의 크기와 스크롤바 손잡이(thumb)의 위치를 통해 현재 값과 가능한 값의 범위를 해당 스크롤 방향(수평 또는 수직) 내에서 표시합니다. 오리엔테이션은 스크롤바 방향이자, 스크롤바가 제어하는 보기 영역에 미치는 스크롤 효과의 방향을 나타냅니다. 일반적으로 방향키(화살표키 등)를 사용해서 현재 값에 더하거나 뺄 수 있습니다.

작성자는 반드시 스크롤바 요소에 aria-controls 속성을 설정하여 제어하는 스크롤 가능 영역을 참조하도록 해야 합니다.

작성자는 선택적으로 aria-valueminaria-valuemax를 설정하여 손잡이의 최소/최대 위치를 지정할 수 있습니다. 그렇지 않으면, 암시적 값은 HTML의 <input type="range"> 규칙을 따릅니다:

  • aria-valuemin이 없거나 숫자가 아니면 기본값은 0(영)입니다.
  • aria-valuemax이 없거나 숫자가 아니면 기본값은 100입니다.

작성자는 반드시 현재 손잡이 위치를 나타내기 위해 aria-valuenow 속성을 설정해야 합니다. aria-valuenow가 없거나 잘못된 값이면, 브라우저는 선택적으로 상태 및 속성 작성 오류 처리 절에 규정된 수리기법(HTML <input type="range">의 것과 동등함)을 적용할 수 있습니다.

role이 scrollbar인 요소는 aria-orientation의 기본값이 vertical입니다.

참고

보조 기술은 aria-valuetext가 지정되지 않은 한, aria-valuenow의 값을 aria-valueminaria-valuemax 사이의 백분율로 표시하는 것이 일반적입니다. aria-valuemin, aria-valuemax, aria-valuenow 모두 이러한 백분율 계산에 적합하게 지정하는 것이 좋습니다.

특성:
특성
상위 역할:
필수 속성 및 상태:
지원 속성 및 상태:
상속 속성 및 상태:
이름 출처: 작성자
자식 표현 여부: True
암시적 값: aria-orientation의 기본값은 vertical입니다.
aria-valuemin의 기본값은 0입니다.
aria-valuemax의 기본값은 100입니다.

section role

페이지에서 렌더링 가능한 구조적 포함 단위입니다.

section은 온톨로지에서 사용되는 추상 역할입니다. 작성자는 절대로 section 역할을 실제 콘텐츠에 사용하면 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: structure
하위 역할:
상속 속성 및 상태:

sectionhead role

해당 section의 주제 또는 요약을 표시하는 구조입니다.

sectionhead는 온톨로지에서 사용되는 추상 역할입니다. 작성자는 절대로 sectionhead 역할을 실제 콘텐츠에서 사용하면 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: structure
하위 역할:
상속 속성 및 상태:

select role

사용자가 여러 선택지 중에서 선택할 수 있게 해주는 폼 위젯입니다.

select는 온톨로지에서 사용되는 추상 역할입니다. 작성자는 절대로 select 역할을 실제 콘텐츠에 사용하면 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할:
하위 역할:
지원 속성 및 상태: aria-orientation
상속 속성 및 상태:

separator role

콘텐츠의 구역 또는 메뉴 항목 그룹을 구분하고 차별화하는 구분선입니다.

separator에는 두 가지 유형이 있습니다: 단순히 화면상의 경계만 제공하는 비포커스 structure와 포커스 가능하며 이동도 가능한 인터랙티브 widget. separator가 포커스를 받을 수 없을 때는 보조 기술에 정적 구조 요소로 표시됩니다. 예를 들어, 정적 separator는 메뉴 안에서 두 메뉴 그룹을 시각적으로 구분하거나, 페이지 내 두 섹션을 구분하는 수평선(horizonal rule)로 사용될 수 있습니다.

작성자는 선택적으로 separator를 포커스 가능하게 만들어 두 섹션을 명확히 시각적으로 구분함과 동시에 사용자가 separator 위치를 조정해 각 구역의 상대적 크기를 변경할 수 있는 widget으로 만들 수 있습니다. 가변 separator 위젯은 값을 연속적으로 이동할 수 있지만, 고정 separator 위젯은 두 가지 상태만 가지며 일반적으로 한 구역을 확장/축소(toggle)하는 데 사용됩니다.

separator가 포커스를 받을 수 있는 경우, 작성자는 반드시 aria-valuenow 값을 현재 separator 위치에 맞는 숫자로 설정하고, 값이 변할 때마다 갱신해야 합니다. 또한 aria-valuemin이 0이 아니면 그 값, aria-valuemax가 100이 아니면 그 값을 명시 권장합니다. 누락되었거나 숫자가 아니면, 다음을 암시적 값으로 사용합니다:

  • aria-valuemin의 암시적 값: 0
  • aria-valuemax의 암시적 값: 100

둘 이상의 포커스 가능한 separator가 있는 경우, 작성자는 권장되기로 각각 접근성 이름을 제공해야 합니다.

role이 separator인 요소는 aria-orientation의 기본값이 horizontal입니다.

특성:
특성
상위 역할:
연관 개념:
필수 속성 및 상태: aria-valuenow (포커스 가능 시)
지원 속성 및 상태:
상속 속성 및 상태:
이름 출처: 작성자
자식 표현 여부: True
암시적 값: aria-orientation의 기본값은 horizontal.
aria-valuemin의 기본값은 0.
aria-valuemax의 기본값은 100.

slider role

사용자가 지정된 범위 내에서 값을 선택하는 입력 요소입니다.

슬라이더는 슬라이더의 크기와 손잡이(thumb)의 위치를 통해 현재 값과 가능한 값의 범위를 나타냅니다. 일반적으로 방향키(화살표 키 등)를 사용하여 현재 값에 더하거나 뺄 수 있습니다.

작성자는 선택적으로 aria-valueminaria-valuemax 속성을 설정할 수 있습니다. 그렇지 않으면, 암시적 값은 HTML<input type="range">와 동일한 규칙을 따릅니다:

  • aria-valuemin이 없거나 숫자가 아니면 기본값은 0(영)입니다.
  • aria-valuemax이 없거나 숫자가 아니면 기본값은 100입니다.

작성자는 반드시 aria-valuenow 속성을 설정해야 합니다. 만약 aria-valuenow가 없거나 예기치 않은 값이면, 브라우저는 선택적으로 상태 및 속성 오류 처리 절에 제시된 수리 기법을 적용할 수 있으며, 이는 HTML<input type="range">의 수리 기법과 동일합니다.

role이 slider인 요소는 aria-orientation의 암시적 값이 horizontal입니다.

특성:
특성
상위 역할:
필수 상태 및 속성:
지원 상태 및 속성:
상속 속성 및 상태:
이름 출처: author
접근 가능한 이름 필요: True
자식 표현 여부: True
역할의 암시적 값: aria-orientation의 기본값은 horizontal입니다.
aria-valuemin의 기본값은 0입니다.
aria-valuemax의 기본값은 100입니다.

spinbutton role

range 형태의 입력으로, 사용자가 불연속적인 선택지 중에서 값을 선택하도록 기대하는 컴포넌트입니다.

spinbutton은 일반적으로 증감 버튼을 눌러 허용된 값 집합 내에서 값을 단계적으로 바꿀 수 있도록 해줍니다. 일부 구현에서는 값이 표시되는 텍스트 필드에 직접 입력도 가능하지만, 주로 잘못된 값 입력을 막기 위한 제한이 적용됩니다.

비슷하게 보일 수 있는 select와 달리, spinbutton은 알려진 범위(특히 아주 큰 범위)를 다뤄야 할 때 적합합니다. 예를 들어, 1에서 1,000,000까지의 범위를 나타낼 경우, 동일 값을 나타내는 select widget보다 성능이 훨씬 뛰어납니다.

작성자는 선택적으로 spinbutton접근성 자식 요소를 추가할 수 있지만, 반드시 textbox와/또는 두 개의 buttons로 한정해야만 합니다. 혹은, spinbutton 역할을 텍스트 입력에 적용하고 같은 계층(형제)으로 증감 버튼을 제공할 수도 있습니다.

키보드 접근성을 보장하려면, 모든 role 인스턴스에서 포커스 관리(아래 포커스 관리 참고)를 해야 합니다. spinbutton이 포커스를 받으면, textbox 요소가 있으면 거기에 포커스를, 없으면 spinbutton 자체에 포커스를 두는 것이 좋습니다. 또한 키보드의 ·아래 화살표로 증감이 가능해야 하며, 증감용 button들은 메인(Tab) 탐색 순서에서는 제외해야 합니다(HTML의 Tab 순환).

spinbutton에 값이 있다면 작성자는 aria-valuenow를 설정하는 것이 좋으며, 최소/최대값이 있다면 각각 aria-valuemin, aria-valuemax 설정도 권장합니다.

특성:
특성
상위 역할:
지원 상태 및 속성:
상속 속성 및 상태:
이름 출처: author
접근 가능한 이름 필요: True
역할의 암시적 값: aria-valuemin의 기본값: 최소값 없음.
aria-valuemax의 기본값: 최대값 없음.
aria-valuenow의 기본값: 현재값 없음.

status role

사용자에게 권고 정보를 제공하지만 alert만큼 중요하지는 않은 라이브 리전 유형입니다. 종종(필수는 아님) 상태 표시줄로 표현됩니다.

작성자는 권장되기로 상태가 바뀔 때 status 역할 요소에 포커스가 가지 않도록 해야 합니다.

Status는 라이브 리전의 한 형태입니다. 페이지의 다른 부분이 status에 표시되는 내용을 제어한다면, 작성자는 aria-controls 속성으로 관계를 명시해야 합니다.

보조 기술선택적으로 점자 디스플레이의 여러 셀을 status 표시 용도로 예약할 수 있습니다.

status 역할을 가진 요소는 aria-live의 암시적 값이 polite이고, aria-atomic의 암시적 값은 true입니다.

특성:
특성
상위 역할: section
하위 역할:
연관 개념:
상속 속성 및 상태:
이름 출처: author
역할의 암시적 값: aria-live의 기본값은 polite입니다.
aria-atomic의 기본값은 true입니다.

strong role

중요하거나, 심각하거나, 긴급한 내용을 나타냅니다. 관련 역할로 emphasis를 참고하세요.

strong 역할의 목적은 상당히 중요한 것, 심각함 또는 긴급함을 전달하기 위함입니다. 단순히 타이포그래피적인 변화만을 전달하려는 경우에는 사용하지 마세요. strong 역할이 없다면 내용 의미가 바뀌는 경우에만 이 역할을 사용하는 것이 권장됩니다.

strong 역할은 강조(emphasis)나 스트레스를 전달하려는 용도가 아닙니다. 그럴 경우 emphasis 역할이 더 적합합니다.

특성:
특성
상위 역할: section
연관 개념:
상속 속성 및 상태:
금지 속성 및 상태:
이름 출처: prohibited

structure role

문서 구조적 요소입니다.

문서 구조를 위한 역할들보조 기술이 동적 콘텐츠와 정적 문서 콘텐츠를 구분할 수 있도록 도와줌으로써 동적 웹 콘텐츠의 접근성을 지원합니다. 구조적 역할은 그 자체만으로 접근성 API에 모두 매핑되지는 않으나, widget 역할 생성이나, 보조 기술을 위한 콘텐츠 적응 지원에 사용됩니다.

structure는 온톨로지에서 사용되는 추상 역할입니다. 작성자는 절대로 structure 역할을 실제 콘텐츠에 사용하면 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: roletype
하위 역할:
상속된 상태 및 속성:

subscript role

하첨자(아래첨자) 문자 하나 이상. 관련 역할: superscript.

subscript 역할은 특정한 의미가 있는 타이포그래피 표기만을 마크업할 때 사용해야 하며, 단순하게 보기 위한 서식을 위해서 사용해서는 안 됩니다. 일반적으로 subscript가 없으면 콘텐츠의 의미가 달라지는 경우에만 이 역할을 권장합니다.

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

suggestion role

콘텐츠에 제안된 단일 변경 사항입니다.

예시로, 여러 사용자를 지원하는 편집 시스템에서 한 사용자가 변경을 제안할 수 있고, 또 다른 사용자가 그 제안을 수락하거나 거부할 책임을 질 수 있습니다.

작성자는 반드시 suggestion에는 하나의 insertion 자식 또는 하나의 deletion 자식을 포함하거나, 하나는 insertion이고 다른 하나는 deletion인 두 자식만을 포함해야 한다는 점을 보장해야 합니다. 그 외의 자식은 suggestion에 포함해서는 안 됩니다.

작성자는 선택적으로 aria-details 또는 aria-description을 활용해 suggestion을 관련 정보(예: 의견, 작성자 정보, 타임스탬프 등)와 연결할 수 있습니다.

<p>
  The best pet is a
  <span role="suggestion">
    <span role="deletion">cat</span>
    <span role="insertion">dog</span>
  </span>
</p>

제안이 수락되면 작성자는 권장되기로 suggestion 역할을 제거해 제안된 수정이 반영되었음을 나타내야 합니다. suggestion 역할이 제거된 후에는, 자식 insertiondeletion 요소들을 남겨둬서 수정 내역을 기록하거나, 수정된 콘텐츠로 대체할 수 있습니다.

특성:
특성
상위 역할: section
허용된 접근성 자식 역할:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

superscript role

윗첨자(위첨자) 문자 하나 이상. 관련 역할: superscript.

superscript 역할은 특정한 의미가 있는 타이포그래피 관례만을 마크업할 때 사용해야 하며, 단순히 스타일만을 위한 표기에는 사용하지 않아야 합니다. 일반적으로 superscript가 없으면 콘텐츠 의미가 달라지는 경우에만 이 역할을 권장합니다.

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

switch role

켜짐/꺼짐 값을 나타내는 체크박스 타입입니다(체크됨/체크 해제됨이 아님). 관련 역할: checkbox.

switcharia-checked 속성은 입력이 켜짐(true)인지 꺼짐(false)인지를 나타냅니다. mixed값은 유효하지 않으며, 사용자 에이전트는 반드시 mixed 값을 false와 동일하게 취급해야 합니다.

참고

switchcheckbox 및 토글 button과 거의 동일한 기능을 제공하지만, 보조 기술은 이 위젯을 실제 화면상의 모양과 일치하게 사용자에게 전달할 수 있습니다.

특성:
특성
상위 역할: checkbox
연관 개념:
필수 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필요: True
자식 표현 여부: True

tab role

사용자가 볼 탭 콘텐츠를 선택하도록 하는 그룹 라벨(탭 선택 메커니즘)입니다.

tabpanel 또는 그 항목에 포커스가 있으면, 연결된 tabtablist 내에서 현재 활성 탭이 됩니다(자세한 내용은 포커스 관리 참고). tablist는 관련 tab 요소 집합을 포함하며, 보통 여러 tabpanel 앞에 배치됩니다. 탭 세트 구현 패턴에 대한 자세한 내용은 WAI-ARIA Authoring Practices를 참고하세요.

작성자는 반드시 요소role tab인 경우 접근성 자식tablist 역할인 요소 안에 있도록 해야 합니다.

작성자는 권장되기로 현재 활성 탭과 연결된 tabpanel이 사용자에게 인지 가능해야 합니다.

단일 선택 tablist의 경우, 작성자는 권장되기로 사용자가 해당 탭을 선택할 때까지 다른 tabpanel 요소를 모두 숨겨야 합니다. 다중 선택 tablist라면, 보이는 각 tabpaneltabaria-expanded 속성true로, 숨겨진 tabpanel과 연결된 tabaria-expandedfalse로 설정되어야 합니다.

작성자는 권장되기로 선택된 탭에는 aria-selectedtrue로, 비활성 탭들에는 aria-selectedfalse로 설정되어야 하며, 현재 선택된 탭은 시각적으로 구분되어야 합니다.

특정 조건에서, 사용자 에이전트는 tab이 포함된 tablist의 각 aria-selected에 대해 암시적 값을 부여할 수도 있습니다. 그럴 때, 사용자는 아래 조건 모두 충족 시에만 암시적 값을 적용할 의무가 있습니다:

특성:
특성
상위 역할:
필수 접근성 부모 역할: tablist
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필요: True
자식 표현 여부: True
역할의 암시적 값: aria-selected의 기본값은 false입니다.

table role

행과 열로 데이터가 배치된 section입니다. 관련 역할: grid.

table 역할은 상호작용하지 않는 표 컨테이너에 적합합니다. 표 컨테이너가 선택 상태를 관리하거나, 자체 이차원 내비게이션을 제공하거나, 사용자가 내용을 재정렬/조작할 수 있다면, 작성자는 권장되기로 grid 또는 treegrid를 사용해야 합니다.

가능하면 작성자는 호스트 언어의 표 시맨틱을 선호해야 하며, 예를 들어 HTML<table> 요소를 사용하는 것이 좋습니다.

특성:
특성
상위 역할: section
하위 역할:
기본 개념: <table> (HTML)
허용된 접근성 자식 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요: True

tablist role

tab 요소의 목록으로, 이는 tabpanel 요소에 대한 참조입니다.

키보드 접근성을 보장하려면, 이 역할의 모든 인스턴스에서 하위 요소의 포커스를 관리해야 합니다(자세한 내용은 포커스 관리 참고).

단일 선택 tablist의 경우, 작성자는 권장되기로 사용자가 해당 탭을 선택할 때까지 다른 tabpanel 요소를 모두 숨겨야 합니다. 다중 선택 tablist에서는, 보이는 각 tabpaneltabaria-expanded 속성true로, 남은 숨겨진 tabpanel과 관련된 tabaria-expandedfalse로 설정되어야 합니다.

tablist 요소는 보통 여러 tabpanel 요소 앞에 배치됩니다. 탭 세트 구현에 대한 자세한 내용은 WAI-ARIA Authoring Practices를 참고하세요.

tablist 역할을 가진 요소는 aria-orientation의 기본값이 horizontal입니다.

특성:
특성
상위 역할:
허용된 접근성 자식 역할: tab
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
역할의 암시적 값: aria-orientation의 기본값은 horizontal입니다.

tabpanel role

tab과 연관된 리소스 컨테이너이며, 각 tabtablist 안에 있습니다.

작성자는 권장되기로 tabpanel 요소를 해당 tab과 연결해야 하며, 방법은 탭에 aria-controls 속성을 사용해 패널을 참조하게 하거나, 패널에 aria-labelledby 속성을 사용해 탭을 참조하게 하면 됩니다.

tablist 요소는 보통 여러 tabpanel 요소 앞, 가까이에 배치됩니다. 탭 세트 디자인 패턴의 구현에 대한 자세한 내용은 WAI-ARIA Authoring Practices를 참고하세요.

특성:
특성
상위 역할: section
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요 여부: True

term role

필요에 따라 정의가 연결될 수 있는 단어나 구절입니다. 관련 역할: definition.

term 역할은 작성자에 의해 definition이 제공되었거나, 사용자가 제공할 것으로 예상되는 단어나 구절을 명확히 식별하는 데 사용합니다. 이미 definition이 존재하거나, 정의를 입력하는 폼 또는 폼 컨트롤이 있다면, 작성자는 권장되기로 aria-details로 관련 요소를 가리켜야 합니다.

작성자는 링크와 같은 상호작용 요소에는 term 역할을 사용하지 않아야 합니다. 그렇게 하면 보조 기술 사용자들이 그 요소와 상호작용할 수 없게 될 수 있기 때문입니다.

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

textbox role

자유형 텍스트 값을 입력할 수 있는 입력 유형입니다.

aria-multiline 속성true이면, widget에서 입력 내에서 줄 바꿈이 허용되며, 이는 HTML textarea처럼 동작합니다. 그렇지 않으면, 간단한 한 줄 텍스트 박스입니다. 이 역할은 입력 요소가 없는 언어이거나, 다른 시맨틱의 요소를 텍스트 필드로 재사용할 때 사용이 의도됩니다.

참고

대부분의 사용자 에이전트 구현에서, ENTER 또는 RETURN 키의 기본 동작은 HTML의 한 줄 입력 필드와 여러 줄 입력 필드에서 다릅니다. 사용자가 한 줄 <input type="text">에 포커스가 있을 때는 ENTER 입력이 대개 폼을 제출합니다. 여러 줄 <textarea>에 포커스가 있을 때는 그러한 키 입력이 줄 바꿈을 추가합니다. WAI-ARIAtextbox 역할은 aria-multiline 속성으로 이 두 유형의 박스를 구분하므로, 작성자는 필드를 설계할 때 이 차이를 인지해야 합니다.

특성:
특성
상위 역할: input
하위 역할:
연관 개념:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요 여부: True

time role

특정 시점을 나타내는 요소입니다.

참고

현재 WAI-ARIA 속성 중 HTML<time>에서 지원하는 datetime 속성에 해당하는 것은 없습니다. 이 속성의 추가는 ARIA 1.3에서 검토될 예정입니다.

작성자는 권장되기로 텍스트 내용을 올바른 날짜 또는 시간 형식 문자열로 제한하거나, 이 역할이 적용된 요소에 향후 생길 수 있는 datetime 대응 속성을 적용하는 것이 좋습니다.

특성:
특성
상위 역할: section
연관 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

timer role

라이브 리전의 한 유형으로, 시작 지점부터 경과한 시간 또는 종료 지점까지 남은 시간을 나타내는 숫자 카운터를 포함합니다.

timer 오브젝트의 텍스트 내용은 현재 시간 측정값을 나타내며, 그 값이 변함에 따라 갱신됩니다. 타이머 값은 반드시 기계 판독 가능하지는 않지만, 작성자는 권장되기로 타이머가 일시 중지되거나 종료 지점에 도달했을 때를 제외하고 텍스트 내용을 고정된 주기로 갱신해야 합니다.

timer 역할을 가진 요소는 aria-live의 암시적 값이 off입니다.

특성:
특성
상위 역할: status
상속 속성 및 상태:
이름 출처: author
암시적 값: aria-live의 기본값은 off입니다.

toolbar role

자주 사용하는 기능 버튼이나 컨트롤을 집약해 컴팩트하게 시각적으로 표현한 집합입니다.

툴바는 일반적으로 menubar의 기능 중 일부를 추려, 사용자가 해당 기능을 보다 쉽게 쓸 수 있게 설계된 것입니다. 애플리케이션에 둘 이상의 툴바가 있다면 작성자는 반드시 각각에 레이블을 제공해야 합니다.

작성자는 선택적으로 role의 모든 인스턴스에서 하위 항목의 포커스를 관리할 수 있습니다(자세한 내용은 포커스 관리 참고).

toolbar 역할을 가진 요소는 aria-orientation의 암시적 값이 horizontal입니다.

특성:
특성
상위 역할: group
연관 개념:
지원 속성 및 상태: aria-orientation
상속 속성 및 상태:
이름 출처: author
암시적 값: aria-orientation의 기본값은 horizontal입니다.

tooltip role

요소에 대한 설명을 보여주는 맥락성 팝업입니다.

tooltip은 일반적으로 짧은 지연 후 마우스 오버 시 또는 접근성 부모가 키보드 포커스를 받을 때 표시됩니다. WAI-ARIA tooltip은 사용자 에이전트의 기본 툴팁 동작을 보완합니다.

참고

일반적인 툴팁 딜레이는 1~5초 정도입니다.

작성자는 권장되기로 roletooltip인 요소가 툴팁이 표시될 때 또는 그 전에 aria-describedby로 참조되도록 해야 합니다.

특성:
특성
상위 역할: section
상속 속성 및 상태:
이름 출처:
  • contents
  • author

tree role

사용자가 계층적으로 구성된 컬렉션에서 하나 이상의 항목을 선택할 수 있게 해주는 widget입니다.

키보드 접근성을 보장하려면, 이 role의 모든 인스턴스에서 하위 항목의 포커스를 관리하는 것이 권장됩니다(자세한 내용은 포커스 관리 참고).

tree 역할을 가진 요소는 aria-orientation의 암시적 값이 vertical입니다.

특성:
특성
상위 역할: select
하위 역할:
허용된 접근성 자식 역할:
지원 속성 및 상태:
상속 속성 및 상태:
이름 출처: author
접근 가능한 이름 필요: True
암시적 값: aria-orientation의 기본값은 vertical입니다.

treegrid role

grid의 행이 tree와 같이 확장/축소될 수 있는 컴포넌트입니다.

aria-readonly요소role treegrid으로 설정되면, user agents반드시 해당 값을 해당 treegridgridcell 접근성 자손 전체에 전파하고, 접근성 API에 노출해야 합니다. 작성자는 개별 gridcell 요소에서 aria-readonly 값을 재정의할 수 있습니다.

포커스 가능한 gridcellaria-readonly 속성이 적용되면, 그 gridcell 안의 콘텐츠가 편집 가능한지 나타냅니다. aria-readonly 속성은 treegrid 자체의 내비게이션 또는 조작 기능의 사용 가능성까지는 나타내지 않습니다.

콘텐츠 편집 기능을 가진 treegrid에서, 포커스 가능한 gridcell의 콘텐츠가 편집 불가한 경우, 작성자는 선택적으로 해당 gridcellaria-readonlytrue로 설정할 수 있습니다. 한편, treegridaria-readonly를 지원하지 않는 예를 들면 link 요소와 같은 컬렉션을 제공할 경우, 작성자가 aria-readonly 값을 명시하지 않아도 무방합니다.

키보드 접근성을 위해, 이 role의 모든 인스턴스에서 자식(후손) 포커스를 관리하는 것이 권장됩니다(자세한 내용은 포커스 관리 참고).

특성:
특성
상위 역할:
허용된 접근성 자식 역할:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필요: True

treeitem role

tree 내의 항목입니다.

treeitem 요소는 하위 그룹(확장/축소 가능한)을 포함할 수 있습니다. 확장 가능한 treeitem 컬렉션은 group role 요소로 감쌀 수 있습니다.

작성자는 반드시 요소roletreeitem이면, 그 요소가 tree 또는 group(그리고 해당 accessibility childtreeitem임) 역할의 요소의 접근성 자식이어야 함을 보장해야 합니다.

특정 조건에서, 사용자 에이전트는 treeitem이 포함된 tree의 각 aria-selected에 대해 암시적 값을 줄 수 있습니다. 그럴 때 반드시 아래 조건들을 모두 충족해야 합니다:

사용자 에이전트가 treeitemaria-selected에 암시적 값을 제공하는 경우, DOM 포커스가 treeitem에 있거나, tree에 있고 해당 treeitemaria-activedescendant로 참조된다면 권장되는 값은 true입니다. 그 외의 경우 권장 값은 false입니다.

작성자는 선택적으로 treeitem의 선택 표시를 aria-selected 또는 aria-checked로 나타낼 수 있습니다. 어떤 UI는 단일 선택 트리에서 aria-selected로, 다중 선택 트리에서는 aria-checked로 선택을 표시합니다. 작성자는 동일 tree 내에서는 아래 특수한 경우를 모두 충족하지 않는 한 aria-selectedaria-checked를 동시에 지정해서는 안 됩니다:

  • UI에서 aria-selectedaria-checked의 의미와 목적이 다를 것
  • UI가 각각의 상태 의미와 목적을 명확히 드러낼 것
  • 각 상태를 제어하는 별도의 방식이 제공될 것
특성:
특성
상위 역할:
필수 접근성 부모 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필요: True

widget role

그래픽 사용자 인터페이스(GUI)의 인터랙티브 컴포넌트입니다.

위젯은 사용자가 상호작용할 수 있는 개별 UI 오브젝트입니다. 위젯 roles접근성 APIs의 표준 기능에 매핑됩니다. 사용자가 widget의 비추상 하위 역할 중 하나가 지정된 요소를 내비게이션하면, 표준 키보드 이벤트를 가로채는 보조 기술(스크린리더 등)은 권장되기로 어플리케이션 브라우징 모드로 전환하여 키보드 이벤트를 웹앱에 그대로 전달해야 합니다. 이는 특정 보조 기술에게 일반 탐색 모드에서 웹앱 상호작용에 더 적합한 모드로 전환하라는 힌트를 주기 위함입니다. 일부 user agents는 위/아래 화살표 등으로 문서를 탐색하는 탐색 모드가 있는데, 이런 네이티브 탐색이 웹앱에서 키를 쓰지 못하게 할 수 있습니다.

widget은 온톨로지에서 사용되는 추상 역할입니다. 작성자는 절대 widget 역할을 실제 콘텐츠에서 사용하면 안 됩니다.

특성:
특성
추상 여부: True
상위 역할: roletype
하위 역할:
상속된 상태 및 속성:

window role

브라우저 또는 어플리케이션 윈도우입니다.

요소role이 지정되면, 실제 운영체제의 윈도우로 구현되지 않아도 문서의 일부를 윈도우처럼 스타일링했더라도 그래픽 UI(GUI) 환경에서 윈도우와 유사한 동작을 하게 됩니다.

window는 온톨로지에서 사용되는 추상 역할이며, 작성자는 절대 window 역할을 실제 콘텐츠에서 사용하면 안 됩니다.

참고

이 역할의 설명에서 'application'은 application 역할(특정 보조 기술 동작 지정)을 의미하지 않습니다.

특성:
특성
추상 여부: True
상위 역할: roletype
하위 역할:
지원 상태 및 속성: aria-modal
상속된 상태 및 속성:

6. 지원 상태 및 속성

6.1 상태와 속성의 구분

“상태(states)”와 “속성(properties)”라는 용어는 유사한 기능을 가리킵니다. 둘 다 객체에 대한 구체적 정보를 제공하며, 역할의 특성을 정의하는 일부를 이룹니다. 본 문서에서는 상태와 속성 모두 aria-로 시작하는 마크업 속성으로 다루지만, 그 의미의 미묘한 차이를 명확히 하기 위해 개념적으로 구분합니다. 주된 차이점 중 하나는 속성(property, 예: aria-labelledby)의 은 애플리케이션의 라이프사이클 동안 잘 바뀌지 않지만, 상태(state, 예: aria-checked)의 값은 사용자의 상호작용에 따라 자주 바뀔 수 있다는 점입니다. 단, 변경 빈도의 차이가 절대적인 규칙은 아니며, aria-valuetext와 같은 일부 속성도 자주 변경될 수 있습니다. 상태와 속성의 구분은 웹 콘텐츠 작성자에게 큰 영향을 주지 않기 때문에, 본 명세서는 가능한 경우 ‘상태’와 ‘속성’을 그냥 “속성(attribute)”으로 단순화해 언급합니다. 자세한 정보는 상태속성 정의를 참고하세요.

6.2 상태와 속성의 특성

상태와 속성은 다음 섹션에 설명된 특성을 가집니다.

이 언어나 다른 언어에서 이 상태 또는 속성에 해당하거나 유사한 기능에 대한 참고 정보입니다. 정확하게 일치하지 않을 수 있지만, 상태/속성의 의도를 이해하는 데 도움이 됩니다.

6.2.2 역할에서의 사용

상태 또는 속성을 사용하는 역할에 대한 참고 정보입니다. 이 정보는 해당 상태/속성의 적절한 용법을 이해하는 데 도움이 되며, 명시된 역할 이외에 사용하는 것은 정의되지 않습니다.

6.2.3 역할로의 상속

조상 역할에서 상태 또는 속성이 상속되는 역할에 대한 참고 정보입니다.

6.2.4

상태 또는 속성의 값 유형입니다. 값은 다음 유형 중 하나입니다:

true/false
true 또는 false를 나타내는 값. 명시적으로 달리 지정하지 않는 한 기본값은 false입니다.
tristate
true, false, mixed 또는 undefined 값을 나타냅니다. 명시적으로 달리 지정하지 않는 한 기본값은 undefined입니다.
true/false/undefined
true, false, undefined(적용 안됨)를 나타냅니다. 명시적으로 달리 지정하지 않는 한 기본값은 undefined입니다. 예를 들어, aria-expandedfalse로 지정된 요소는 현재 확장되지 않았다는 의미이고, aria-expandedundefined인 요소는 확장 가능하지 않다는 의미입니다.
ID reference
동일 문서 내 다른 요소의 ID를 참조합니다.
ID reference list
하나 이상의 ID 참조 목록입니다.
integer
소수점이 없는 수치 값입니다.
number
모든 유리수 또는 실수 값입니다.
string
값의 형식에 제한이 없는 자유 입력 값입니다.
token
제한된 값 집합 중 하나입니다. 기본값은 각 속성의 값 표에서 정의되며, 속성 값 절에 설명되어 있습니다.
token list
하나 이상의 토큰의 목록입니다.

이 값 유형들은 상태 및 속성의 일반적인 유형이지만, 구체적 표현 방식을 정의하지는 않습니다. 값이 어떻게 표현되고 호스트 언어에서 처리되는지에 대한 자세한 내용은 상태 및 속성 속성 처리를 참고하세요.

6.3 ARIA 속성

6.3.1 다중값 속성 값

ARIA 속성 정의에 속성의 허용 을 나열한 표가 있다면, 해당 속성은 다중값 nullable 속성입니다. 표의 각 값은 속성의 키워드이며, 동일 이름의 상태에 매핑됩니다.

6.3.2 ARIA 속성의 IDL 반영

모든 ARIA 속성은 IDL에서 nullable DOMString 속성으로 반영됩니다. 여기에는 true/false 타입 같이 불리언 유사 타입과, 기타 모든 ARIA 속성이 포함됩니다.

ARIA 값 테이블에 정의된 기본값은 반드시 IDL에서 해당 속성의 값 없음 기본이나 잘못된 값 기본으로 반영되지 않아야 합니다. get 시, ARIA 속성이 없으면 null이 반환됩니다. ARIA 속성 값은 get에서 검증되지 않습니다. 만약 ARIA 값이 잘못된 값이면, get 시 설정된 리터럴 문자열 그대로 반환되며, 잘못된 값 기본은 반환되지 않습니다.

6.3.3 OS 접근성 API의 다중값 ARIA 속성 매핑

IDL 반영과 달리, 운영체제 접근성 API의 ARIA 속성 매핑은 기본값을 가질 수 있습니다. ARIA 값 표의 모든 기본값은 5.2.3 지원 상태 및 속성 또는 Core Accessibility API Mappings 1.1에 기술된 대로 운영체제의 접근성 API에 노출됩니다.

6.3.4 ARIA nullable DOMString 속성

A. WAI-ARIA 값 타입의 언어 매핑에서 언급한 것처럼, 속성은 호스트 언어에서 포함되며, WAI-ARIA 타입의 표현 구문은 호스트 언어에 의해 결정됩니다.

HTML에서 ARIA nullable DOMString 속성의 동작 알고리즘은 다음과 같습니다:

get 시, 해당 content 속성이 없으면 IDL 속성은 null을 반환합니다. content 속성이 있다면, 투명하게(대소문자 유지) 값을 가져와야 합니다. set 시, 새 값이 null이면 content 속성을 제거하고, 아니면 대소문자 유지한 채 지정된 새 값으로 content 속성을 설정합니다.

참고

참고: ARIA 1.2 기준, IDL로 노출되는 모든 ARIA 속성은 nullable DOMString로 정의됩니다. 이는 주요 렌더링 엔진의 현재 구현과 일치합니다. 이 명세상의 변경은 실제로 구현 변화 없이 현재 웹 엔진 현실을 반영하기 위한 것입니다. 다만, 향후 초안에서 ARIA 워킹그룹은 일부 ARIA 속성을 non-nullable DOMString으로 바꾸고, 이에 대한 구현을 추진할 예정입니다. 이 변경은 ARIA를 HTML열거형 속성 사용과 일치하게 만들기 위한 것입니다.

6.3.4.1 속성 사용 예시

이 절은 비규범적입니다.

6.4 번역 가능한 속성

HTML 명세는 다른 명세에서 번역 가능한 속성을 정의할 수 있음을 명시합니다. 각 속성 값의 언어와 방향성은 요소의 언어방향성과 동일합니다.

보조기술 사용자가 이해할 수 있도록, 다음 상태속성의 값은 번역 가능한 속성이며, 페이지를 현지화할 때 번역해야 합니다:

6.5 전역 상태 및 속성

일부 상태속성호스트 언어 요소 전체에 적용 가능한데, 이는 role 부여 여부와 무관합니다. 다음 전역 상태와 속성은 별도로 금지되지 않는 한, 모든 역할과 기본 마크업 요소에 적용 가능합니다. 만약 어떤 역할이 전역 상태/속성의 사용을 금지한다면, 해당 역할 정의 절의 특성 표에 금지 항목으로 명시됩니다.

6.6 WAI-ARIA 상태 및 속성 분류

상태와 속성은 다음과 같이 분류됩니다:

  1. 위젯 속성
  2. 라이브 리전 속성
  3. 드래그 앤 드롭 속성
  4. 관계 속성

6.6.1 위젯 속성

이 절에는 GUI 시스템이나 리치 인터넷 애플리케이션에서 사용자 입력을 받고 사용자 동작을 처리하는 일반적인 UI 요소에 특화된 속성이 포함되어 있습니다. 이 속성들은 위젯 역할을 지원하기 위해 사용됩니다.

위젯 속성은 user agent에 의해 접근성 API상태로 매핑되거나, 보조 기술이 접근할 수 있도록 하거나, 직접 DOM에서 접근할 수도 있습니다.

6.6.2 라이브 리전 속성

이 절에는 리치 인터넷 애플리케이션의 라이브 리전에 특화된 속성이 포함되어 있습니다. 이 속성들은 어떤 요소에도 적용할 수 있습니다. 목적은 포커스를 받지 않아도 콘텐츠에 변경이 발생할 수 있음을 표시하고, 보조 기술이 어떻게 콘텐츠 변화를 처리할지 정보를 제공하는 데 있습니다. 일부 역할은 이 aria-live 속성에 대해 해당 역할만의 기본값을 명시합니다. 라이브 리전의 예로는 실시간으로 갱신되는 증권시세 표시 영역(ticker section) 등이 있습니다. user agent는 라이브 리전 내부의 요소에서 사용자의 직접적인 동작(예: 텍스트필드 값 편집)으로 발생한 변경사항은 무시할 수 있습니다.

6.6.3 드래그 앤 드롭 속성

이 절에는 드래그 가능한 요소, 드롭 타겟 등 드래그 앤 드롭 인터페이스 요소에 대한 정보를 나타내는 속성을 나열합니다. 드롭 타겟 정보는 작성자가 시각적으로 렌더링하며, 보조 기술에는 대체 방식으로 제공됩니다.

6.6.4 관계 속성

이 절에는 문서 구조만으로는 명확히 알기 힘든 관계 또는 요소 간의 연결을 나타내는 속성을 나열합니다.

6.7 상태 변경 알림

user agent는 반드시 상태가 변경될 때 이를 보조 기술이 알 수 있도록, DOM 속성 변경 이벤트나 운영체제의 접근성 API 이벤트를 통해 전달할 수 있어야 합니다.

6.8 상태 및 속성 정의 (모든 aria-* 속성)

아래는 WAI-ARIA 상태속성의 알파벳 순 목록으로, 리치 인터넷 어플리케이션 작성자가 사용하기 위한 것입니다. 각 WAI-ARIA 상태와 속성의 자세한 정의는 이 요약 목록 뒤에 나옵니다.

aria-activedescendant
식별합니다 DOM 포커스가 composite 위젯, combobox, textbox, group, 또는 application에 있을 때 현재 활성 요소를.
aria-atomic
나타냅니다 보조 기술aria-relevant 속성으로 정의된 변경 알림에 따라 변경된 영역의 전체를 표시할지 또는 일부만 표시할지를.
aria-autocomplete
나타냅니다 텍스트 입력이 combobox, searchbox, 또는 textbox에 대해 사용자가 의도한 값의 하나 이상의 예측을 표시할 수 있는지 여부를 나타내며, 예측이 제공될 경우 어떻게 제시되는지를 지정합니다.
aria-braillelabel
정의합니다 브라유로 변환될 목적으로 현재 요소에 라벨을 지정하는 문자열 값을. 관련 항목 aria-label.
aria-brailleroledescription
정의합니다 요소의 역할에 대한 저자 로컬화된 사람이 읽을 수 있는 약식 설명을, 브라유로 변환될 목적으로. 관련 항목 aria-roledescription.
aria-busy
나타냅니다 요소가 수정 중임을, 그리고 보조 기술이 수정이 완료될 때까지 이를 사용자에게 노출하는 것을 기다릴 수 있음을.
aria-checked
나타냅니다 체크박스, 라디오 버튼 및 기타 위젯의 현재 "선택됨(checked)" 상태를. 관련 항목 aria-pressedaria-selected.
aria-colcount
정의합니다 table, grid 또는 treegrid의 전체 열 수를. 관련 항목 aria-colindex.
aria-colindex
정의합니다 요소의 열 인덱스 또는 표, 그리드 또는 트리그리드 내 전체 열 수에 대한 위치를. 관련 항목 aria-colindextext, aria-colcount, 및 aria-colspan.
aria-colindextext
정의합니다 aria-colindex의 사람이 읽을 수 있는 텍스트 대체 표현을. 관련 항목 aria-rowindextext.
aria-colspan
정의합니다 테이블, 그리드 또는 트리그리드 내 셀 또는 그리드셀에 의해 가로로 병합된 열 수를. 관련 항목 aria-colindexaria-rowspan.
aria-controls
식별합니다 현재 요소가 내용이나 존재를 제어하는 요소(들)를. 관련 항목 aria-owns.
aria-current
나타냅니다 컨테이너나 관련 요소 집합 내에서 현재 항목을 대표하는 요소를.
aria-describedby
식별합니다 객체를 설명하는 요소(들)를. 관련 항목 aria-labelledbyaria-description.
aria-description
정의합니다 현재 요소를 설명하거나 주석하는 문자열 값을. 관련 항목 aria-describedby.
aria-details
식별합니다 객체와 관련된 추가 정보를 제공하는 요소(들)를. 관련 항목 aria-describedby.
aria-disabled
나타냅니다 요소가 인지 가능하지만 비활성화되어 있어 편집되거나 그 밖의 방식으로 조작할 수 없음을. 관련 항목 aria-hiddenaria-readonly.
aria-dropeffect
[Deprecated in ARIA 1.1] 끌어온 객체를 드롭 대상에 놓을 때 어떤 기능을 수행할 수 있는지를 나타냅니다.
aria-errormessage
식별합니다 객체에 대한 오류 메시지를 제공하는 요소(들)를. 관련 항목 aria-invalidaria-describedby.
aria-expanded
나타냅니다 이 요소의 접근성 하위 요소이거나 이 요소에 의해 제어되는 그룹화 요소가 확장되었는지 또는 축소되었는지를.
aria-flowto
식별합니다 문서 소스 순서의 일반 기본을 사용자가 선택적으로 무시하고 보조 기술이 대체 읽기 순서를 따를 수 있도록 하는 콘텐츠의 다음 요소(들)를.
aria-grabbed
[Deprecated in ARIA 1.1] 드래그 앤 드롭 동작에서 요소의 "잡힘(grabbed)" 상태를 나타냅니다.
aria-haspopup
나타냅니다 요소가 트리거할 수 있는 메뉴나 대화상자 같은 대화형 팝업 요소의 가용성과 유형을.
aria-hidden
나타냅니다 요소가 접근성 API에 노출되는지 여부를. 관련 항목 aria-disabled.
aria-invalid
나타냅니다 입력된 값이 애플리케이션이 기대하는 형식에 맞지 않음을. 관련 항목 aria-errormessage.
aria-keyshortcuts
정의합니다 요소를 활성화하거나 포커스를 주기 위해 저자가 구현한 키보드 단축키를.
aria-label
정의합니다 현재 요소에 라벨을 지정하는 문자열 값을. 관련 항목 aria-labelledby.
aria-labelledby
식별합니다 현재 요소에 라벨을 제공하는 요소(들)를. 관련 항목 aria-labelaria-describedby.
aria-level
정의합니다 구조 내에서 요소의 계층적 수준을.
aria-live
나타냅니다 요소가 업데이트될 것임을, 그리고 사용자 에이전트, 보조 기술 및 사용자가 라이브 영역에서 기대할 수 있는 업데이트 유형을 설명합니다.
aria-modal
나타냅니다 표시될 때 요소가 모달인지 여부를.
aria-multiline
나타냅니다 텍스트 상자가 여러 줄 입력을 허용하는지 아니면 단일 줄만 허용하는지를.
aria-multiselectable
나타냅니다 사용자가 현재 선택 가능한 하위 항목들 가운데 여러 항목을 선택할 수 있음을.
aria-orientation
나타냅니다 요소의 방향이 가로, 세로 또는 알 수 없음/애매한지를.
aria-owns
식별합니다 시각적, 기능적 또는 문맥적 부모/자식 관계를 정의하기 위해 DOM 계층으로는 표현할 수 없는 경우에 DOM 요소 간의 관계를 나타내는 요소(들)를. 관련 항목 aria-controls.
aria-placeholder
정의합니다 컨트롤에 값이 없을 때 사용자 입력을 돕기 위해 의도된 짧은 힌트(단어 또는 짧은 구)를. 힌트는 예시 값이나 기대 형식의 간단한 설명일 수 있습니다.
aria-posinset
정의합니다 현재 리스트 항목(listitem) 또는 트리 항목(treeitem) 집합에서 요소의 번호 또는 위치를. 집합의 모든 요소가 DOM에 존재하면 필요하지 않습니다. 관련 항목 aria-setsize.
aria-pressed
나타냅니다 토글 버튼의 현재 "눌림(pressed)" 상태를. 관련 항목 aria-checkedaria-selected.
aria-readonly
나타냅니다 요소가 편집할 수는 없지만 그 밖의 동작은 가능함을. 관련 항목 aria-disabled.
aria-relevant
나타냅니다 라이브 영역 내 접근성 트리가 수정될 때 사용자 에이전트가 트리거할 알림 종류를. 관련 항목 aria-atomic.
aria-required
나타냅니다 양식을 제출하기 전에 해당 요소에 대한 사용자 입력이 필요함을.
aria-roledescription
정의합니다 요소의 역할에 대한 사람이 읽을 수 있고 저자 로컬화된 설명을.
aria-rowcount
정의합니다 table, grid 또는 treegrid의 전체 행 수를. 관련 항목 aria-rowindex.
aria-rowindex
정의합니다 요소의 행 인덱스 또는 표, 그리드 또는 트리그리드 내 전체 행 수에 대한 위치를. 관련 항목 aria-rowindextext, aria-rowcount, 및 aria-rowspan.
aria-rowindextext
정의합니다 aria-rowindex의 사람이 읽을 수 있는 텍스트 대체 표현을. 관련 항목 aria-colindextext.
aria-rowspan
정의합니다 테이블, 그리드 또는 트리그리드 내 셀 또는 그리드셀에 의해 세로로 병합된 행 수를. 관련 항목 aria-rowindexaria-colspan.
aria-selected
나타냅니다 다양한 위젯의 현재 "선택됨(selected)" 상태를. 관련 항목 aria-checkedaria-pressed.
aria-setsize
정의합니다 현재 리스트 항목(listitem) 또는 트리 항목(treeitem) 집합에서 항목의 총 수를. 집합의 모든 요소가 DOM에 존재하면 필요하지 않습니다. 관련 항목 aria-posinset.
aria-sort
나타냅니다 테이블 또는 그리드의 항목이 오름차순인지 내림차순인지 정렬되어 있는지를.
aria-valuemax
정의합니다 범위 위젯의 허용 가능한 최대값을.
aria-valuemin
정의합니다 범위 위젯의 허용 가능한 최소값을.
aria-valuenow
정의합니다 범위 위젯의 현재 값을. 관련 항목 aria-valuetext.
aria-valuetext
정의합니다 범위 위젯aria-valuenow에 대한 사람이 읽을 수 있는 텍스트 대체 표현을.

aria-activedescendant property

현재 활성화된 요소를 식별합니다. DOM 포커스가 composite 위젯, combobox, textbox, group, 또는 application에 있을 때 사용됩니다.

aria-activedescendant 속성은 메뉴, 그리드, 툴바 등 여러 개의 포커스 가능한 자손을 가질 수 있는 인터랙티브 요소에서 포커스를 관리하는 대체 방법을 제공합니다. DOM 포커스를 접근성 자손간에 이동하는 대신, 작성자는 선택적으로 DOM 포커스를 aria-activedescendant를 지원하는 컨테이너 요소에 두고, aria-activedescendant를 통해 활성화된 요소를 지정할 수 있습니다.

작성자는 반드시 DOM 포커스가 있는 요소에 aria-activedescendant 값을 설정할 때 아래 두 가지 조건 중 하나를 충족해야 합니다:

  1. aria-activedescendant의 값이 접근성 자손을 가리킬 것.
  2. DOM 포커스가 있는 요소가 combobox, textbox 또는 searchbox이고, aria-controlsaria-activedescendant를 지원하는 요소를 참조하며, aria-activedescendant 값이 해당 컨트롤되는 요소의 접근성 자손을 가리킬 것. 예를 들어, combobox에서는 포커스가 combobox에 계속 두면서, combobox에 설정된 aria-activedescendant 값이 팝업 listbox의 자손을 가리킬 수 있습니다.

작성자는 권장되기로, 현재 active descendant가 포커스를 얻으면 반드시 화면에 보이도록(또는 스크롤되어 보이도록) 해야 합니다.

특성:
특성
연관 개념:
사용 역할:
상속되는 역할:
값: ID reference

aria-atomic property

보조 기술aria-relevant 속성에 정의된 변경 알림을 기준으로, 변경된 영역 전체를 보여줄지, 일부만 보여줄지를 나타냅니다.

접근성 APIDocument Object Model [DOM] 모두, 보조 기술이 문서에서 변경된 영역을 판단할 수 있도록 이벤트를 제공합니다.

라이브 리전의 콘텐츠가 변경될 때, user agent는 권장되기로 변경된 요소를 검사하여 조상 요소 중에서 aria-atomic가 설정된 첫 번째 요소를 찾아, 아래에 설명된 적절한 동작을 적용합니다.

  1. 조상 중 aria-atomic이 명시적으로 설정된 것이 없다면, 기본값은 false이고, 보조 기술은 변경된 노드만 사용자에게 보여줍니다.
  2. aria-atomic이 명시적으로 false로 설정된 경우, 그 조상에서 검색을 멈추고 변경된 노드만 사용자에게 보여줍니다.
  3. aria-atomic이 명시적으로 true라면, 보조 기술은 요소 전체 내용을 저자가 정의한 라이브 리전 레이블까지 포함해 모두 읽어줍니다.

aria-atomictrue면, 보조 기술은 여러 개의 변경 사항을 한꺼번에 묶어 변경된 전체 영역을 한 번에 보여줄 수 있습니다.

특성:
특성
사용 역할: 기본 마크업의 모든 요소
값: true/false
값:
설명
false 보조 기술은 변경된 노드만 사용자에게 보여줍니다.
true 보조 기술은 변경된 영역 전체와, 존재하는 경우 저자가 정의한 레이블까지 모두 읽어줍니다.

aria-autocomplete property

입력한 텍스트가, combobox, searchbox, textbox 에서 사용자가 의도한 값을 예측하여 하나 이상의 제안을 표시할 수 있는지, 그리고 예측이 나온다면 어떻게 표시할지 지정합니다.

aria-autocomplete 속성은 textbox, searchbox 또는 combobox가 동적으로 사용자 입력을 어떻게 도와주는지에 대한 인터랙션 모델의 유형을 설명합니다. 이는 input 안에서 완성 제안 텍스트를 표시하는 인라인 모델(aria-autocomplete="inline")과 입력 옆에 띄우는 별도의 목록 요소(aria-autocomplete="list")를 구분합니다. 두 모델을 동시에 제공하는 경우도 있습니다(aria-autocomplete="both").

aria-autocomplete는 입력 요소의 “예측 제안” 동작만을 설명합니다. 입력 요소가 사용자의 입력과는 무관하게 제안을 제공하는 경우에는 권장되기로 aria-autocomplete 값을 명시하지 않거나 none으로 설정해야 합니다. 예를 들어, 입력값과 관계없이 최근 5개 검색어를 항상 표시하는 콤보박스라면 aria-autocompletenone으로 설정합니다. aria-autocomplete 지원 역할의 기본값은 none입니다.

입력 도중 인라인 제안이 표시되는 경우, 추천 텍스트는 입력 커서 뒤에 동적으로 나타나며, 사용자가 입력 필드를 벗어나면 해당 텍스트가 실제 값으로 받아들여집니다. aria-autocompleteinline 또는 both로 설정된 경우, 작성자는 권장되기로 자동 제안되는 텍스트 부분을 선택된(선택 영역으로) 표시해야 합니다. 이렇게 하면 보조 기술은 사용자가 입력한 부분과 자동 제안 부분을 구분하고, 사용자가 원하는 값이 아니면 해당 제안을 삭제하거나 새로운 입력을 계속할 수 있습니다.

입력이 list 또는 both인 경우, 작성자는 반드시 아래 두 조건을 모두 충족해야 합니다:

  1. 해당 요소는 aria-controls가 제안 목록을 담는 요소를 올바르게 참조해야 합니다.
  2. 해당 요소는 aria-haspopup의 값이, 제안 목록을 담는 요소의 role과 일치해야 합니다.

일부 list 구현은 사용자가 ↓ 키를 누르거나 클릭 등의 동작을 해야 제안을 선택하도록 요구하고, 이런 경우 선택적으로 aria-activedescendant나 실제 DOM 포커스를 이동할 수 있습니다. 다른 구현은 사용자가 입력할 때마다 자동으로 첫 제안이 선택되고, Tab키나 입력 밖을 클릭하면 제안이 바로 적용됩니다. 이런 경우 list 또는 both 상태라면 작성자는 반드시 다음을 충족해야 합니다:

  1. 제안 모음을 담는 요소의 role이 aria-activedescendant를 지원할 것
  2. 입력 필드의 aria-activedescendant 값이 자동 선택된 제안 요소를 동적으로 참조하도록 조절될 것
  3. 제안 내용이 표시되는 동안 DOM 포커스가 항상 입력 필드에 머물 것

aria-autocomplete는 단순히 제안이 존재하는지를 알리기 위한 용도가 아니며, 제안의 존재를 알리기 위해 값을 동적으로 바꿔서는 안 됩니다. listboth인 경우, 작성자는 권장되기로 aria-expanded 상태를 사용해 제안 모음 표시 여부를 알려야 합니다.

특성:
특성
사용 역할:
상속되는 역할:
값: token
값:
설명
inline 사용자가 입력하는 동안, 입력값을 완성할 수 있는 제안 텍스트가 커서 뒤에 동적으로 삽입될 수 있습니다.
list 사용자가 입력하는 동안, 입력값을 완성할 수 있는 값의 모음을 표시하는 요소가 나타날 수 있습니다.
both 사용자가 입력하는 동안, 입력값을 완성할 수 있는 값의 모음을 표시하는 요소가 나타나고, 표시된 경우 컬렉션의 한 값이 자동 선택되며 입력 필드에 이를 완성하는 텍스트가 커서 뒤에 나타날 수 있습니다.
none (기본값) 사용자가 입력하는 동안, 입력 완성 제안이 표시되지 않습니다.

aria-braillelabel property

현재 요소를 라벨링할 문자열을 정의하며, 점자로 변환될 것을 의도합니다. 관련: aria-label.

aria-braillelabel의 목적은 aria-label과 유사합니다. 점자에서 인식할 수 있는 이름을 제공합니다.

aria-braillelabel 속성은 저자가 보조 기술이 요소의 접근성 이름을 점자로 현지화, 출력하는 방식을 재정의할 수 있게 합니다. 따라서 aria-braillelabel을 부적절하게 사용할 경우, 사용자가 점자 디스플레이에서 요소를 제대로 이해하지 못할 수 있습니다. 작성자는 권장되기로, 요소의 이름을 점자로 변환했을 때 원하는 사용자 경험이 아니면 aria-braillelabel을 사용해야 합니다.

aria-braillelabel 사용 시, 작성자는 권장되기로 다음을 보장해야 합니다:

  1. aria-braillelabel을 적용한 요소에 올바른 접근성 이름이 있을 것
  2. aria-braillelabel의 값이 비어있지 않고, 공백 문자만 포함하지 않을 것
  3. aria-braillelabel 값에 유니코드 점자 패턴 문자가 아예 없거나, 전부 해당 문자이거나, 점자 패턴 dots-0만 있지 않을 것
  4. aria-braillelabel의 값이 요소의 접근성 이름과 일치하지 않을 것

작성자는 WAI-ARIA role에서 aria-braillelabel금지된 경우, 해당 요소에 이 속성을 절대 지정하면 안 됩니다.

참고

점자 지원 보조 기술은 접근성 이름을 점자로 변환할 수 있습니다. 또한, 보조 기술은 사용자 설정에 따라 점자 출력을 커스터마이즈할 수 있습니다. 콘텐츠 자체나 aria-label로만 접근성 이름을 지정하면 거의 항상 더 나은 사용자 경험을 제공합니다. aria-braillelabelaria-label을 단순 복제하는 것은 매우 권장하지 않습니다. 일반 텍스트 설명을 점자로 변환하는 방식이 부족할 때만 aria-braillelabel을 사용해야 합니다. 또한, aria-braillelabel을 사용할 때 작성자가 값의 로컬라이즈에 전적으로 책임져야 하며, 속성 사용 사실을 이용자에게 분명히 안내할 수단(예: 제품 설명서)이 필요합니다. 값으로 유니코드 점자 패턴만 쓸 경우, 보조 기술은 사용자별 점자 변환 없이 내용을 바로 전달하므로, aria-braillelabel에서 유니코드 점자 패턴 사용은 강력히 권장하지 않습니다.

보조 기술은 점자에 요소의 이름을 표현할 때 aria-braillelabel 값을 권장되기로 사용해야 하지만, 다른 기능은 변경하지 않아야 합니다. 예를 들어, 음성 출력 보조 기술은 기존 접근성 이름을 그대로 사용해야 합니다.

보조 기술은 aria-braillelabel 속성을 다음과 같이 노출 권장됩니다:

  1. aria-braillelabel 값에 유니코드 점자 패턴이 없다면, 사용자의 번역 테이블에 맞게 번역함
  2. 그 외의 경우, 값을 번역 없이 사용자에게 전달함

다음은 aria-braillelabel을 사용해 버튼의 점자 이름을 커스터마이즈하는 예시입니다.

<button aria-braillelabel="****">
  <img alt="4 stars" src="images/stars.jpg">
</button>

위 예제에서, 점자 디스플레이는 "btn ****"로 출력되며, 장황한 "btn gra 4 stars"가 아닌 간결한 이름으로 보여줍니다.

특성:
특성
사용 역할: 아래 역할을 제외한 기본 마크업의 모든 요소: caption, code, definition, deletion, emphasis, generic, insertion, mark, none, paragraph, strong, subscript, suggestion, superscript, term, time
값: string

aria-brailleroledescription property

사람이 읽을 수 있으며, 저자가 지역화한 요소의 역할을 점자로 변환하기 위한 약칭 설명을 정의합니다. 관련 속성: aria-roledescription를 참고하세요.

일부 보조 기술은(예: 화면 읽기 프로그램) 요소의 역할을 사용자 경험의 일부로 나타냅니다. 이러한 보조 기술은 보통 역할의 이름을 지역화하며, 필요에 따라 이름을 맞춤 설정할 수도 있습니다. 이런 보조 기술의 사용자는 "region", "button", "slider"와 같은 역할 이름의 제시에 의존하여 요소의 용도와, 위젯인 경우 어떻게 상호작용해야 하는지 이해합니다.

aria-brailleroledescription 속성은 저자가 보조 기술이 점자에서 역할 이름을 어떻게 지역화하고 표현할 것인지를 재정의할 수 있도록 합니다. 따라서 aria-brailleroledescription를 잘못 사용하면 사용자가 점자 인터페이스에서 요소를 이해하거나 상호작용하는 데 방해가 될 수 있습니다. 저자는 SHOULD aria-brailleroledescription의 사용을 group이나 region과 같은 비대화형 컨테이너 역할의 목적을 명확히 하거나, 점자 맥락에서 widget에 대한 더 구체적인 설명을 제공할 때로 제한해야 합니다.

저자는 aria-brailleroledescriptionaria-roledescription 없이 사용해서는 안됩니다(MUST NOT). 또한 aria-roledescription과 마찬가지로, 저자는 WAI-ARIA 역할이 명시적이거나 암묵적으로 부여된 요소에서 aria-brailleroledescription금지(prohibited)된 경우 이 속성을 지정해서는 안됩니다(MUST NOT).

일반적으로 aria-brailleroledescriptionaria-roledescription이 점자에서 지나치게 장황하게 렌더링되는 드문 경우에만 사용해야 합니다.

aria-brailleroledescription를 사용할 때 저자는 SHOULD 다음을 반드시 확인해야 합니다:

  1. aria-brailleroledescription가 적용된 요소에 유효한 WAI-ARIA 역할 또는 암묵적 WAI-ARIA 역할 시맨틱이 있어야 합니다.
  2. aria-brailleroledescription의 값이 비어있거나 공백 문자만 포함하면 안 됩니다.
  3. aria-brailleroledescription의 값에 Unicode 점자 패턴이 포함되지 않거나, 오로지 Unicode 점자 패턴만으로 구성되어야 하며, 패턴이 점자 dots-0만 포함해서는 안 됩니다.
  4. aria-brailleroledescription의 값이 요소의 WAI-ARIA aria-roledescription, WAI-ARIA role 또는 암묵적 WAI-ARIA 역할 시맨틱과 동일해서는 안 됩니다.
참고

점자 지원이 가능한 보조 기술aria-roledescription의 내용을 점자로 변환할 수 있습니다. 또한 보조 기술은 사용자의 선호도에 따라 이러한 점자 출력을 맞춤 설정할 수 있습니다. aria-roledescription만 사용하는 것이 거의 항상 더 나은 사용자 경험이며, aria-brailleroledescriptionaria-roledescription을 복제하는 용도로 사용하는 것은 강력히 비추천합니다. 대신, aria-brailleroledescriptionaria-roledescription이 충분한 점자 표현을 제공하지 못하는 경우, 즉 특수한 점자 설명이 일반 텍스트 설명을 점자로 변환한 것과 크게 다를 때만 사용합니다. aria-brailleroledescription 사용 시, 이 속성 값이 문서 언어와 일치하도록 저자가 직접 값의 지역화를 책임진다는 점이 매우 중요합니다. 또한 사용자가 이 속성 사용을 명확히 인지할 수 있도록 안내책자를 마련해야 합니다. 예를 들면 제품 문서에서 안내할 수 있습니다. 값이 Unicode 점자 패턴으로 구성된 경우, 보조 기술이 해당 내용을 사용자에게 그대로 전달하여 점자 변환을 따로 적용하지 않으므로, 일반적으로 aria-brailleroledescription에 Unicode 점자 패턴 사용도 강력히 비추천합니다.

다음 조건 중 하나라도 해당되는 경우 사용자 에이전트는 aria-brailleroledescription 속성을 노출해서는 안됩니다(MUST NOT):

  1. aria-brailleroledescription의 값이 비어있거나, 표준 공백이나 빈 점자 패턴(dots-0, U+2800)만 포함된 경우.
  2. aria-brailleroledescription가 적용된 요소가 WAI-ARIA 역할(명시적/암묵적)이며, 그 역할에서 aria-brailleroledescription금지(prohibited)된 경우.
  3. aria-brailleroledescription가 적용된 요소에 유효한 WAI-ARIA aria-roledescription이 없는 경우.

보조 기술은 요소의 역할을 점자로 제시할 때 aria-brailleroledescription의 값을 사용할 것을 권장(SHOULD)하지만, 해당 값이 있는 경우 요소 역할에 따른 기능은 변경하지 말아야 합니다(SHOULD NOT). 예를 들어, region이나 button으로 이동하는 탐색 기능은 aria-brailleroledescription이 설정된 region, button에도 그대로 적용되어야 합니다(SHOULD).

보조 기술aria-brailleroledescription 속성을 다음과 같이 노출하는 것이 권장(SHOULD)됩니다:

  1. aria-brailleroledescription의 값에 Unicode 점자 패턴이 포함되어 있지 않다면, 사용자의 선호 번역 테이블에 따라 값을 변환합니다.
  2. 그 외의 경우, 값을 변환 없이 사용자에게 그대로 전달합니다.

아래 두 예시는 웹 기반 프레젠테이션 응용 프로그램에서 반복되는 비대화형 "slide" 컨테이너 역할을 점자에서 줄여 표시하는 방식을 보여줍니다.

<div role="article" aria-roledescription="slide" aria-brailleroledescription="sld" id="slide" aria-labelledby="slideheading">
<h1 id="slideheading">Quarterly Report</h1>
<!-- remaining slide contents -->
</div>
<article aria-roledescription="slide" aria-brailleroledescription="sld" id="slide" aria-labelledby="slideheading">
<h1 id="slideheading">Quarterly Report</h1>
<!-- remaining slide contents -->
</div>

위 예시에서는 점자 화면 읽기 사용자에게 "slide Quarterly Report"보다 간결한 "sld Quarterly Report"가 표시됩니다.

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소(단, 다음 역할 제외): generic
값: 문자열(string)

aria-busy state

요소가 수정 중임을 나타내며, 보조 기술은 변경 사항을 사용자에게 노출하기 전에 완료될 때까지 기다릴 수 있습니다.

aria-busy의 기본값은 모든 요소에 대해 false입니다. 요소의 aria-busytrue일 때 보조 기술은 접근성 자손에 대한 콘텐츠 변경을 무시했다가, busy 상태가 false가 되면 그 기간 중 바뀐 내용을 한 번의 변경으로 처리할 수 있습니다.

이미 일부 혹은 전체가 렌더링된 컨테이너 요소 내에서 여러 번의 추가, 수정 또는 삭제가 필요하다면 저자는 첫 변경 작업 이전에 컨테이너에 aria-busytrue로 설정하고, 마지막 변경이 완료되면 false로 설정할 수 있습니다(MAY). 예를 들어 live region에 여러 변경을 한 번에 안내음성으로 들려주고 싶을 때 변경 작업이 진행 중일 동안 aria-busytrue로, 완료 후 false로 설정하면 됩니다(MAY).

feed 역할인 요소가 busy로 표시된 경우, 보조 기술은 사용자가 읽는 article 내에서 사용자에 의해 일어난 변화를 제외한 feed 안의 변경사항 렌더링을 지연시킬 수 있습니다.

이미 렌더링된 widget에 변경이 가해져서 widget이 스크립트 실행 중에 허용되는 접근성 자식 역할을 수정하게 될 경우, 업데이트 기간 동안 aria-busytrue로, 완료되면 다시 false로 설정할 수 있습니다(MAY). 예를 들어, 트리 그리드를 동시에 여러 분기에서 업데이트해야 한다면 전체 트리 요소를 한 번에 업데이트하기보다는 각 브랜치 수정 중에 tree를 busy로 표시하는 방법이 있습니다.

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: true/false
값 설명:
설명
false (기본값): 요소에 대해 변경사항이 예상되지 않습니다.
true 요소가 업데이트 중입니다.

aria-checked state

표시합니다 체크박스의 현재 "checked" 상태, 라디오 버튼 및 기타 위젯을. 관련 항목은 aria-pressedaria-selected를 참조하세요.

aria-checked attribute는 해당 요소가 체크된(true), 체크 해제된(false)지, 또는 체크된 값과 체크 해제된 값이 혼합된 다른 요소들의 그룹(mixed)을 나타내는지를 표시합니다. 대부분의 입력 요소는 truefalse 값만 지원하지만, mixed 값은 특정 삼중 상태 입력(예: checkbox 또는 menuitemcheckbox)에서 지원됩니다.

mixed 값은 radio, menuitemradio, switch 또는 이들로부터 상속되는 어떤 요소에서도 지원되지 않으며, 사용자 에이전트는 이러한 역할에 대해 mixed 값을 MUST false와 동등하게 처리해야 합니다.

삼중 상태 입력에서 mixed 값을 사용하는 예시는 WAI-ARIA Authoring Practices에 다루어져 있습니다.

특성:
특성
사용 가능한 역할:
상속되는 역할:
값: tristate
값 설명:
설명
false 이 요소는 체크가 가능하지만 현재 체크되어 있지 않습니다.
mixed 3상태 체크박스 또는 menuitemcheckbox에 혼합 상태 값임을 나타냅니다.
true 이 요소는 체크되어 있습니다.
undefined (기본값) 이 요소는 체크 기능을 지원하지 않습니다.

aria-colcount property

전체 열 수를 정의합니다: table, grid, treegrid에서 사용됩니다. 관련 속성: aria-colindex.

모든 열이 DOM에 존재한다면 이 속성을 따로 지정하지 않아도 사용자 에이전트가 전체 열 수를 자동 계산할 수 있습니다. 그러나 한 번에 일부 열만 DOM에 표시된다면, 전체 테이블의 열 수를 명확히 알리기 위해 이 속성이 필요합니다.

저자는 전체 테이블의 열 수와 같은 정수 값을 aria-colcount반드시(MUST) 지정해야 합니다. 전체 열 수를 알 수 없다면 aria-colcount 값을 -1로 설정하면 사용자 에이전트가 값을 계산하지 않음을 나타냅니다.

다음 예시는 16개의 열이 있는 그리드에서 2, 3, 4, 9번째 열만 사용자에게 표시되는 상황을 보여줍니다.

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-colindex="2">First Name</span>
      <span role="columnheader" aria-colindex="3">Last Name</span>
      <span role="columnheader" aria-colindex="4">Company</span>
      <span role="columnheader" aria-colindex="9">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="gridcell" aria-colindex="2">Fred</span>
      <span role="gridcell" aria-colindex="3">Jackson</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1234</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-colindex="2">Sara</span>
      <span role="gridcell" aria-colindex="3">James</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1235</span>
    </div></div>
</div>
특성:
특성
사용 가능한 역할:
상속되는 역할:
값: 정수(integer)

aria-colindex property

정의합니다 요소의 열 인덱스, 즉 table, grid, treegrid 내 전체 열 수 기준으로 해당 요소의 열 위치(순서)를 의미합니다. 관련 속성: aria-colindextext, aria-colcount, aria-colspan도 참고하세요.

모든 열이 DOM에 존재한다면, 이 속성을 따로 지정하지 않아도 사용자 에이전트가 각 셀이나 gridcell의 열 인덱스를 자동 계산할 수 있습니다. 하지만 한 시점에 일부 열만 DOM에 존재하는 경우, 전체 테이블 기준 각 셀 또는 gridcell의 열 위치를 명확히 지정하기 위해 이 속성이 필요합니다.

저자는 반드시(MUST) aria-colindex을 1 이상 정수, 같은 행 내 앞선 요소들의 aria-colindex 값보다 큰 값, 그리고 전체 테이블 열 수 이하로 지정해야 합니다. 여러 열에 걸친 셀(gridcell)의 경우, 반드시(MUST) span이 시작되는 열의 인덱스 값을 지정해야 합니다.

DOM에 존재하는 열 집합이 연속적이고 그 집합 내에 2개 이상의 행 또는 열에 걸치는 셀이 없다면 저자는 할 수 있습니다(MAY) 각 행에 aria-colindex를 하나만 두고, 해당 집합의 첫 번째 열 인덱스로 지정합니다. 그 외의 경우(예: 비연속/스팬 있음) 저자는 각 행의 접근성 자식 모두에 aria-colindex를 지정하는 것이 좋습니다(SHOULD).

아래 예시는 16개 열 중 2~5번 열이 표시되는 그리드 예시로, 열 집합이 연속적이므로 각 행에 aria-colindex를 둘 수 있습니다.

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row" aria-colindex="2">
      <span role="columnheader">First Name</span>
      <span role="columnheader">Last Name</span>
      <span role="columnheader">Company</span>
      <span role="columnheader">Address</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-colindex="2">
      <span role="gridcell">Fred</span>
      <span role="gridcell">Jackson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">123 Broad St.</span>
    </div>
    <div role="row" aria-colindex="2">
      <span role="gridcell">Sara</span>
      <span role="gridcell">James</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">123 Broad St.</span>
    </div></div>
</div>

다음 예시는 16개 열 중 2~5열이 표시되지만, 일부 셀이 여러 행에 걸쳐 있으므로 각 행의 접근성 자식 모두에 aria-colindex를 지정해야 합니다.

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-colindex="2">First Name</span>
      <span role="columnheader" aria-colindex="3">Last Name</span>
      <span role="columnheader" aria-colindex="4">Company</span>
      <span role="columnheader" aria-colindex="5">Address</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="gridcell" aria-colindex="2">Fred</span>
      <span role="gridcell" aria-colindex="3">Jackson</span>
      <span role="gridcell" aria-colindex="4" aria-rowspan="2">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="5" aria-rowspan="2">123 Broad St.</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-colindex="2">Sara</span>
      <span role="gridcell" aria-colindex="3">James</span>
    </div></div>
</div>

다음 예시는 16개 열 중 2, 3, 4, 9번 열만 표시되며, 열 집합이 연속적이지 않으므로 각 행의 접근성 자식 모두에 aria-colindex를 지정해야 합니다.

<div role="grid" aria-colcount="16">
  <div role="rowgroup">
    <div role="row">
      <span role="columnheader" aria-colindex="2">First Name</span>
      <span role="columnheader" aria-colindex="3">Last Name</span>
      <span role="columnheader" aria-colindex="4">Company</span>
      <span role="columnheader" aria-colindex="9">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row">
      <span role="gridcell" aria-colindex="2">Fred</span>
      <span role="gridcell" aria-colindex="3">Jackson</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1234</span>
    </div>
    <div role="row">
      <span role="gridcell" aria-colindex="2">Sara</span>
      <span role="gridcell" aria-colindex="3">James</span>
      <span role="gridcell" aria-colindex="4">Acme, Inc.</span>
      <span role="gridcell" aria-colindex="9">555-1235</span>
    </div></div>
</div>
특성:
특성
사용 가능한 역할:
상속 가능한 역할:
값: 정수(integer)

aria-colindextext property

정의합니다 aria-colindex의 사람이 읽기 쉬운 텍스트 대체값입니다. 관련 속성: aria-rowindextext.

저자는 가능하면(SHOULD) aria-colindex의 값이 의미 없거나 실제 화면 표시 인덱스를 반영하지 않을 때(예: 스프레드시트, 체스 보드 등)만 aria-colindextext를 사용해야 합니다.

일부 보조 기술은 사용자의 위치 추적이나 다른 테이블 내비게이션 지원을 위해 수치 형태 열 인덱스에 의존하므로, aria-colindex 대신 aria-colindextext만을 사용해서는 안됩니다(SHOULD NOT).

참고

aria-colindex와 달리, aria-colindextextrow 속성에 지원되지 않습니다. 왜냐하면 사용자 에이전트가 그 값을 cell이나 gridcell에서 노출할 때 신뢰성 있게 산출할 방법이 없기 때문입니다.

특성:
특성
사용 가능한 역할:
상속 가능한 역할:
값: 문자열(string)

aria-colspan property

정의합니다 셀 또는 gridcell이 table, grid, treegrid에서 몇 개의 열을 걸치는지 나타냅니다. 관련 속성: aria-colindex, aria-rowspan 참고.

속성은 네이티브 테이블에 포함되지 않은 셀, gridcell에 사용합니다. 네이티브 테이블 내 colspan 지정 시에는 가능하면(SHOULD) aria-colspan 대신 호스트 언어의 속성을 사용해야 입니다. 만약 해당 요소에 호스트 언어에 동등한 속성이 있다면, 사용자 에이전트반드시(MUST) aria-colspan의 값을 무시하고, 호스트 언어 속성 값을 보조 기술에 노출해야 합니다.

저자는 반드시(MUST) aria-colspan 을 1 이상(정수)이고, 같은 행 내 다음 셀과 겹치지 않을 값을 지정해야 합니다.

특성:
특성
사용 가능한 역할:
상속 가능한 역할:
값: 정수(integer)

aria-controls property

현재 요소가 제어하는 요소(들)의 내용 또는 존재를 지정합니다. 관련 속성: aria-owns.

예시:

  • 목차 트리 뷰가 인접 문서 창의 콘텐츠를 제어할 수 있음
  • 체크박스 그룹이 표나 그래프에서 실시간으로 추적하는 품목 가격을 제어할 수 있음
  • 탭이 해당 탭 패널의 표시를 제어함
특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: ID reference list

aria-current state

컨테이너 또는 관련 요소 집합 내에서 현재 항목을 나타내는 요소임을 나타냅니다.

aria-current 속성은 토큰 타입입니다. 허용된 값 목록에 없는 경우, 보조 기술은 해당 값이 true인 것처럼 처리해야 합니다(SHOULD). 속성이 없거나 빈 문자열, undefined일 경우 기본 false 값이 적용되며, aria-current 상태를 사용자 에이전트나 보조 기술이 노출해서는 안됩니다(MUST NOT).

aria-current 속성은 연관된 여러 요소 중 시각적으로 현재 항목임을 표시하려는 경우에 사용합니다. 예:

  • page 토큰: 여러 페이지 중 현재 페이지임을 시각적으로 표시
  • step 토큰: 단계 기반 프로세스에서 현재 단계를 시각적으로 표시
  • location 토큰: 플로우 차트 등 내에서 현재 위치임을 시각적으로 표시
  • date 토큰: 달력 등에서 현재 날짜로 표시
  • time 토큰: 시간표 등에서 현재 시간임을 시각적으로 표시

저자는 하나의 집합 내 한 요소에만 aria-current를 사용하는 것이 좋습니다(SHOULD).

aria-selected가 동일 용도로 사용되는 위젯에서는 aria-current를 대신 사용해서는 안됩니다(SHOULD NOT). 예를 들어 tablist에서 현재 표시되는 tabpanel을 나타내기 위해서는 tabaria-selected를 사용해야 합니다.

참고

aria-selected를 지원하는 위젯 중 일부에서는 현재와 선택 상태가 의미가 다르며, 두 가지 상태가 하나의 요소 집합 내에서 동시에 사용될 수 있습니다. 예를 들어 내비게이션 tree에서는 aria-current="page"로 현재 표시 중인 페이지를 알릴 수 있고, aria-selected="true"는 사용자가 선택 시 표시될 페이지임을 나타냅니다. 또한, 같은 트리에서 "delete", "move" 등 옵션이 포함된 컨텍스트 메뉴를 통해 여러 개의 선택 항목을 조작할 수 있습니다.

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: 토큰(token)
값:
설명
page 여러 페이지 중 현재 페이지를 나타냅니다.
step 프로세스에서 현재 단계를 나타냅니다.
location 환경 또는 맥락에서 현재 위치를 나타냅니다.
date 날짜 모음 내에서 현재 날짜임을 나타냅니다.
time 시간 모음 내에서 현재 시간임을 나타냅니다.
true 집합 내 현재 항목임을 나타냅니다.
false (기본값) 집합 내 현재 항목이 아님을 나타냅니다.

aria-describedby property

식별합니다 해당 요소(또는 요소들)는 객체를 설명합니다. 관련 aria-labelledbyaria-description.

aria-labelledby 속성은 aria-describedby와 유사하며, 둘 다 텍스트 대체(각각 접근 가능한 이름 및 설명)를 계산하기 위해 다른 요소를 참조합니다. 간결한 접근 가능한 이름이 바람직하지만, 설명은 간결할 수도 있고 더 자세한 정보를 제공할 수도 있습니다.

aria-describedby로 참조되는 요소(또는 요소들)는 전체 설명을 구성합니다. 필요한 경우 여러 요소에 대한 ID 참조를 포함하거나, ID로 참조된 요소로 요소 집합(예: 문단)을 둘러싸세요.

특성:
특성
관련 개념:
사용 가능한 역할: 기본 마크업의 모든 요소
값: ID reference list

aria-description property

현재 요소를 설명하거나 주석을 다는 문자열 값을 정의합니다. 관련 속성: aria-describedby.

aria-description 속성은 aria-label과 비슷하게 두 속성 모두 요소와 연결되는 단일 문자열(접근 가능한 설명 또는 이름)을 제공합니다. 접근 가능한 이름은 일반적으로 간결한 것이 선호되지만, 설명은 필요에 따라 더 자세한 정보를 제공할 수 있습니다.

aria-description의 목적은 aria-describedby와 동일합니다. 객체에 대한 추가 설명 텍스트를 사용자에게 제공합니다. 가장 일반적인 접근성 API 매핑은 accessible description 속성입니다. 사용자 에이전트는 접근 가능한 설명을 계산할 때 aria-describedbyaria-description보다 우선적으로 사용해야 합니다(MUST).

시각적으로 설명을 제공하는 것이 원하지 않는 사용자 경험일 때 저자는 할 수 있습니다(MAY) aria-description을 사용하여 요소의 접근 가능한 설명을 설정할 수 있습니다. 그러나 설명 텍스트가 DOM에 존재한다면 저자는 aria-description를 사용하지 않아야 합니다(SHOULD NOT). 대신 아래 방법 중 하나로 제공해야 합니다:

  • 관련 설명이나 주석 요소가 간단하고 짧으며 평문 문자열로 제공하는 것이 최적이라면 저자는 해야 합니다(SHOULD) aria-describedby를 사용해야 합니다.
  • 관련 설명이나 주석 요소에 유용한 시맨틱 또는 구조가 포함되어 있거나, 내용이 많아서 평문 문자열로 제공이 어렵다면 저자는 해야 합니다(SHOULD) aria-details를 사용해야 합니다. aria-details를 사용하면 보조기술 사용자가 구조화된 콘텐츠를 방문하고 추가 탐색 명령을 사용할 수 있어 정보를 구조적으로 이해하거나 부분적으로 확인하기 쉽습니다.
특성:
특성
관련 개념:
사용 가능한 역할: 기본 마크업의 모든 요소
값: 문자열(string)

aria-details property

이 객체와 관련된 추가 정보를 제공하는 요소(들)을 지정합니다. 관련 속성: aria-describedby.

aria-details 속성은 일반적으로 aria-describedby로 제공되는 것보다 더 자세한 정보를 제공하는 요소를 참조할 때 사용합니다. aria-details가 있으면 보조 기술이 추가 정보의 존재를 사용자에게 알리고, 해당 정보를 탐색하도록 할 수 있습니다. 저자는 참조된 요소가 모든 사용자에게 보이도록 해야 합니다(SHOULD).

보조 기술은 aria-details가 참조하는 요소의 역할(role)을 활용해 사용자가 그 정보의 종류를 쉽게 이해할 수 있게 도울 수 있습니다. 저자는 다음과 같이 요소와 연관된 정보 타입을 전달할 수 있습니다:

  • 댓글: aria-detailscomment 역할인 요소를 참조함.
  • 용어 정의: aria-detailsterm 역할인 요소에 적용되고, definition 역할인 요소를 참조함.
  • 캡션: aria-detailsfigure 역할인 요소에 적용되고, caption 역할인 요소(또는 caption 내의 요소)를 참조함.
  • 각주: aria-detailsdoc-footnote 역할인 요소를 참조함. 이 역할은 [DPUB-ARIA-1.0]에 정의됨.
  • 후주: aria-detailsdoc-endnote 역할인 요소를 참조함. 이 역할은 [DPUB-ARIA-1.0]에 정의됨.
  • 설명 또는 일반적인 주석: aria-details는 그 외의 임의의 역할을 가진 요소를 참조함.

aria-describedby가 참조하는 요소와 달리, aria-details가 참조하는 요소는 Accessible Name and Description 명세의 Accessible Description Computation에 포함되지 않습니다. 따라서 assistive technology 사용자에게 제시될 때 그 내용이 문자열로 평탄화되지 않습니다. 정보가 평문 문자열로 변환될 경우 정보 손실이 발생하거나 이해가 어려워질 때 aria-details가 특히 유용하게 사용됩니다.

aria-details 속성은 여러 요소를 참조할 수 있습니다. 예를 들어, 문서 편집기에서 하나의 단락이 서로 관련 없는 여러 댓글을 참조할 수 있습니다. 만약 사용자 에이전트가 여러 설명 관계를 노출할 수 없는 접근성 API를 사용한다면, 첫 번째로 참조된 요소만 노출해야 합니다(SHOULD).

한 요소가 aria-detailsaria-describedby 또는 aria-description으로 지정된 설명을 모두 가질 수 있습니다. 만약 여러 설명 관계를 노출할 수 없는 접근성 API를 사용하는 사용자 에이전트에서 aria-detailsaria-describedby가 모두 존재한다면, user agent는 aria-details 관계와 aria-describedby에서 계산된 설명 문자열을 모두 노출해야 합니다(SHOULD).

aria-details의 대표적인 용도는 전자출판 등에서 구조 마크업이나 다른 기술을 임베드해서 설명이 확장되어야 하는 경우입니다. 다음 예시는 이런 상황을 보여줍니다.

<!-- 확장 설명 제공 -->
<img src="pythagorean.jpg" alt="피타고라스의 정리" aria-details="det">
<details id="det">
  <summary>예시</summary>
  <p>
    피타고라스의 정리는 유클리드 기하학에서 직각삼각형의 세 변 사이의 관계로, 빗변의 제곱은 두 직각변의 제곱의 합과 같습니다.
  </p>
  <p>
    다음 그림은 피타고라스 정리가 스케이트보드 경사로를 설계할 때 어떻게 적용되는지 보여줍니다.
  </p>
  <object data="skatebd-ramp.svg"  type="image/svg+xml"></object>
  <p>
    이 예에서 스케이트보드 램프의 폭과 높이가 각각 주어졌을 때, 램프의 길이를 구하려면 밑변 길이를 제곱하고, 램프 높이를 제곱하여 두 값을 더한 후, 그 합의 제곱근을 구하면 됩니다.
  </p>
</details>

또는, 다음 예시와 같이 aria-details가 확장 설명이 있는 웹 페이지 링크를 참조할 수도 있습니다.

<!-- 확장 설명 제공 -->
<img src="pythagorean.jpg" alt="피타고라스의 정리" aria-details="det">
<p>
  피타고라스의 정리 활용 예시를 확인하세요.
</p>
특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: ID 참조 목록(ID reference list)

aria-disabled state

해당 요소가 인지할 수 있으나(보임/접근 가능) 비활성(disabled) 상태임을 나타내며, 따라서 편집 또는 그 밖의 조작(operable)이 불가합니다. 관련 속성: aria-hidden, aria-readonly.

예를 들어, 라디오 그룹의 관련 없는 옵션을 비활성화할 수 있습니다. 비활성 요소는 tab 순서에서 포커스를 받지 못할 수 있습니다. 일부 비활성 요소의 경우, 앱에서 자손 탐색도 지원하지 않을 수 있습니다. aria-disabled 속성을 추가할 때 저자는 항목이 비활성 상태임을 외관상(회색 처리 등) 반드시 표시해야 합니다(SHOULD).

비활성 상태는 aria-disabled가 적용된 요소와, 해당 요소의 모든 포커스 가능한 자식에게 함께 적용됩니다.

참고

aria-disabled와 적절한 스크립트만으로 link 역할을 가진 요소를 비활성화할 수 있긴 하지만, 호스트 언어로 비활성 기능을 지원하는 요소에서 완벽히 비활성화하는 것은 어려울 수 있으니, 저자는 호스트 언어 자체로 비활성화가 불가능한 요소에는 aria-disabled 사용을 권장하지 않습니다.

참고: columnheader, rowheader, row에서의 사용

aria-disabled는 현재 columnheader, rowheader, row에서 지원되지만, 앞으로는 grid 또는 treegrid 맥락에서만 허용될 계획입니다.

참고

이 상태는 ARIA 1.2에서 글로벌 상태로는 deprecated될 예정입니다. 앞으로는 특정 역할에서만 허용됩니다.

특성:
특성
사용 가능한 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 요소가 활성화되어 있습니다.
true 요소와 모든 포커스 가능한 자손이 비활성 상태이며 사용자가 값을 바꿀 수 없습니다.

aria-dropeffect property

[ARIA 1.1에서 deprecated] 끌어서 놓기를 할 때 드롭 대상에 놓이면 어떤 동작(기능)이 실행될지 나타냅니다.

참고

aria-dropeffect 속성은 앞으로 WAI-ARIA 차기 버전에서 새로운 기능으로 대체될 예정입니다. 따라서 저자들은 aria-dropeffect폐지(deprecated)된 것으로 간주해야 합니다.

속성은 보조 기술이 사용 가능한 드래그 옵션(예: 앱에서 제공하는 팝업 메뉴 여부 등)을 사용자에게 안내할 수 있게 합니다. 일반적으로, 드롭 효과는 객체가 드래그 중일 때만 제공되며, 이는 끌려온 객체에 따라 사용 가능한 드롭 동작이 다르기 때문입니다.

하나의 요소는 여러 드롭 효과를 가질 수 있습니다. 따라서 이 속성의 값은 가능한 동작을 공백으로 분리한 토큰 세트이거나, 지원 가능한 동작이 없으면 none입니다. aria-dropeffect 속성 설정과 더불어, 저자는 시각적으로 드롭 가능 대상임을 표시해야 합니다(SHOULD).

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: 토큰 목록(token list)
값:
설명
copy 원본 객체의 복제본이 대상에 드롭됩니다.
execute 드롭 대상에서 지원하는 기능이 드래그 원본을 입력으로 실행됩니다.
link 드래그된 객체에 대한 참조(바로가기 등)가 대상 객체에 생성됨.
move 원본 객체가 현재 위치에서 제거되고 대상에 드롭됩니다.
none (기본값) 실행 가능한 동작이 없음; 이 객체에 드롭 시 끌기로 인한 동작은 취소됨. 다른 토큰값과 조합될 경우 무시됨(예: 'none copy'는 'copy'와 같음).
popup 사용자에게 복사, 이동, 링크, 실행 등 드래그 동작을 선택할 수 있는 팝업 메뉴 또는 다이얼로그가 제공됨.

aria-errormessage property

해당 객체에 대한 오류 메시지를 제공하는 요소(들)을 지정합니다. 관련 속성: aria-invalid, aria-describedby.

aria-errormessage 속성은 오류 메시지 텍스트가 들어있는 다른 요소를 참조합니다. 저자는 aria-invalid와 함께 aria-errormessage반드시 사용해야 합니다(MUST).

객체의 값이 유효하지 않을 때 aria-invalidtrue로 지정하면, aria-errormessage가 참조하는 요소의 메시지가 관련 있음이 나타납니다.

객체가 유효 상태일 때는 aria-invalidfalse이거나 아예 속성을 가지지 않을 수 있습니다. 저자는 객체가 현재 유효한 경우에도 aria-errormessage를 사용할 수 있습니다(MAY). 단, aria-errormessage가 참조하는 요소가 모든 사용자에게 숨김(hidden)이어야 합니다. 왜냐하면 그 메시지는 관련이 없기 때문입니다.

aria-errormessage가 관련 있을 때 저자는 반드시(MUST) 그 내용이 모든 사용자에게 숨김이 아니어서 사용자가 오류 메시지에 접근/탐색할 수 있게 해야 합니다. 반대로 관련이 없으면 반드시(MUST) 해당 콘텐츠가 모든 사용자에게 숨김이거나, aria-errormessage 속성/값 자체를 제거해야 합니다.

사용자 에이전트는 aria-invalid의 값이 false인 객체에 대해 aria-errormessage를 노출해서는 안됩니다(MUST NOT).

저자는 새롭게 렌더링된 오류 메시지에 aria-live 속성 또는 라이브 리전 역할 (예: alert)을 적용해 실시간 안내를 할 수 있습니다(MAY). 라이브 리전은 유효하지 않은 값을 입력한 후 사용자가 오류 메시지를 즉시 받을 필요가 있을 때 적합합니다.

일반적인 오류 메시지는 무엇이 잘못되었는지 설명하고 사용자의 입력이 어떻게 되어야 하는지 안내합니다. 예를 들어, 잘못된 시간: 시간은 오전 9시~오후 5시 사이여야 합니다. 등입니다. 아래 예시는 초기 유효 상태와 나중에 유효하지 않은 상태의 마크업을 보여줍니다. text input 객체aria-invalid와, 오류 텍스트를 가진 aria-live의 변화를 주목하세요:

<!-- 초기 유효 상태 -->
<label for="startTime"> 회의 시작 시간을 입력해주세요: </label>
<input id="startTime" type="text" aria-errormessage="msgID" value="" aria-invalid="false">
<span id="msgID" aria-live="assertive"><span style="visibility:hidden">잘못된 시간: 시간은 오전 9시~오후 5시 사이여야 합니다</span></span>

<!-- 사용자가 유효하지 않은 값을 입력한 경우 -->
<label for="startTime"> 회의 시작 시간을 입력해주세요: </label>
<input id="startTime" type="text" aria-errormessage="msgID" aria-invalid="true" value="11:30 PM" >
<span id="msgID" aria-live="assertive"><span style="visibility:visible">잘못된 시간: 시간은 오전 9시~오후 5시 사이여야 합니다</span></span>
참고

이 예는 aria-live="assertive"로 보조 기술이 오류 메시지를 즉시 알리도록 합니다. 사용자가 입력 포커스를 옮기기 전에 오류 메시지를 듣게 하여 인지 확률을 높입니다.

참고

이 상태는 ARIA 1.2에서 전역 상태로는 deprecated되고, 앞으로는 특정 역할에서만 허용될 예정입니다.

특성:
특성
사용 가능한 역할:
상속되는 역할:
값: ID 참조 목록(ID reference list)

aria-expanded state

이 요소가 제어하거나 접근성 자식인 그룹핑 요소가 펼쳐져 있는지(확장) 또는 접혀 있는지(축소) 여부를 나타냅니다.

aria-expanded 속성은 다른 요소의 콘텐츠 표시 여부를 토글하는 포커스 가능, 인터랙티브 요소에 사용됩니다. 예를 들어, 루트 treeitem에 적용되어 자식 브랜치가 보이는지 나타내거나, 특정 섹션을 토글하는 button에도 적용할 수 있습니다.

확장 또는 축소 가능한 그룹 컨테이너가 접근성 자식이 아닌 경우, aria-expanded 속성을 가진 요소에서 aria-controls로 컨테이너를 참조해 제어관계를 표현해야 합니다(SHOULD).

특성:
특성
사용 가능한 역할:
상속되는 역할:
값: true/false/undefined
값:
설명
false 이 요소가 제어하거나 부모인 그룹핑 요소가 닫혀 있습니다(축소).
true 이 요소가 제어하거나 부모인 그룹핑 요소가 열려 있습니다(확장).
undefined (기본값) 이 요소가 확장 가능한 그룹핑 요소를 소유하거나 제어하지 않습니다.

aria-flowto property

지정합니다 사용자의 선택에 따라 보조 기술이 문서 소스 순서의 기본 읽기 순서를 무시할 수 있도록, 콘텐츠의 대체 읽기 순서에서 다음 요소(들)를 지정합니다.

aria-flowto가 하나의 ID 참조만 포함될 때는, 보조 기술이 사용자의 요청에 따라 일반 문서 읽기 순서를 건너뛰고 해당 객체로 이동할 수 있도록 합니다. 하지만 aria-flowto가 여러 ID 참조를 가진 경우, 보조 기술은 SHOULD 참조된 요소들을 경로 선택지로 제시해야 합니다.

ID 참조가 하나 이상일 때, 사용자 에이전트나 보조 기술은 SHOULD 사용자에게 타겟 요소 중 아무 곳이나 탐색할 수 있는 선택권을 제공해야 합니다. 경로의 이름은 aria-flowto 속성의 타겟 요소 이름을 따를 수 있습니다. 접근성 API는 명명된 경로 관계를 제공할 수 있습니다.

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: ID 참조 목록

aria-grabbed state

[ARIA 1.1에서 폐지됨] 드래그 앤드 드롭 작업에서 요소가 "잡힌(grabbed)" 상태임을 나타냅니다.

참고

aria-grabbed 상태는 향후 WAI-ARIA 버전의 새로운 기능로 대체될 예정입니다. 저자들은 aria-grabbed폐지된(deprecated) 상태로 간주해야 합니다.

aria-grabbedtrue로 설정하면 요소가 드래그를 위해 선택되었음을 나타냅니다. aria-grabbedfalse로 설정하면 해당 요소가 드래그 앤드 드롭을 위해 잡을 수 있으나 현재는 잡혀 있지 않음을 의미합니다. aria-grabbed가 지정되지 않거나 undefined(기본값)인 경우에는 요소를 드래그 할 수 없음을 의미합니다.

aria-grabbedtrue로 지정하면 저자는 aria-dropeffect 속성을 모든 잠재적 드롭 대상에 대해 SHOULD 업데이트해야 합니다. 요소가 잡히지 않은 상태(false 또는 undefined, 속성 제거)에서는 관련 드롭 대상의 aria-dropeffect 속성을 none으로 되돌려야 SHOULD 합니다.

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: true/false/undefined
값:
설명
false 요소가 드래그될 수 있음을 나타냅니다.
true 요소가 드래그를 위해 "잡힌" 상태임을 나타냅니다.
undefined (기본값) 요소가 드래그될 수 없음을 나타냅니다.

aria-haspopup property

사용자가 트리거할 수 있는 메뉴나 대화상자와 같은 인터랙티브 팝업 요소의 유형 및 존재 여부를 나타냅니다.

팝업 요소는 보통 다른 콘텐츠 위에 표시되는 블록으로 나타납니다. 저자는 팝업 콘텐츠를 담는 요소의 role이 menu, listbox, tree, grid, dialog 중 하나여야 하며, aria-haspopup의 값이 팝업 컨테이너 역할과 일치해야 합니다(MUST).

팝업 요소가 키보드로 접근 가능하려면 저자는 팝업을 트리거하는 요소가 포커스 가능하고, 팝업을 여는 키보드 조작 방법이 있으며, 팝업 내 모든 자식의 포커스가 Managing Focus 설명처럼 관리되도록 해야 합니다(SHOULD).

aria-haspopup 속성은 토큰 타입입니다. 사용자 에이전트는 허용된 값 목록에 없는 모든 값(빈 문자열 포함)을 false로 간주해야 합니다(MUST). ARIA 1.0 하위 호환성을 위해 aria-haspopup값이 true이면 menu와 동일하게 취급해야 합니다(MUST).

보조 기술 및 사용자 에이전트는 값이 false이면 aria-haspopup 속성을 노출하지 않아야 합니다(SHOULD NOT).

참고

tooltip은 본 문맥에서 팝업으로 보지 않습니다.

참고

aria-haspopup는 팝업을 트리거하는 요소에 시각적 표시가 있을 때 가장 적절하게 사용됩니다. 예를 들어, 아래쪽 삼각형, 꺽쇠, 또는 점 세 개(⋯)와 같이 팝업 표시를 알리는 표준 아이콘이 많이 쓰입니다. 만일 시각적 스타일로 구분되는 기능 차이가 있다면, 보조 기술 사용자에게도 해당 차이를 전달해야 합니다. 시각적으로 팝업 트리거임을 알리는 표시가 없다면 굳이 aria-haspopup을 사용할 필요가 있는지 검토하고, 불필요할 땐 사용하지 않는 것이 좋습니다.

참고

이 속성은 ARIA 1.2에서 전역 속성으로는 폐지 예정입니다. 향후 특정 역할에서만 사용 가능합니다.

특성:
특성
관련 개념:
사용 가능한 역할:
상속 가능한 역할:
값: 토큰(token)
값:
설명
false (기본값) 해당 요소에 팝업이 없음을 나타냅니다.
true 팝업이 menu임을 나타냅니다.
menu 팝업이 menu임을 나타냅니다.
listbox 팝업이 listbox임을 나타냅니다.
tree 팝업이 tree임을 나타냅니다.
grid 팝업이 grid임을 나타냅니다.
dialog 팝업이 dialog임을 나타냅니다.

aria-hidden state

요소가 접근성 API에 노출되는지 여부를 나타냅니다. 관련 속성: aria-disabled.

사용자 에이전트는 요소의 숨김(hidden) 상태를 해당 요소가 렌더링 되었는지 여부로 판단하며, 이는 주로 CSS에 의해 제어됩니다. 예를 들어, displaynone인 경우 해당 요소는 렌더링되지 않습니다. 요소 또는 그 조상이 렌더링되지 않거나 aria-hidden 값이 true이면 숨김으로 간주합니다.

저자는 주의하여 aria-hidden을 사용해 시각적으로 렌더링된 콘텐츠를 보조 기술에서 숨길 수 있습니다. 이때는 불필요하거나 중복된 콘텐츠 제거 등 보조 기술 사용자의 경험 개선이 목적인 경우에만 사용해야 하며, aria-hidden으로 콘텐츠를 스크린리더에서 숨기면 동일하거나 동등한 의미와 기능을 보조 기술에 반드시 노출해야 합니다(MUST).

참고

시각적으로 표시된 콘텐츠를 보조 기술에서 숨길 때는 장애 유형을 충분히 고려해야 합니다. 예컨대, 시력이 있으나 손이 불편한 분이 시각 인터페이스에 음성 기반 보조 기술을 사용하는 경우가 있는데, 만약 "장바구니로 이동" 링크 텍스트를 aria-hidden으로 숨기고 "지금 결제"와 같이 비슷하지만 같은 것은 아닌 텍스트만 노출하면 사용자가 원하는 컨트롤에 접근하지 못할 수 있습니다. 시각장애인도 비슷한 문제를 경험할 수 있습니다. 예를 들어, 시력 있는 서비스센터 직원이 스크린리더 사용자에게 "장바구니로 이동"을 클릭하라고 안내하면 사용자는 빠른 문자 탐색(“장바...”)으로 해당 링크를 못 찾을 수도 있습니다.

참고

작성일 기준, aria-hidden="false" 는 브라우저마다 동작에 차이가 있음이 알려져 있습니다. 향후 브라우저가 개선될 때까지는 주의 깊게 테스트하는 것이 좋습니다.

특성:
특성
사용 가능한 역할: 기본 마크업의 모든 요소
값: true/false/undefined
값:
설명
false 해당 요소가 접근성 API에 렌더링된 것처럼 노출됩니다.
true 해당 요소가 접근성 API숨김 처리됩니다.
undefined (기본값) 요소의 숨김 상태는 에이전트가 렌더링 유무로 판단합니다.

aria-invalid state

입력한 값이 응용 프로그램에서 기대하는 형식에 맞지 않음을 나타냅니다. 관련 속성: aria-errormessage.

값이 잘못되었거나 범위를 벗어난 것으로 계산됐다면, 응용 프로그램 저자는 SHOULD 이 속성 값을 true로 설정해야 합니다. 사용자 에이전트SHOULD 오류를 사용자에게 알리는 것이 좋습니다. 저자는 SHOULD 교정에 도움이 되는 안내도 제공해야 합니다.

aria-requiredtrue인 필드에 대해 사용자가 제출을 시도할 때 MAY aria-invalid로 오류를 알릴 수 있습니다. 단, 사용자가 아직 데이터를 입력하지 않았다면 저자는 SHOULD NOT 필수 위젯에 단순히 값이 비어 있다는 이유로 aria-invalid를 설정하지 않아야 합니다.

확장성을 위해 aria-invalid는 토큰 타입입니다. 허용값 목록에서 인식되지 않는 모든 값은 true와 동일하게 처리해야 합니다(MUST). 속성이 없거나, 값이 false 또는 빈 문자열이면, false가 기본값입니다.

참고

이 상태는 ARIA 1.2에서 글로벌 상태로는 폐지될 예정입니다. 앞으로 특정 역할에서만 사용 가능합니다.

특성:
특성
사용 가능한 역할:
상속되는 역할:
값: 토큰(token)
값:
설명
grammar 문법 오류가 발견됨을 나타냅니다.
false (기본값) 값에 오류가 없습니다.
spelling 맞춤법 오류가 발견됨을 나타냅니다.
true 사용자가 입력한 값이 유효성 검사를 통과하지 못했음을 나타냅니다.

aria-keyshortcuts property

저자가 요소를 활성화하거나 포커스를 주도록 구현한 키보드 단축키를 정의합니다.

aria-keyshortcuts 속성의 값은 공백으로 구분된 여러 개의 키보드 단축키 리스트입니다. 각각의 단축키는 명령이나 텍스트박스 위젯을 활성화할 때 사용할 수 있습니다. 단축키에 정의된 key는 실제 눌리는 물리적인 키를 의미하며, 생성되는 문자와 동일할 필요는 없습니다. 각 키 단축키는 하나 이상의 토큰(플러스 기호 "+"로 구분)으로 이루어지고, 0개 이상의 수정키와 반드시 1개의 비수정키로 이루어집니다. 이 키들은 동시에 눌러야 해당 단축키가 동작합니다.

저자는 MUST UI Events KeyboardEvent key Values 명세에 따라 수정키("Alt", "Control", "Shift", "Meta", "AltGraph" 등)를 정확히 지정해야 합니다. Meta는 맥의 Command 키, Alt는 Option 키입니다.

비수정키는 "A", "B", "1", "2", "$", "Plus"("+" 기호), "Space"(스페이스바) 등의 인쇄 가능 문자이거나, 또는 uievents-key 명세에 있는 "Enter", "Tab", "ArrowRight", "PageDown", "Escape", "F1" 등을 적용할 수 있습니다. 스페이스바는 값 "Space"로 지정하는데, 이 값은 명세와 달리 공백 문자(공간 " ")가 아닌 특별히 정의된 예외입니다.

저자는 MUST 단축키에 수정키가 포함된 경우 먼저 적고, 필수 비수정키가 마지막에 오도록 해야 합니다. 수정키 순서는 상관없으나, "T+Shift+Alt"와 같이 비수정키가 앞에 나오면 안 되고, 수정키 없이 "Alt"만 있는 것도 유효하지 않습니다.

영문 알파벳 키 지정 시, 대문자/소문자는 동일하게 취급합니다: "a"와 "A"는 같습니다.

단축키 구현 시 지원할 키보드 환경을 고려하여 예기치 않은 결과를 피해야 합니다. 키보드 종류/배열에 따라 수정키와 결합해 특수문자를 입력하거나, 언어 전환 등 다양한 기능이 구현될 수 있기 때문입니다.

많은 키보드에서, 숫자 및 일반 기호는 수정키와 조합해야 하므로 단순 알파벳만 사용하는 것이 충돌 방지에 도움될 수 있습니다. 프랑스어 키보드에선 숫자를 입력하기 위해 Control 키가 필요하므로, 예를 들어 "Control+2" 단축키는 모호함이 발생할 수 있습니다.

수정키로 생성되는 문자를 지정할 땐, 실제 입력에 사용되는 키를 써야 하며, 최종 결과 문자로 지정하면 안 됩니다. 예를 들어 미국 키보드에서 "%"는 Shift+5 조합이므로 "Shift+5"로 지정해야 하며, "%" 또는 "Shift+%"로 해서는 안 됩니다. 다른 국가 키보드에서는 "%" 자체가 수정키 없이 입력 가능한 경우가 있어 상황에 따라 맞게 적용해야 합니다.

호스트 언어에서 해당 키를 직접 쓸 수 없거나 문자열이 잘릴 우려가 있다면, 호스트 언어의 이스케이프 시퀀스를 사용해야 합니다(MUST). 예: 작은따옴표(‘)는 HTML에서 "&#39;"로 인코딩합니다.

유효한 키보드 단축키 예시:

  • "A"
  • "Shift+Space"
  • "Control+Alt+."
  • "Control+Shift+&#39;"
  • "Alt+Shift+P Control+F"
  • "Meta+C Meta+Shift+C"

사용자 에이전트는 aria-keyshortcuts 속성 값에 따라 키 이벤트 동작을 변경하면 안 됩니다(MUST NOT). 저자 MUST가 직접 키 이벤트를 처리해야 하며, aria-keyshortcuts 정보만으로 보조기술이 사용자에게 해당 단축키 존재를 알릴 수 있습니다.

저자는 모든 사용자가 단축키 정보를 알 수 있도록 툴팁 등 방법을 제공하는 것이 좋습니다(SHOULD). aria-keyshortcuts가 비활성화된 요소에 적용될 때 활용 불가능함을 보장해야 합니다(MUST).

운영체제, 브라우저, 보조기술에서 이미 쓰는 단축키와 충돌을 피하기 위해 키와 사용 조건, 맥락을 신중히 고려하는 것이 좋습니다(SHOULD). 자세한 내용은 WAI-ARIA Authoring Practices의 단축키 섹션 참고.

단축키가 각 언어 및 키보드 배열별로 유효한지 고려하고, 현지화(로컬라이즈)도 검토해야 좋습니다(SHOULD).

특성:
특성
관련 개념:
사용 가능한 역할: 기본 마크업의 모든 요소
값: 문자열(string)

aria-label property

현재 요소를 라벨링하는 문자열 값을 정의합니다. 관련 속성: aria-labelledby.

aria-label의 목적은 aria-labelledby와 동일합니다. 사용자에게 객체의 인식 가능한 이름을 제공합니다. 라벨의 가장 일반적인 접근성 API 매핑은 접근 가능한 이름 속성입니다.

대부분의 호스트 언어는 요소의 이름을 지정할 수 있는 속성(예: title 속성, HTML에서)을 제공합니다. 하지만 이는 브라우저 툴팁을 나타낼 수 있어서, DOM 콘텐츠나 툴팁이 원하지 않는 경우 저자는 요소가 금지 속성이 아니라면 aria-label로 접근 가능한 이름을 지정할 수 있습니다(MAY). 라벨 텍스트가 DOM에 있다면(즉, 일반적으로 화면에 보이는 텍스트), 저자는 반드시 aria-labelledby를 사용해야 하며 반드시 aria-label을 사용하지 않아야 합니다(SHOULD NOT). 요소의 이름을 DOM에서 프로그래밍 방식으로 결정할 수 없는 경우, 또는 DOM 콘텐츠를 참조하는 것이 바람직하지 않은 상황이 있을 수 있습니다. 저자는 WAI-ARIA 역할이 명시적이거나 암시적으로 부여된 상태에서 aria-label금지된 경우 aria-label설정해서는 안 됩니다(MUST NOT). 접근 가능한 이름/설명 계산법에 따라, 사용자 에이전트는 접근 가능한 이름 산출 시 aria-labelledbyaria-label보다 우선적으로 처리합니다.

특성:
특성
사용되는 역할: 다음 역할을 제외한 기본 마크업의 모든 요소: caption, code, definition, deletion, emphasis, generic, insertion, mark, none, paragraph, strong, subscript, suggestion, superscript, term, time
값: string

aria-labelledby property

현재 요소를 라벨링하는 요소(들)을 지정합니다. 관련 속성: aria-label, aria-describedby.

aria-labelledby의 목적은 aria-label과 같으며, 사용자에게 객체의 인식 가능한 이름을 제공합니다. 라벨의 일반적인 접근성 API 매핑은 접근 가능한 이름 속성입니다.

인터페이스에 시각적 라벨을 나타낼 수 없는 경우 저자는 반드시 aria-label을 사용하고 반드시 aria-labelledby를 사용하지 않아야 합니다(SHOULD NOT). WAI-ARIA 역할이 명시적이거나 암시적으로 부여된 상태에서 aria-labelledby금지된 경우, 저자는 해당 속성을 설정해서는 안 됩니다(MUST NOT). 접근 가능한 이름/설명 계산법에 따라, 사용자 에이전트는 접근 가능한 이름 산출 시 aria-labelledbyaria-label보다 우선적으로 처리합니다.

aria-labelledby 속성은 aria-describedby와 비슷하며 모두 다른 요소를 참조하여 텍스트 대체값(접근 가능한 이름 혹은 설명)을 산출합니다. 접근 가능한 이름은 간결한 것이 바람직하지만, 설명은 간결할 수도 있고 더 자세할 수도 있습니다.

참고

이 속성의 미국 영어 표기는 "labeledby"가 기대되지만, 접근성 API 분야에서는 "labelledby" 표기가 널리 쓰입니다. 혼란을 막고 개발자 편의를 위해 이 표기로 제공됩니다.

특성:
특성
관련 개념:
사용되는 역할: 다음 역할을 제외한 기본 마크업의 모든 요소: caption, code, definition, deletion, emphasis, generic, insertion, mark, none, paragraph, strong, subscript, suggestion, superscript, term, time
값: ID reference list

aria-level property

요소가 구조 내에서 속하는 계층 수준을 정의합니다.

트리(trees)의 트리 아이템, 문서 내의 헤딩, 중첩된 그리드, 중첩된 탭리스트 그리고 컨테이너 안이나 계층 구조에 참여하는 그 밖의 구조적 항목에 적용할 수 있습니다. aria-level 값은 1 이상의 정수입니다.

깊이가 깊어질수록 level 값이 커집니다. 만약 DOM 상속 구조가 level을 정확하게 표현하지 않는다면 저자는 반드시 aria-level 속성을 명시적으로 지정해야 합니다.

이 속성은 집합 내에서 방향상 리프 노드로 작동하는 요소(예를 들어 group이 아닌 treeitem 역할)에서 사용됩니다. 즉, 한 집합 내 여러 요소가 이 속성 값으로 같은 값을 가질 수 있습니다. 컨테이너에 값을 한 번만 부여하는 것도 반복을 줄일 수 있지만, 리프 노드에만 제한함으로써 보조 기술이 속성을 일관되게 활용할 수 있습니다.

DOM 조상 구조가 level을 정확하게 표현하면 user agent가 문서 구조에서 항목의 level을 계산할 수 있습니다. 계산이 불가능한 경우(혹은 aria-owns 속성 사용 등)에는 이 속성을 활용하여 level을 명확히 지정할 수 있습니다. level 자동 계산 지원 여부는 에이전트마다 다르므로, 실제 사용자 에이전트와 보조 기술에서 이 속성이 필요한지 테스트해야 합니다(SHOULD). 자동 계산을 원하면 이 속성 자체를 생략하는 것이 좋습니다(SHOULD).

참고

treegrid인 경우, aria-level 속성은 gridcell이 아닌 row 역할 요소에 지정합니다. 이는 언뜻 보기엔 treeitem에 적용하는 방식과 달라보일 수 있으나, rowgrid의 세로 방향 리프 노드이며, gridcell은 각 row의 가로 방향 리프 노드가 되기 때문입니다. 행 내 셀 집합에는 level 속성을 지정하지 않으므로, aria-level 속성은 row 역할에 지정합니다.

참고

heading 역할 요소에서 aria-level 값이 6을 넘으면 사용에 어려움이 있습니다. 또한, 대부분의 사용자 에이전트 및 보조 기술은 heading에서 aria-level 정수 값 1~9까지만 지원합니다.

특성:
특성
사용되는 역할:
값: integer

aria-live property

해당 요소가 업데이트될 것임을 나타내며, user agents, 보조 기술, 그리고 사용자에게 라이브 리전에서 어떤 종류의 업데이트가 기대되는지 설명합니다.

속성은 중요도의 정도를 나타냅니다. 영역이 polite로 지정되면, 보조 기술은 사용자가 지금 하는 작업을 방해하지 않고 업데이트를 알리며 우선순위가 낮습니다. assertive로 지정되면 즉시 사용자에게 알리며 이전 업데이트의 음성 큐를 클리어할 수도 있습니다.

정중함 수준(politeness level)은 사실상 업데이트의 우선순위를 정하는 메커니즘이며, user agent 또는 보조 기술, 사용자에 의해 재정의될 수 있습니다. 예를 들어, 보조 기술이 업데이트가 키 입력이나 마우스 클릭에 응답한 것임을 감지하면, aria-live 값과 무관하게 변화를 즉시 알릴 수 있습니다.

사용자마다 필요가 다르므로 라이브 리전에 대한 보조기술의 반응은 개인의 환경설정에 의해 달라질 수 있습니다. 보조 기술은 큐와 인터럽트의 정도를 조정할 수 있게 해줄 수 있습니다.

propety가 업데이트를 보내는 객체에 지정되어 있지 않으면, 가장 가까운 조상에 지정된 aria-live 속성의 값을 따릅니다.

aria-live 속성은 라이브 리전 변경사항의 발표 순서를 결정하는 주된 기준입니다. 또한, role에서 설정된 디폴트 정중함 수준도 참고합니다(예: log는 기본적으로 polite). assertive 변경사항은 즉시, 그 다음 polite가 소개됩니다. assertive 변경 발생 시 보조 기술/브라우저는 큐된 내용을 모두 비울 수 있습니다.

라이브 리전이 polite로 지정되면 보조 기술은 업데이트를 다음 적절한 기회(현재 문장 말하기 끝, 혹은 사용자가 타이핑을 멈췄을 때 등)에 발표해야 합니다(SHOULD). assertive면 즉시 알려야 합니다(SHOULD). 인터럽트가 사용자를 혼란시키거나 현재 작업을 중단시킬 수 있으므로, 정말 필요한 경우가 아니면 assertive 값은 지양해야 합니다(SHOULD NOT).

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: token
값:
설명
assertive 영역의 업데이트가 가장 높은 우선순위를 갖고 즉시 사용자에게 알려야 함을 나타냅니다.
off (기본값) 이 영역의 업데이트는 사용자 포커스가 해당 영역에 있을 때만 알립니다.
polite 업데이트는 다음 적절한 기회(현재 문장 끝, 타이핑 멈춤 등)에 알립니다.

aria-modal property

요소가 표시될 때 모달(modal) 상태인지 나타냅니다.

aria-modal 속성은 "모달" 요소가 표시되면 페이지의 다른 콘텐츠 사용이 제한됨을 의미합니다. 예를 들어, 모달 다이얼로그가 표시되는 경우 사용자는 해당 다이얼로그가 포커스를 잃거나 사라질 때까지 다이얼로그 내부에서만 상호작용해야 합니다.

모달 요소가 표시될 때, 보조기술은 반드시 포커스가 다른 곳에 명시적으로 지정되어 있지 않다면 해당 요소로 이동해야 합니다(SHOULD). 일부 보조기술은 모달 요소 내부 탐색만 허용합니다. 포커스가 모달 요소 바깥으로 이동하면, 보조기술은 탐색 제한을 하지 않아야 합니다(SHOULD NOT).

모달 요소가 나타나면 저자는 반드시(MUST) 인터페이스가 모달의 자손만으로 제어될 수 있도록 보장해야 합니다. 예를 들어 모달 다이얼로그의 닫기 버튼은 반드시 다이얼로그의 하위에 있어야 합니다. 또한, 저자는 가급적(SHOULD) 다른 콘텐츠를 inert(HTML의 "inert subtree" 등)로 표시해야 합니다.

특성:
특성
사용되는 역할:
상속받는 역할:
값: true/false
값:
설명
false (기본값) 요소가 모달이 아닙니다.
true 요소가 모달입니다.

aria-multiline property

텍스트 박스가 여러 줄 입력을 허용하는지, 한 줄만 허용하는지를 나타냅니다.

참고

대부분의 사용자 에이전트에서 ENTER 또는 RETURN 키의 기본 동작은 HTML의 한 줄 입력란과 여러 줄 입력란에서 다르게 동작합니다. 한 줄 <input type="text"> 요소에 포커스가 있으면 해당 키 입력은 폼 제출 동작을 하고, 여러 줄 <textarea>에선 줄바꿈을 삽입합니다. WAI-ARIAtextbox 역할은 aria-multiline 속성으로 이 둘을 구분하므로, 필드 설계 시 이 차이를 유념해야 합니다.

특성:
특성
사용되는 역할:
상속받는 역할:
값: true/false
값:
설명
false (기본값) 한 줄 입력 텍스트 박스입니다.
true 여러 줄 입력 텍스트 박스입니다.

aria-multiselectable property

사용자가 현재 선택 가능한 자손 항목 중 둘 이상을 선택할 수 있음을 나타냅니다.

저자는 선택된 자손 항목에는 aria-selected 속성true로, 선택되지 않은 선택 가능 자손 항목에는 aria-selected 속성을 false로 설정해야 합니다(SHOULD). 선택 불가 자손에는 aria-selected지정하지 않아야 합니다(SHOULD NOT).

참고

리스트(list)나 트리(tree)는 한 번에 여러 항목 선택을 허용할 수 있는 역할의 예시입니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 하나의 항목만 선택할 수 있습니다.
true 이 위젯 내 여러 항목이 동시에 선택될 수 있습니다.

aria-orientation property

요소가 수평, 수직 또는 알 수 없음/모호함 중 어떤 방향(오리엔테이션)을 가지는지 나타냅니다.

참고

ARIA 1.1부터 aria-orientation의 기본값은 horizontal에서 undefined로 변경되었습니다. 일부 역할(slider는 디폴트가 수평, scrollbar는 수직 등)은 명확한 디폴트가 있지만(radiogroup 같은 모호한 역할도 있습니다.)

특성:
특성
사용되는 역할:
상속되는 역할:
값: token
값:
설명
horizontal 요소가 수평 방향입니다.
undefined (기본값) 요소 방향이 알 수 없음/모호함입니다.
vertical 요소가 수직 방향입니다.

aria-owns property

DOM 구조만으로 표현할 수 없는 시각적, 기능적, 맥락적 부모-자식 관계를 정의하기 위해 요소(들)를 지정합니다. 관련 속성: aria-controls.

aria-owns 속성의 값은 공백으로 구분되는 ID 참조 리스트이며, 문서 내 하나 이상의 요소 id를 참조합니다. aria-owns를 추가하는 목적은 DOM만으로 알 수 없는 부모-자식 관계를 보조 기술에 알리기 위함입니다.

한 요소에 aria-owns와 실제 DOM 자식이 모두 있을 경우, 부모-자식 관계의 순서는 DOM 자식 먼저, aria-owns 참조 요소가 그 뒤입니다. 만약 DOM 자식이 먼저 나오지 않기를 의도한다면, aria-owns 값에도 DOM 자식 id를 원하는 순서로 포함시키면 됩니다. 저자는 aria-owns를 DOM 계층 구조의 대체 수단으로 사용해서는 안 됩니다(SHOULD NOT). DOM 구조로 표현 가능한 관계라면 aria-owns를 쓰지 마세요.

저자는 한 시점에 한 요소의 id가 둘 이상의 aria-owns에 지정되지 않도록 반드시(MUST) 관리해야 합니다. 즉, 한 요소는 반드시 단 하나의 명시적 소유자만 가져야 합니다. 저자는 aria-owns로 순환참조가 생기지 않게 반드시(MUST NOT) 해야 합니다. 작성 오류가 있을 경우 사용자 에이전트는 일관된 모델 생성을 위해 일부 aria-owns 참조를 무시할 수 있습니다(MAY).

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: ID 참조 리스트

aria-placeholder property

컨트롤에 값이 없을 때 사용자를 돕기 위한 짧은 힌트(단어나 짧은 구)를 정의합니다. 예를 들어 예시 값이나 기대 포맷의 간단한 설명일 수 있습니다.

저자는 aria-placeholder를 라벨 대신 사용해서는 안 됩니다(SHOULD NOT). 두 개념은 다릅니다: 라벨은 어떤 정보를 입력해야 하는지 명시하고, placeholder는 예상되는 값에 대한 힌트입니다. 관련 속성: aria-labelledby, aria-label.

저자는 컨트롤 값이 빈 문자열일 때(예컨대 처음 포커스 받았거나, 사용자가 이전 값을 지운 경우 등) 이 힌트를 항상 사용자에게 보여야 합니다(SHOULD).

참고

관련 placeholder (HTML 속성)과 마찬가지로 placeholder를 라벨 대용으로 쓰면 노년층, 인지/운동/시각 장애 이용자 모두에게 접근성과 사용성이 저하될 수 있습니다. 라벨(힌트)은 항상 표시되지만 placeholder 힌트는 입력 전이나 값 삭제 시에만 보입니다. 또한 placeholder는 미리 채워진 값으로 오해되거나 색 대비가 낮거나 클릭 영역이 작아져서 포커스 설정이 어렵기도 합니다.

참고

다음 예시에서는 label 요소를 사용하지 않습니다. contenteditable이 있는 HTML 요소에는 label로 라벨을 적용할 수 없기 때문입니다.

아래 예시는 사용자가 값을 입력한 searchbox입니다:

<span id="label">생일:</span>
<div contenteditable role="searchbox" aria-labelledby="label" aria-placeholder="MM-DD-YYYY">03-14-1879</div>

다음은 사용자가 아직 값을 입력하지 않았거나 기존 값을 지운 searchbox 예시입니다:

<span id="label">생일:</span>
<div contenteditable role="searchbox" aria-labelledby="label" aria-placeholder="MM-DD-YYYY">MM-DD-YYYY</div>
특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: string

aria-posinset property

현재 리스트 아이템(listitem) 또는 트리 아이템(treeitem) 집합에서 요소가 몇 번째(번호/순서)인지 정의합니다. 모든 집합 항목이 DOM에 있으면 지정할 필요 없습니다. 관련 속성: aria-setsize.

집합 내 모든 항목이 문서 구조에 존재하면 각 항목의 set 크기/위치를 속성으로 지정하지 않아도 user agent가 자동 산출할 수 있습니다. 하지만 한 번에 일부만 문서 구조에 있으면 명확한 위치 표시를 위해 이 property가 필요합니다.

아래는 16개 집합 중 5~8번째 항목 예시입니다.

<h2 id="label_fruit">사용 가능 과일 </h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="16" aria-posinset="5"> apples </li>
  <li role="option" aria-setsize="16" aria-posinset="6"> bananas </li>
  <li role="option" aria-setsize="16" aria-posinset="7"> cantaloupes </li>
  <li role="option" aria-setsize="16" aria-posinset="8"> dates </li>
</ul>

aria-posinset 지정 시, 저자는 1 이상이면서 집합 크기를 아는 경우 그 값 이하의 정수 값을 반드시(MUST) 지정해야 합니다. aria-posinset를 지정했다면 aria-setsize 값도 반드시(MUST) 지정해야 합니다.

aria-posinsetmenuitem, menuitemcheckbox, menuitemradio에 쓰는 경우, 구분선(separator)은 제외하고 메뉴 전체 항목 수 기준으로 aria-posinset 값을 지정하는 것이 좋습니다(SHOULD).

특성:
특성
사용되는 역할:
상속되는 역할:
값: integer

aria-pressed state

토글 버튼의 현재 "pressed" 상태나타냅니다. 관련 속성: aria-checked, aria-selected.

토글 버튼은 눌렀다 뗀 전체 과정을 거쳐야 값이 바뀝니다. 한 번 누르면 값이 true로, 다시 누르면 false로 바뀝니다. mixed는 버튼이 여러 항목을 제어할 때 그 값이 서로 다름을 의미합니다. 속성이 없으면 해당 버튼은 토글 버튼이 아닙니다.

aria-pressedaria-checked와 유사하나 동일하지는 않습니다. OS에서는 버튼에 pressed, 체크박스에 checked 상태를 지원합니다.

특성:
특성
사용되는 역할:
값: tristate
값:
설명
false 해당 요소는 누를 수 있으나 현재 눌린 상태가 아닙니다.
mixed 삼중 토글 버튼에서 혼합 상태임을 나타냅니다.
true 해당 요소가 눌려 있습니다.
undefined (기본값) 해당 요소는 누를 수 없습니다.

aria-readonly property

요소가 편집 불가능하지만, 그 외의 조작(operable)은 가능함을 나타냅니다. 관련 속성: aria-disabled.

즉, 사용자는 widget의 값을 읽을 수는 있지만 직접 설정할 수는 없습니다. 읽기 전용 요소는 사용자에게 의미가 있으므로 저자는 요소나 자식(포커스 가능한)으로의 탐색을 제한해서는 안 됩니다(SHOULD NOT). 또한 값 복사 등 다른 조작도 지원됩니다. 비활성(disabled) 요소와 달리, 비활성 요소는 자손 탐색 마저 제한될 수 있습니다.

예시:

  • 상수를 나타내는 폼 요소
  • 스프레드시트의 행/열 헤더
  • 장바구니 합계와 같은 계산 결과
특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 사용자가 요소 값을 설정할 수 있습니다.
true 사용자가 요소 값을 변경할 수 없습니다.

aria-relevant property

라이브 리전 내 접근성 트리가 변경될 때 사용자 에이전트가 어떤 알림을 발생시킬지 지정합니다. 관련 속성: aria-atomic.

속성은 다음 들의 공백 구분 리스트 또는 단일 포괄값 all로 표현합니다: additions, removals, text.

이 속성은 스타일 변화와 같은 단순 표현 변경이 아니라, 의미 있는 시맨틱 변경에 대해 설명하는 데 사용합니다. 예를 들어, 로그 맨 위에서 노드가 제거되는 것은 다른 항목을 위한 공간 마련을 위한 것이기 때문에 의미를 가지지 않습니다. 하지만 버디 리스트에서 친구 이름이 사라지면 더 이상 온라인이 아님을 뜻하는 의미 있는 이벤트가 되므로 이런 경우엔 aria-relevantall로 지정합니다. 속성이 없으면 디폴트 값 additions text로, 텍스트 변경 및 노드 추가는 의미 있으나 제거는 의미 없음으로 간주합니다.

참고

aria-relevant 값이 removals나 all인 경우는 드물게 사용되어야 합니다. 보조 기술이 컨텐츠 제거까지 알릴 필요가 있는 상황(예: 채팅방 퇴장 등)은 중요할 때만 해당됩니다.

참고

텍스트 제거는 값이 'removals'나 'all'일 때만 의미 있게 처리되어야 합니다. 예를 들어 라이브 리전에서 foo→bar로 변경 시, 디폴트 세팅에선 추가(‘bar’)만 안내되고 foo 제거는 안내되지 않습니다.

aria-relevant는 라이브 리전의 선택적 속성이며, 이는 보조 기술에 제안할 뿐, 모든 변화가 꼭 사용자에게 노출되는 것은 아닙니다.

만약 aria-relevant를 정의하지 않으면 가장 가까운 조상의 값을 상속합니다. 값은 token list이지만, 상속은 누적되지 않으며 자식에 지정된 값이 조상 보다 우선 적용됩니다.

텍스트 변화를 relevant로 지정한 경우, 사용자 에이전트는 반드시(MUST) 자손 노드의 변경이 라이브 리전의 접근 가능한 이름/설명 계산에 영향을 주는지 감시해야 하며, 접근 가능한 이름이 내용을 기반으로 계산되는 상황(nameFrom: contents)과 동일하게 처리합니다. 예로 이미지를 포함한 HTML alt속성 변경은 텍스트 변화로 간주하지만, 라이브 리전 밖에서 참조(aria-labelledby)한 노드의 변경은 트리거가 아닙니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: token list
값:
설명
additions 요소 노드가 라이브 리전 내 접근성 트리에 추가됩니다.
additions text (기본값) "additions text" 값을 조합한 것과 같습니다.
all "additions removals text" 값을 모두 조합한 효과와 같습니다.
removals 라이브 리전 내 텍스트, 텍스트 대체값, 또는 요소 노드가 접근성 트리에서 제거됩니다.
text 라이브 리전 내 접근성 트리 모든 자손에 텍스트 또는 텍스트 대체값이 추가됨을 의미합니다.

aria-required property

폼 제출 전 해당 요소에 사용자 입력이 필요함을 나타냅니다.

예를 들어, 주소 필드를 입력해야 하는 경우 저자는 해당 필드의 aria-required 속성을 true로 지정해야 합니다.

참고

필수 입력임이 시각적으로도 표현되는 경우가 많지만(예: widget 옆에 별표 등), aria-required 속성을 사용하면 보조 기술에 명확히 필수임을 알릴 수 있습니다.

정확히 동등한 네이티브 속성이 없다면, 호스트 언어는 aria-required 속성을 사용자 입력 또는 선택이 필요한 폼 요소에 사용할 수 있게 해야 합니다(SHOULD).

특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 해당 입력은 폼 제출에 필수 아님
true 폼 제출 전 해당 요소에 입력이 반드시 필요함

aria-roledescription property

사람이 읽을 수 있고 저자가 현지화(localization)한 설명을 role요소에 대해 지정합니다.

일부 보조 기술(예: 스크린리더)는 사용자 경험에서 요소의 역할을 같이 안내하는데, 일반적으로 역할명이 현지화 또는 사용자 정의됩니다. 이를 사용하는 사용자는 “영역”, “버튼”, “슬라이더” 등 역할명을 듣고 해당 요소의 성격과(위젯일 경우) 상호작용 방법을 이해합니다.

aria-roledescription 속성을 사용하면 보조기술이 역할명을 현지화 또는 안내하는 방법을 저자가 오버라이드할 수 있습니다. 부적절하게 쓰면 사용자가 해당 요소의 이해·조작에 혼란이 올 수 있으므로, 저자는 aria-roledescription의 사용을 비인터랙티브 컨테이너 역할(group, region 등)의 용도 명확화나, widget의 더 구체적인 역할 명시로 제한하는 것이 좋습니다(SHOULD).

aria-roledescription 사용 시, 저자는 아래를 지켜야 합니다(SHOULD):

  1. 속성 적용 요소에 유효한 ARIA role(명시/암시 포함)이 있어야 함
  2. aria-roledescription 값이 빈 문자열 또는 공백만으로 구성되지 않아야 함
참고

보조기술, 사용자 상세 설정 등 조건에 따라 특정 요소의 역할 안내가 전달되지 않을 수 있습니다. 해당 상황에서 aria-roledescription을 썼을 땐 안내 자체가 생략될 수도 있습니다.

또한, WAI-ARIA 역할이 명시적/암시적으로 부여되었고 aria-roledescription이 금지인 경우에는 해당 속성을 설정해서는 안 됩니다(MUST NOT).

사용자 에이전트는 아래 경우 aria-roledescription노출해서는 안 됩니다(MUST NOT):

  1. 속성 적용 요소에 aria-roledescription이 금지된 명시/암시 ARIA role이 있을 때
  2. aria-roledescription 값이 미지정(null) 또는 빈 문자열일 때

보조 기술aria-roledescription 값을 역할 안내에 사용할 수 있지만, 해당 값이 있는 요소의 기능에는 영향을 주지 않아야 합니다(SHOULD NOT). 예로서, region, button에 대해 "다음 영역", "다음 버튼" 등 내비게이션 기능은 계속 동작해야 합니다.

아래 예시는 웹 프리젠테이션 내 슬라이드를 표기하기 위해 aria-roledescription 사용한 예입니다.

<div role="article" aria-roledescription="slide" id="slide" aria-labelledby="slideheading">
<h1 id="slideheading">Quarterly Report</h1>
<!-- remaining slide contents -->
</div>
<article aria-roledescription="slide" id="slide" aria-labelledby="slideheading">
<h1 id="slideheading">Quarterly Report</h1>
<!-- remaining slide contents -->
</article>

위 예시에서 스크린리더는 “Quarterly Report, slide”처럼 보다 명확히 안내할 수 있습니다(기존 article이나 group보다 명확함).

특성:
특성
사용되는 역할: 다음 역할 제외한 기본 마크업의 모든 요소: generic
값: string

aria-rowcount property

table, grid, treegrid 전체 행 수를 정의합니다. 관련 속성: aria-rowindex.

모든 행이 DOM에 있으면 이 속성을 지정할 필요가 없습니다. user agent가 전체 행 수를 자동 계산할 수 있기 때문입니다. 하지만 한 번에 일부 행만 DOM에 존재하면 전체 테이블 기준 행의 총 개수를 명확하게 지정해야 할 때 이 속성이 필요합니다.

저자는 aria-rowcount의 값을 전체 테이블 내 행 개수와 동일한 정수로 반드시(MUST) 지정해야 합니다. 전체 행 수를 알 수 없는 경우 aria-rowcount-1반드시(MUST) 지정하여 사용자 에이전트가 행 수를 계산하지 않도록 해야 합니다.

아래는 2000개 행 중 1, 100~102번 행이 화면에 표시된 그리드 예시입니다.

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader">First Name</span>
      <span role="columnheader">Last Name</span>
      <span role="columnheader">Company</span>
      <span role="columnheader">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="100">
      <span role="gridcell">Fred</span>
      <span role="gridcell">Jackson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1234</span>
    </div>
    <div role="row" aria-rowindex="101">
      <span role="gridcell">Sara</span>
      <span role="gridcell">James</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1235</span>
    </div>
    <div role="row" aria-rowindex="102">
      <span role="gridcell">Taylor</span>
      <span role="gridcell">Johnson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1236</span>
    </div>
  </div>
</div>
특성:
특성
사용되는 역할:
상속되는 역할:
값: integer

aria-rowindex property

요소의 행 위치(순서)를 element 기준으로 지정합니다. 전체 행 수 기준 순서이며, 관련 속성: aria-rowindextext, aria-rowcount, aria-rowspan 등 참고.

모든 행이 DOM에 있으면, 이 속성을 따로 지정하지 않아도 user agent가 각 행의 인덱스를 자동 계산할 수 있습니다. 하지만 한 시점에 일부 행만 DOM에 있다면 전체 테이블 기준 각 행의 위치를 명확히 지정할 때 필요합니다.

저자는 aria-rowindex을 1 이상 정수, 앞선 행의 값보다 크면서, 전체 테이블 행 수 이하여야 함을 반드시(MUST) 지정해야 합니다. 여러 행(span) 걸친 cell(gridcell)에는 반드시(MUST) span이 시작되는 행 인덱스를 기입하세요.

저자는 행마다 aria-rowindex를 두는 것이 좋고(SHOULD), 각 행의 접근성 자식 모두에도 aria-rowindex둘 수 있습니다(MAY).

아래는 2000개 행 중 1, 100~102번 행이 화면에 표시된 그리드 예시입니다.

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader">First Name</span>
      <span role="columnheader">Last Name</span>
      <span role="columnheader">Company</span>
      <span role="columnheader">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="100">
      <span role="gridcell">Fred</span>
      <span role="gridcell">Jackson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1234</span>
    </div>
    <div role="row" aria-rowindex="101">
      <span role="gridcell">Sara</span>
      <span role="gridcell">James</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1235</span>
    </div>
    <div role="row" aria-rowindex="102">
      <span role="gridcell">Taylor</span>
      <span role="gridcell">Johnson</span>
      <span role="gridcell">Acme, Inc.</span>
      <span role="gridcell">555-1236</span>
    </div>
  </div>
</div>

아래는 위 그리드에서 각 행의 aria-rowindex를 해당 행의 접근성 자식에도 추가한 예시입니다.

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader" aria-rowindex="1">First Name</span>
      <span role="columnheader" aria-rowindex="1">Last Name</span>
      <span role="columnheader" aria-rowindex="1">Company</span>
      <span role="columnheader" aria-rowindex="1">Phone</span>
    </div>
  </div>
  <div role="rowgroup">
    <div role="row" aria-rowindex="100">
      <span role="gridcell" aria-rowindex="100">Fred</span>
      <span role="gridcell" aria-rowindex="100">Jackson</span>
      <span role="gridcell" aria-rowindex="100">Acme, Inc.</span>
      <span role="gridcell" aria-rowindex="100">555-1234</span>
    </div>
    <div role="row" aria-rowindex="101">
      <span role="gridcell" aria-rowindex="101">Sara</span>
      <span role="gridcell" aria-rowindex="101">James</span>
      <span role="gridcell" aria-rowindex="101">Acme, Inc.</span>
      <span role="gridcell" aria-rowindex="101">555-1235</span>
    </div>
    <div role="row" aria-rowindex="102">
      <span role="gridcell" aria-rowindex="102">Taylor</span>
      <span role="gridcell" aria-rowindex="102">Johnson</span>
      <span role="gridcell" aria-rowindex="102">Acme, Inc.</span>
      <span role="gridcell" aria-rowindex="102">555-1236</span>
    </div>
  </div>
</div>
특성:
특성
사용되는 역할:
상속되는 역할:
값: integer

aria-rowindextext property

사람이 읽을 수 있는 버전의 aria-rowindex정의합니다. 관련 속성: aria-colindextext.

저자는 가능한 한 aria-rowindextextaria-rowindex의 값이 의미가 없거나 화면의 인덱스를 반영하지 못할 때만 사용해야 합니다(예: 배틀십 게임 등).

저자는 절대 aria-rowindextextaria-rowindex의 대체용으로 사용해서는 안 됩니다—일부 보조기술은 숫자형 인덱스에 의존해 사용자 위치 추적 또는 표 내비게이션을 제공합니다.

저자는 행마다 aria-rowindextext를 지정하는 것이 좋으며, 또한 각 행의 접근성 자식에게도 지정할 수 있습니다(MAY).

특성:
특성
사용되는 역할:
상속되는 역할:
값: string

aria-rowspan property

셀이나 그리드셀(gridcell)이 table, grid, treegrid 내부에서 몇 행(row)을 병합(가로지르는지) 정의합니다. 관련 속성: aria-rowindex, aria-colspan.

속성은 네이티브 테이블이 아닌 셀/그리드셀에 사용합니다. 네이티브 테이블에서는 aria-rowspan 대신 호스트 언어의 속성을 사용해야 합니다(SHOULD). 호스트 언어에 해당 속성이 있다면, user agents반드시(MUST) aria-rowspan 값을 무시하고 호스트 언어 값을 보조기술에 노출해야 합니다.

저자는 aria-rowspan 을 0 이상의 정수, 해당 셀/그리드셀이 같은 열의 다른 셀과 겹치지 않을 범위로 반드시(MUST) 설정해야 합니다. 값이 0이면 해당 셀/그리드셀이 행 그룹의 남은 모든 행을 전부 병합함을 의미합니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: integer

aria-selected state

나타냅니다 현재 "선택됨" 상태의 여러 위젯. 관련 항목: aria-checkedaria-pressed.

속성은 단일/다중 선택 가능한 composite 위젯에서 어떤 항목이 선택됐는지 표시합니다.

option, tab, treeitem 역할은 특정 조건이 만족될 때 사용자 에이전트가 aria-selected 값을 암묵적으로 제공할 수 있습니다. 그 외에는 반드시(MUST NOT) 암묵값을 제공하지 않습니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: true/false/undefined
값:
설명
false 선택 가능한 요소가 선택되지 않음
true 선택 가능한 요소가 선택됨
undefined (기본값) 이 요소는 선택 불가

aria-setsize property

현 리스트아이템(listitem) 또는 트리아이템(treeitem) 집합의 총 개수를 정의합니다. 집합의 모든 항목이 DOM에 있으면 지정할 필요 없습니다. 관련 속성: aria-posinset.

property는 집합의 멤버에 지정하며, 컨테이너가 아닌 각 멤버에 부여합니다. "전체 Y 중 X번째"라는 식으로 안내할 때 보조기술은 X에 aria-posinset 속성 값을, Y엔 aria-setsize 값을 활용합니다.

집합 내 모든 항목(혹은 그 이전 항목들)이 문서 구조상 포함되어 있다면 이 속성을 별도 지정 안 해도 user agent가 자동 산출합니다. 하지만 현재 시점에 일부이거나 누락된 항목이 있다면, 반드시(MUST) 이 속성으로 명확하게 위치 정보를 제공해야 합니다.

aria-setsize 지정 시, 저자는 집합 항목 전체 개수와 같은 정수로 반드시(MUST) 값 지정해야 하며, 모든 항목 수를 모를 경우 -1지정하는 것이 좋습니다(SHOULD).

aria-setsizemenuitem, menuitemcheckbox, menuitemradio에 줄 때는 구분선(separator) 제외한 전체 개수 기준으로 설정하는 것이 좋습니다(SHOULD).

아래는 16개 중 5~8번째 항목 예시입니다.

<h2 id="label_fruit"> 사용 가능 과일 </h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="16" aria-posinset="5"> apples </li>
  <li role="option" aria-setsize="16" aria-posinset="6"> bananas </li>
  <li role="option" aria-setsize="16" aria-posinset="7"> cantaloupes </li>
  <li role="option" aria-setsize="16" aria-posinset="8"> dates </li>
</ul>

아래는 총 개수를 모르는 경우의 예입니다.

<h2 id="label_fruit"> 사용 가능 과일 </h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="-1" aria-posinset="5"> apples </li>
  <li role="option" aria-setsize="-1" aria-posinset="6"> bananas </li>
  <li role="option" aria-setsize="-1" aria-posinset="7"> cantaloupes </li>
  <li role="option" aria-setsize="-1" aria-posinset="8"> dates </li>
</ul>
특성:
특성
사용되는 역할:
상속되는 역할:
값: integer

aria-sort property

테이블 또는 그리드의 항목이 오름차, 내림차 등 정렬됨을 나타냅니다.

저자는 반드시property를 테이블/그리드 헤더에만 사용해야 합니다. 속성이 없으면 정렬 순서 미정입니다. 각 표/그리드마다 aria-sort는 한 헤더에만 지정하는 것이 좋습니다(SHOULD).

특성:
특성
사용되는 역할:
값: token
값:
설명
ascending 오름차순 정렬됨
descending 내림차순 정렬됨
none (기본값) 정렬되지 않음
other 오름차·내림차 이외의 정렬 방식이 적용됨

aria-valuemax property

범위 위젯의 허용 가능한 최대값을 정의합니다.

저자는 반드시(MUST) aria-valuemax 값이 aria-valuemin보다 크거나 같게 지정해야 합니다. aria-valuenow의 최대·최소값이 알려져 있다면 각각 aria-valuemaxaria-valuemin설정하는 것이 좋습니다(SHOULD).

참고

범위 위젯은 특정 값에서 시작하며, property로 정의된 최대값까지 증가할 수 있습니다. 최소-최대값을 선언하면 보조기술이 범위 크기를 사용자에게 안내할 수 있습니다.

특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: number

aria-valuemin property

범위 위젯의 허용 가능한 최소값을 정의합니다.

저자는 반드시(MUST) aria-valuemin 값을 aria-valuemax보다 같거나 작게 설정해야 합니다. aria-valuenow의 최대, 최소가 정해져 있다면, 각각 aria-valuemax, aria-valuemin 속성도 설정하는 것이 좋습니다(SHOULD).

참고

범위 위젯은 특정 값에서 시작해, property로 정의된 최소값까지 감소할 수 있습니다. 최소-최대값을 선언하면 보조기술이 범위 크기를 안내할 수 있습니다.

특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: number

aria-valuenow property

범위 위젯의 현재값을 정의합니다. 관련 속성: aria-valuetext.

이 속성은 슬라이더, 진행 표시줄 등 범위 위젯에 사용합니다.

현재값이 알 수 없는 경우(예: indeterminate progressbar), aria-valuenow 속성지정하지 않아야 합니다(SHOULD NOT). 지정되지 않으면 현재 값 없음으로 간주합니다. aria-valuenow의 최소, 최대값이 있다면 각각 aria-valuemax, aria-valuemin적절히 함께 사용해야 함(SHOULD).

aria-valuenow 값은 소수점 포함 숫자여야 합니다. 정수 범위라면 지정값 중 하나가 됩니다. 예를 들면, 범위가 [0, 1]일 때 0.5는 유효, -2.5, 1.1은 유효값이 아닙니다.

progressbar, scrollbar에는 보조기술이 반드시(SHOULD) 퍼센트(%)로 계산해 읽거나, 값이 없는 경우 실제 값과 함께 퍼센트를 안내해야 합니다. sliderspinbutton 역할에는 실제 숫자값으로 읽도록 하면 됩니다.

값이 숫자로 제대로 표시될 수 없으면, 저자는 aria-valuetextaria-valuenow와 함께 사용해 범위의 현재 값을 사용자 친화적으로 안내하는 것이 좋습니다(SHOULD). 예: 값 자체는 1~3이지만, "small", "medium", "large" 등의 표시가 화면에 나올 경우 각각 aria-valuetext로 설정합니다.

참고

aria-valuetext가 지정되어 있으면, 보조기술은 aria-valuenow 값 대신 텍스트(aria-valuetext)로 안내합니다.

특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: number

aria-valuetext property

범위 위젯에 대해 aria-valuenow의 사람이 읽을 수 있는 대체값을 정의합니다.

이 속성은 슬라이더, 진행 표시줄 등 범위 위젯에 사용합니다.

aria-valuetext가 있으면 aria-valuenow도 함께 지정해야 하며, 값이 알 수 없는 경우(예: indeterminate progressbar)는 예외입니다.

저자는 값이 숫자로 적절히 표현될 수 없을 때만 aria-valuetext를 설정해야 합니다. 예를 들어, 슬라이더가 "small", "medium", "large"의 각 값에 대해 실제 위치값은 1~3이지만 aria-valuetext에는 각각 문자열 값이 들어가야 합니다. aria-valuetext 속성이 없으면, 보조기술은 aria-valuenow 값만 안내합니다.

aria-valuetext가 있으면, 보조기술은 aria-valuenow 대신 해당 값을 읽어줍니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: string

7. 접근성 트리

접근성 트리DOM 트리는 평행 구조입니다. 접근성 트리에는 user agent의 사용자 인터페이스 객체와 문서의 객체가 포함됩니다. 접근 가능한 객체DOM 요소가 접근성 보조 기술에 노출되어야 할 때마다 접근성 트리에 생성되며, 이는 해당 요소가 접근성 이벤트를 발생시키거나 property, relationship 등 노출해야 하는 기능을 갖는 경우입니다.

7.1 접근성 트리에서 요소 제외

다음 요소들은 접근성 API에 노출되지 않으며, 사용자 에이전트는 반드시(MUST NOT) 이들을 접근성 트리에 포함하지 않아야 합니다:

위 규칙에 따라 이미 접근성 트리에서 제외되지 않았다면, 사용자 에이전트는 가급적 포함하지 않아야 합니다(SHOULD NOT) 하는 요소는 다음과 같습니다:

7.2 접근성 트리에 요소 포함

접근성 트리에서 요소 제외 규칙에 따라 제외되지 않았다면, 사용자 에이전트는 아래 조건 중 한 가지 이상을 만족하는 DOM 요소에 대해 접근 가능한 객체접근성 트리반드시(MUST) 포함해야 합니다:

7.3 접근성 트리 내 관계

다음 용어들은 DOM 요소 간의 관계를 설명할 때 사용됩니다.

접근성 자식DOM 요소에 대응하는 접근 가능한 객체접근성 트리 내 모든 자식입니다. DOM 기준으로는(아래의 제외 항목 포함):

다음 항목은 제외됩니다:

아래 예제에서 list 요소는 네 개의 접근성 자식을 가집니다:

<div role="list" aria-owns="child3 child4">
  <div role="listitem">접근성 자식 1</div>
  <div>
    <div role="listitem">접근성 자식 2</div>
  </div>
</div>
<div id="child3" role="listitem">접근성 자식 3</div>
<div id="child4">
  <div role="listitem">접근성 자식 4</div>
</div>

아래 예제는 첫 번째 list 요소는 접근성 자식이 없고, 두 번째 list 요소는 "reparented" id를 가진 listitem만 접근성 자식으로 가집니다.

<div role="list">
  <div role="listitem" aria-hidden="true">제외된 요소</div>
  <div role="listitem" id="reparented">재부모화 요소</div>
</div>
<div role="list" aria-owns="reparented"></div>

접근성 후손DOM 요소에 해당하는 접근 가능한 객체의 접근성 트리 내 후손에 대응하는 모든 DOM 요소를 말합니다.

접근성 부모DOM 요소에 대해 접근 가능한 객체의 접근성 트리 내 부모 객체입니다. DOM 기준으로 접근성 부모는 다음 중 하나입니다:

아래 네 가지 예는 모두 listitem 요소가 접근성 부모 역할의 list 요소를 갖는다는 점을 보여줍니다:

<div role="list">
  <div role="listitem">"list"가 내 접근성 부모입니다.</div>
</div>
<div role="list">
  <div>
    <div role="listitem">"list"가 내 접근성 부모입니다.</div>
  </div>
</div>
<div role="list" aria-owns="child"></div>
<div id="child" role="listitem">"list"가 내 접근성 부모입니다.</div>
<div role="list" aria-owns="child"></div>
<div id="child">
  <div role="listitem">"list"가 내 접근성 부모입니다.</div>
</div>

8. 호스트 언어에서의 구현

본 명세에 정의된 role, state(상태), property(프로퍼티)는 하나의 완전한 웹 언어나 포맷을 구성하지 않습니다. 이러한 요소들은 항상 호스트 언어 문맥에서 사용되도록 되어 있습니다. 이 절에서는 WAI-ARIA를 호스트 언어에서 어떻게 구현해야 하는지 설명하며, 본 명세에서 지정한 마크업이 해당 언어 마크업과 원활하게 통합될 수 있도록 하기 위함입니다.

마크업 언어들은 표면적으로는 유사해 보이지만, 언어 정의 인프라를 공유하지 않습니다. 언어 구성 방식의 차이를 수용하기 위해 요구사항은 일반적이면서도 모듈화 특성을 반영하고 있습니다. 명세가 기술되는 방식에 차이가 있더라도, WAI-ARIA 정보를 작성자 입장에서 일관되게 보이도록 하고 DOM에서 스크립트로 다룰 때도 동일하게 동작하도록 일관성을 유지하는 것이 취지입니다.

WAI-ARIA의 role, state, property는 attribute(속성)로써 element(요소)에 구현됩니다. role은 호스트 언어가 제공하는 role 속성 값의 토큰(token) 목록 중 하나로 입력되며, state와 property는 각각 고유 속성명과 값(본 명세서에 정의된 대로)을 사용합니다. 속성명은 상태/프로퍼티의 aria- 접두어가 포함된 이름입니다.

8.1 Role 속성

구현하는 호스트 언어는 다음 특징을 갖는 role 속성(attribute)을 제공해야 합니다:

8.2 상태 및 프로퍼티 속성

구현하는 호스트 언어는 반드시(MUST) 다음 특징을 갖는 속성(attribute) 사용을 허용해야 합니다:

XML 네임스페이스 [XML-NAMES]를 지원하는 호스트 언어는 MAY WAI-ARIA 속성에 네임스페이스 사용을 요구할 수 있습니다. 이 경우 WAI-ARIA 상태/프로퍼티 속성의 네임스페이스 URI는 반드시(MUST) http://www.w3.org/ns/wai-aria/여야 합니다. 공식적으로 WAI-ARIA 지원을 명시하지 않은 언어에서도 네임스페이스를 지원하고, user agent가 이를 인식해야 한다면 이 네임스페이스를 사용해야 합니다(SHOULD). 네임스페이스 접두사는 보통 "aria"로 기대됩니다(명세에서 별도 정의하지 않음).

참고

WAI-ARIA 상태 및 프로퍼티 속성은 모두 "aria-"로 시작합니다. 이는 네임스페이스 접두사가 아니고 속성 이름의 일부입니다. 따라서 네임스페이스가 있을 경우 속성명은 "aria:aria-foo"처럼 됩니다.

일부 호스트 언어는 WAI-ARIA 상태·프로퍼티 속성에 네임스페이스를 사용하지 않는 경우가 있습니다. (네임스페이스 미지원, 혹은 언어 설계자 의지 등) 이 경우엔 네임스페이스 이름이 없으며, 속성명은 콜론 없이 그대로 사용합니다. 예를 들어 ECMAScript 바인딩의 getAttributeNS("", "aria-busy")getAttribute("aria-busy") 모두 aria-busy 속성을 접근하게 됩니다.

참고

이 절의 요구사항상, 일부 사용자 에이전트는 네임스페이스 사용 WAI-ARIA 속성을, 일부는 네임스페이스 미사용 속성만 인식합니다(또는 둘 다). 작성자는 자신이 사용하는 호스트 언어와 환경에서 어떤 형식이 지원되는지 파악하는 것이 좋습니다. 호스트 언어 및 supporting user agent에서 네임스페이스가 필수라는 명시가 없다면, 네임스페이스 없이 속성을 사용하는 것이 좋습니다. 일반적으로 네임스페이스를 지원하는 환경에서도 WAI-ARIA 속성은 네임스페이스 없이 노출됩니다. 특히, 현재의 HTML(및 XHTML)은 이 네임스페이스를 지원하지 않습니다.

8.3 포커스 탐색

구현하는 호스트 언어는 반드시(MUST) 모든 상호작용 요소를 포커스 가능하게 제공할 수 있어야 하며(화면에 표시되거나 이벤트를 받을 수 있는 요소), 이러한 포커스 가능 요소가 기본 탭 순서에 나올지 여부도 저자가 지정할 수 있게 해야 합니다. HTML의 tabindex 속성이 그러한 예시입니다.

8.4 암시적 WAI-ARIA 시맨틱

WAI-ARIA는 호스트 언어가 객체에 네이티브 의미(semantic)를 제공하지 못하는 경우에 객체의 의미 정보를 제공합니다. 그러나 실제로는 많은 호스트 언어에 추가 의미를 부여하는 용도로 설계되었습니다. 또, 호스트 언어는 시간이 지나면서 WAI-ARIA와 대응하는 새로운 네이티브 기능을 제공할 수 있습니다. 이에 따라 WAI-ARIA 의미와 호스트 언어 의미가 중복될 수 있는 상황이 많아집니다.

이런 호스트 언어 기능은 "암시적 WAI-ARIA 의미"를 가진다고 볼 수 있습니다. user agent는 암시적 WAI-ARIA 의미가 있는 경우 WAI-ARIA 기능과 유사하게 처리하지만, 어휘적(lexical) 차이로 실제 처리에 약간의 차이가 있을 수 있습니다. 일반적으로 접근성 API에는 동일한 정보를 노출하게 됩니다. 암시적 WAI-ARIA 의미를 갖는 기능은 필수 접근성 부모 역할, 허용되는 접근성 자식 역할, 필수 state/property 등의 구조적 요구사항을 충족시키므로, 별도의 명시적 WAI-ARIA 의미를 추가할 필요가 없습니다. 암시적 WAI-ARIA role이 적용된 경우, 작성자는 그 role이 지원하는 WAI-ARIA state/property를 명시적 role 지정 없이도 쓸 수 있습니다.

예를 들어, 이미 체크박스나 라디오 버튼과 같이 해당 기능을 내포한 요소가 있다면 반드시 네이티브 기능을 사용해야 합니다. WAI-ARIA는 이런 네이티브 의미를 강화(예: aria-required로 필수 지정)하거나, 요소의 표준 기능과 다른 용도의 의미를 부여해야 할 때만 사용합니다.

암시적 WAI-ARIA 의미는 아래 "호스트 언어 의미와의 충돌" 절에서 설명하는 충돌 해결 과정에 영향을 미칩니다. 그러므로 암시적 WAI-ARIA 의미는 호스트 언어 명세나 Core Accessibility API Mappings 등 공식 명세에서 정의되어야 합니다.

8.5 호스트 언어 의미와의 충돌

WAI-ARIA role, state, property는 네이티브 호스트 언어 요소에 해당 의미가 없을 때 의미 정보를 추가하는 것이 취지며, 일반적으로 자체 의미가 없는 요소에 사용합니다. 유사하지만 동일하지 않은 의미가 필요한 경우(예: 들여쓰기가 트리 구조 표시를 위함 등)에도 사용될 수 있습니다. 이는 WAI-ARIA 미지원 브라우저의 폴백 전략이거나, 네이티브 표현 요소를 재목적으로 사용해 스타일/스크립트를 줄이기 위함일 수 있습니다. 아래 예외를 제외하곤, user agent는 요소를 접근성 API에 노출할 때 반드시 WAI-ARIA 의미를 우선 적용해야 하며 호스트 언어 의미는 무시합니다.

WAI-ARIA가 네이티브 의미를 (의도적으로) 오버라이드하는 것이 정상 동작인 경우 외에도, WAI-ARIA 적용이 부적절한 요소(동일한 host 언어 의미 존재, 직접 충돌 등)가 있습니다. 예를 들어, 동일한 의미가 host 언어에 이미 있다면 WAI-ARIA는 필요하지 않으며, host 언어 의미와 WAI-ARIA가 직접 상충(충돌)하는 경우도 있습니다. host 언어의 역할/프로퍼티와 완전히 동일한 의미·값이 있고, 그 차단 이유가 없다면 작성자는 반드시(host 언어를 repurpose하는 대신) host 언어 기능을 써야 합니다(SHOULD).

호스트 언어는 암시적 WAI-ARIA 의미를 갖는 기능(역할 등)을 가질 수 있고, WAI-ARIA role이 제공될 경우 user agent는 반드시(MUST) WAI-ARIA role 의미로 처리해야 하며, 네이티브 의미는 무시합니다. 단, 그 role이 호스트 언어에서 사용 금지된 WAI-ARIA state/property를 요구할 때는 예외입니다. role 값은 state/property만큼의 충돌 우려는 낮으므로, 평소에는 repurpose하지 않는 요소라 해도 WAI-ARIA role을 적용해야 할 경우가 있습니다.

WAI-ARIA 프로퍼티와 호스트 언어 기능이 동일한 암시적 의미를 가지면서 둘 다 값이 불일치할 경우, user agent와 보조기술은 어느 값을 쓸지 판단할 수 없으므로, 첨예한 충돌이 발생할 수 있습니다. 따라서 충돌 방지를 위해 호스트 언어는 각 요소별로 어떤 WAI-ARIA 속성이 네이티브 기능과 직접 충돌하는지 반드시(MUST) 명확히 선언해야 하며, 이 경우 user agent는 WAI-ARIA 속성을 무시하고 네이티브 기능의 암시적 의미를 사용해야 합니다(MUST).

호스트 언어는 WAI-ARIA로 재정의 불가("strong native semantics")인 기능을 명세에 기록할 수 있습니다(MAY). 이는 WAI-ARIA와 충돌 우려(암시적 의미), 처리 방식의 불확실성 때문입니다. 적합성 검사기가 strong native semantics 요소에 WAI-ARIA role을 쓰면 경고 또는 오류를 보여줄 수 있지만(MAY), user agent는 명세상 설명된 경우가 아니라면 항상 WAI-ARIA role 의미로 접근성 API에 노출해야 합니다(MUST).

호스트 언어가 WAI-ARIA가 네이티브 기능을 오버라이드하는 권한에 예외를 두는 것은, 작성자의 실수 방지나 요소 처리상(내부 구조상) 이유 때문이어야 합니다. 단순히 WAI-ARIA 사용 제한을 명세상 열거하는 것만으로 광범위하게 금지하기보다는, 꼭 필요한 상황에서만 제한을 두어야 합니다.

특정 ARIA 기능은 접근성 API에 완전한 모델 생성을 위해 반드시 필요한 것이므로, 이러한 기능은 네이티브 의미와 충돌하지 않으며, 오히려 보완 역할을 합니다. 따라서 호스트 언어는 아래 ARIA 기능은 강한 네이티브 의미로 금지해서는 안 됩니다(MUST NOT):

8.6 상태 및 프로퍼티 속성 처리

상태·프로퍼티 속성은 호스트 언어에 포함되며, 값 타입의 문법 역시 호스트 언어에서 규정합니다. 에 정의된 각각의 타입에 대해 적절한 호스트 언어 타입이 매칭됩니다. 권장 매핑은 WAI-ARIA 값 타입의 언어별 매핑에 제시되어 있습니다(새 호스트 언어 추가 가능성을 위해 비정규(non-normative)로 작성됨).

목록 값 타입(ID 참조 리스트, 토큰 리스트)에서는 한 속성에 여러 값을 넣을 수 있습니다. 값 사이는, 호스트 언어가 list 속성에 사용하는 구분자(공백, 콤마 등)로 구별합니다. 특정 언어는 하나의 구분자만 요구할 수도, 여러 구분자가 허용될 수도 있습니다.

글로벌 state/property는 호스트 언어 내 임의 요소에서 사용 가능하나, non-global 상태/프로퍼티는 해당 role(명시적 role이든, 호스트 언어 암시적 의미에 대응되는 요소이든)에서만 써야 합니다(MUST). role 속성이 부여되면, 해당 요소의 시맨틱과 동작(ARIA state/property 지원 여부 등)은 role 동작에 따라 보강/재정의됩니다. user agent는 반드시(MUST) 지원하지 않는 non-global 속성을 무시해야 하며(명시적 혹은 암시적 role이 없는 경우), 예를 들어 aria-valuetextprogressbar 등에서만 유효하게 동작합니다.

WAI-ARIA role은 "supported" 또는 "required"된 state/property를 지정할 수 있습니다. 예를 들어 combobox 역할이 지원(supported)하는 property는 aria-autocomplete입니다. combobox가 오토컴플리트가 필요 없다면 빠질 수 있는 속성이며, 반면 aria-expanded는 팝업(listbox)이 열린/닫힌 상태(확장/축소)를 반드시 알려야 하므로 required입니다.

WAI-ARIA role이 부여된 경우, 지원(supported) 상태/프로퍼티가 DOM에 없으면 그 default 값이 적용됩니다. 예를 들어 combobox에서 aria-autocomplete가 없으면 aria-autocomplete="none"과 같습니다(자동완성 기능 미제공).

반면, required 상태/프로퍼티가 빠진 경우는 작성자 오류입니다. 누락된 필수값은 작성자 오류 처리 원칙에 따라 처리됩니다.

암시적 WAI-ARIA 의미가 있는 요소에도 해당 role이 지원하는 모든 WAI-ARIA state/property를 사용할 수 있습니다(MAY). state/property 설정에 명시적 role 지정은 필요 없으며, 실제 의미를 바꿔야 할 때만 명시적 role이 필요합니다.

가끔 DOM에는 상태/프로퍼티 속성이 있으나 값이 ""(빈 문자열)로 설정된 경우가 있습니다. 지원(supported) 상태/프로퍼티 속성에는 빈 문자열을 작성할 수 있습니다(MAY). user agent는 이러한 속성값 ""을 속성 미존재와 동일하게 처리하는 것이 좋습니다(SHOULD). 이런 경우 default 값이 적용됩니다. 필수(required) 속성에서 빈 문자열이면 오류 처리(작성자 오류 처리)합니다.

8.6.1 ID 참조 오류 처리

user agent가급적(SHOULD) 문서 내에 일치하는 id가 없는 ID 참조는 무시해야 합니다.

웹 작성자는 id 값이 항상 고유하도록 관리해야 책임이 있습니다. 동일 id가 여러 요소에 쓰인 경우 user agent는 가급적(SHOULD) 첫 번째로 찾은 요소를 사용해야 하며, 이는 getElementById와 동일한 방식입니다.

하나의 관계 속성 값에 동일 요소가 여러 번 들어가도 user agent는 가급적(SHOULD) 동일 요소 포인터를 여러 번 반환합니다.

aria-activedescendant는 반드시 하나의 id만 참조할 수 있으며, 해당 id가 없을 경우 작성자 오류로서 DOM 내 임의 요소와도 매칭되지 않습니다.

8.7 CSS 선택자

참고

이 단락은 추후 버전에서 제거될 수 있습니다.

속성(attribute) 선택자 지원은 반드시(MUST) WAI-ARIA 속성까지 포함해야 합니다. 예를 들면, .fooMenuItem[aria-haspopup="true"]fooMenuItem 클래스를 갖고 aria-haspopup 값이 true인 요소 모두 선택합니다. 동적 WAI-ARIA 속성 변경에도 프레젠테이션(스타일)은 반드시(MUST) 업데이트되어야 합니다. 이를 통해 작성자가 WAI-ARIA의 시맨틱을 활용한 스타일링을 적용할 수 있습니다.

9. 작성자 오류 처리

9.1 역할(role)

사용자 에이전트는 WAI-ARIA role의 유효성 검사를 수행해야 합니다.

역할 정의 절에 명시된 바와 같이, 콘텐츠에 추상 역할을 사용하면 작성 오류입니다. 사용자 에이전트는 반드시(MUST NOT) 접근성 API의 표준 역할 매핑에서 추상 역할을 노출해서는 안 됩니다.

role 속성에 비추상 WAI-ARIA 역할에 해당하는 토큰이 없으면, 사용자 에이전트는 반드시(MUST) 해당 요소를 role이 명시되지 않은 것으로 처리해야 합니다. 예를 들어, <table role="foo"><table>과 동일하게, <input type="text" role="structure"><input type="text">와 동일하게 노출되어야 합니다.

특정 랜드마크 역할은 저자가 이름을 지정해야 하는데, 이름이 지정되지 않은 경우 역시 작성 오류입니다. 사용자 에이전트는 반드시(MUST) 해당 요소를 role이 제공되지 않은 것처럼 처리해야 합니다. 유효한 폴백 역할이나 암시적 ARIA 역할이 있으면 그 역할이 계속 노출됩니다. 이러한 역할의 예는 다음과 같습니다:

9.2 상태 및 프로퍼티

일반적으로 user agentWAI-ARIA property에 대해 많은 유효성 검사를 수행하지 않습니다. 사용자 에이전트는 수행할 수 있음(MAY) 요청 시 일부 간단한 검사(예: aria-posinset 값이 1 이상 aria-setsize 이하인지 등)를 할 수 있습니다. 그 외 논리적 유효성(아래와 같은)은 사용자 에이전트의 책임이 아닙니다:

  1. 관계 속성에서 순환 참조(예: 두 요소가 서로 own하는 경우)
  2. DOM 트리 구조상 올바른 사용(예: 한 요소가 둘 이상의 부모에 의해 소유되는 경우).
  3. WAI-ARIA role이 실제로 역할에 맞는 동작을 구현했는지(예: checkbox 역할 요소가 실제로 체크박스처럼 동작하는지 검사 안 함).
  4. 필수 부모/자식 역할(KR)이 제대로 지켜지는지 또는 필수 부모 이외 위치에 요소가 있는 경우.
  5. aria-activedescendant가 실제로 해당 위젯의 접근성 후손을 가리키는지 여부.
  6. aria-setsizearia-posinset가 집합 내 일부 요소에만 지정된 경우 암시적 값을 산출하는지 여부.

저자가 소수점/정수형 값 타입에 숫자가 아닌 값을 지정한 경우, 사용자 에이전트는 가급적(SHOULD) 다음과 같이 처리합니다:

WAI-ARIA property에 알 수 없거나 허용되지 않은 값이 있으면, 사용자 에이전트는 가급적(SHOULD) 아래처럼 플랫폼 접근성 API에 노출합니다:

참고

UIA에서는, 해당 property를 'unsupported'로 둘 수 있습니다.

사용자 에이전트는 반드시(MUST NOT) 해결되지 않은 id를 참고하는 WAI-ARIA 속성을 노출해서는 안 됩니다. 예:

해당 역할에 필수 WAI-ARIA 속성이 누락된 경우, 사용자 에이전트는 가능하면(SHOULD) 아래 표의 값을 지정된 것으로 처리해야 합니다.

필수 속성 누락 시 대체값
WAI-ARIA 역할 필수 속성 대체값
checkbox aria-checked false
combobox aria-controls no mapping
combobox aria-expanded false
heading aria-level 2
menuitemcheckbox aria-checked false
menuitemradio aria-checked false
radio aria-checked false
scrollbar aria-controls no mapping
scrollbar aria-valuenow 값이 누락됐거나 number가 아니면, (aria-valuemax - aria-valuemin) / 2. 값이 aria-valuemin 미만이면 aria-valuemin, aria-valuemax 초과면 aria-valuemax.
separator (포커스 가능 시) aria-valuenow 값이 누락됐거나 number가 아니면, (aria-valuemax - aria-valuemin) / 2. 값이 aria-valuemin 미만이면 aria-valuemin, aria-valuemax 초과면 aria-valuemax.
slider aria-valuenow 값이 누락됐거나 number가 아니면, (aria-valuemax - aria-valuemin) / 2. 값이 aria-valuemin 미만이면 aria-valuemin, aria-valuemax 초과면 aria-valuemax.
switch aria-checked false
meter aria-valuenow 암시적 또는 명시적으로 지정된 aria-valuemin에 일치하는 값.
참고

필수 아님(non-required) 상태 및 프로퍼티의 암시적 값은 각 역할 특성표에 표시되며, 본 표의 대체값과는 다릅니다.

9.3 프레젠테이션 역할 충돌 해결

프레젠테이션 역할 충돌은 여러 방식으로 해결할 수 있습니다.

사용자 에이전트는 반드시(MUST NOT) 명시적/상속된 프레젠테이션 역할이 지정된 요소를 접근성 트리에 노출하지 않아야 하며, 단 아래는 예외입니다:

예를 들어, aria-describedby는 글로벌 속성이라 항상 적용되며, aria-level은 글로벌 속성이 아니므로 프레젠테이션 상태에서는 무시됩니다.

<!-- 1. [role="none"]은 글로벌 aria-describedby 속성 때문 무시됨 -->
<h1 role="none" aria-describedby="comment-1"> Sample Content </h1>
<!-- 2. [role="none"]은 암시적 heading 및 비글로벌 aria-level 모두 무효화함 -->
<h1 role="none" aria-level="2"> Sample Content </h1>

10. IDL 인터페이스

적합한 사용자 에이전트는 반드시(MUST) 아래의 IDL 인터페이스를 구현해야 합니다.

10.1 인터페이스 믹스인 ARIAMixin

WebIDLinterface mixin ARIAMixin {
	[CEReactions] attribute DOMString? role;
	[CEReactions] attribute Element? ariaActiveDescendantElement;
	[CEReactions] attribute DOMString? ariaAtomic;
	[CEReactions] attribute DOMString? ariaAutoComplete;
	[CEReactions] attribute DOMString? ariaBusy;
	[CEReactions] attribute DOMString? ariaChecked;
	[CEReactions] attribute DOMString? ariaColCount;
	[CEReactions] attribute DOMString? ariaColIndex;
	[CEReactions] attribute DOMString? ariaColIndexText;
	[CEReactions] attribute DOMString? ariaColSpan;
	[CEReactions] attribute FrozenArray<Element>? ariaControlsElements;
	[CEReactions] attribute DOMString? ariaCurrent;
	[CEReactions] attribute FrozenArray<Element>? ariaDescribedByElements;
	[CEReactions] attribute DOMString? ariaDescription;
	[CEReactions] attribute FrozenArray<Element>? ariaDetailsElements;
	[CEReactions] attribute DOMString? ariaDisabled;
	[CEReactions] attribute FrozenArray<Element>? ariaErrorMessageElements;
	[CEReactions] attribute DOMString? ariaExpanded;
	[CEReactions] attribute FrozenArray<Element>? ariaFlowToElements;
	[CEReactions] attribute DOMString? ariaHasPopup;
	[CEReactions] attribute DOMString? ariaHidden;
	[CEReactions] attribute DOMString? ariaInvalid;
	[CEReactions] attribute DOMString? ariaKeyShortcuts;
	[CEReactions] attribute DOMString? ariaLabel;
	[CEReactions] attribute FrozenArray<Element>? ariaLabelledByElements;
	[CEReactions] attribute DOMString? ariaLevel;
	[CEReactions] attribute DOMString? ariaLive;
	[CEReactions] attribute DOMString? ariaModal;
	[CEReactions] attribute DOMString? ariaMultiLine;
	[CEReactions] attribute DOMString? ariaMultiSelectable;
	[CEReactions] attribute DOMString? ariaOrientation;
	[CEReactions] attribute FrozenArray<Element>? ariaOwnsElements;
	[CEReactions] attribute DOMString? ariaPlaceholder;
	[CEReactions] attribute DOMString? ariaPosInSet;
	[CEReactions] attribute DOMString? ariaPressed;
	[CEReactions] attribute DOMString? ariaReadOnly;
	
	[CEReactions] attribute DOMString? ariaRequired;
	[CEReactions] attribute DOMString? ariaRoleDescription;
	[CEReactions] attribute DOMString? ariaRowCount;
	[CEReactions] attribute DOMString? ariaRowIndex;
	[CEReactions] attribute DOMString? ariaRowIndexText;
	[CEReactions] attribute DOMString? ariaRowSpan;
	[CEReactions] attribute DOMString? ariaSelected;
	[CEReactions] attribute DOMString? ariaSetSize;
	[CEReactions] attribute DOMString? ariaSort;
	[CEReactions] attribute DOMString? ariaValueMax;
	[CEReactions] attribute DOMString? ariaValueMin;
	[CEReactions] attribute DOMString? ariaValueNow;
	[CEReactions] attribute DOMString? ariaValueText;
};

ARIAMixin을 포함하는 인터페이스는 다음 알고리즘을 제공해야 합니다:

ARIAMixin에 정의된 모든 IDL 속성 idlAttribute에 대해, 값을 가져올 때는 다음 단계를 수행해야 합니다:

  1. contentAttribute를 ARIA 속성 대응표(ARIA Attribute Correspondence table)에서 idlAttribute를 조회하여 결정된 ARIA 콘텐츠 속성으로 두십시오.

  2. 이(본 객체), idlAttributecontentAttribute를 인수로 하여 ARIAMixin getter steps를 실행한 결과를 반환하십시오.

마찬가지로 값을 설정할 때는 다음 단계를 수행해야 합니다:

  1. contentAttribute를 ARIA 속성 대응표에서 idlAttribute를 조회하여 결정된 ARIA 콘텐츠 속성으로 두십시오.

  2. 이(본 객체), idlAttribute, contentAttribute 및 주어진 값을 인수로 하여 ARIAMixin setter steps를 실행하십시오.

참고

이 매우 일반적인 프레임워크는 ElementElementInternals와 같은 서로 다른 호스트 인터페이스가 이러한 IDL 속성들에 대해 서로 다른 동작을 제공하기를 원하기 때문에 고안되었습니다. 대안은 각 호스트 인터페이스가 IDL 속성들을 독립적으로 복제하여 독립적인 동작을 지정하도록 요구하는 것이지만, 이는 동기화가 어긋날 위험이 큽니다.

10.2 ARIA 속성 대응

다음 표는 ARIAMixin에서 사용하기 위해 IDL 속성 이름과 콘텐츠 속성 이름 간의 대응을 제공합니다.

IDL Attribute Reflected ARIA Content Attribute
role role
ariaActiveDescendantElement aria-activedescendant
ariaAtomic aria-atomic
ariaAutoComplete aria-autocomplete
ariaBusy aria-busy
ariaChecked aria-checked
ariaColCount aria-colcount
ariaColIndex aria-colindex
ariaColIndexText aria-colindextext
ariaColSpan aria-colspan
ariaControlsElements aria-controls
ariaCurrent aria-current
ariaDescribedByElements aria-describedby
ariaDescription aria-description
ariaDetailsElements aria-details
ariaDisabled aria-disabled
ariaErrorMessageElements aria-errormessage
ariaExpanded aria-expanded
ariaFlowToElements aria-flowto
ariaHasPopup aria-haspopup
ariaHidden aria-hidden
ariaInvalid aria-invalid
ariaKeyShortcuts aria-keyshortcuts
ariaLabel aria-label
ariaLabelledByElements aria-labelledby
ariaLevel aria-level
ariaLive aria-live
ariaModal aria-modal
ariaMultiLine aria-multiline
ariaMultiSelectable aria-multiselectable
ariaOrientation aria-orientation
ariaOwnsElements aria-owns
ariaPlaceholder aria-placeholder
ariaPosInSet aria-posinset
ariaPressed aria-pressed
ariaReadOnly aria-readonly
ariaRequired aria-required
ariaRoleDescription aria-roledescription
ariaRowCount aria-rowcount
ariaRowIndex aria-rowindex
ariaRowIndexText aria-rowindextext
ariaRowSpan aria-rowspan
ariaSelected aria-selected
ariaSetSize aria-setsize
ariaSort aria-sort
ariaValueMax aria-valuemax
ariaValueMin aria-valuemin
ariaValueNow aria-valuenow
ariaValueText aria-valuetext
참고

참고: aria-dropeffectaria-grabbed 속성은 ARIA 1.1에서 더 이상 권장되지 않으며 대응하는 IDL 속성이 없습니다.

10.2.1 중복 해소 패턴

이 절은 비규범적입니다.

명세 작성자가 이 패턴에 예외를 둘 수 있지만, 아래 규칙들은 위에 나열된 IDL 속성 이름들의 이름과 대소문자를 구분하기 위해 사용되었습니다.

  • 두 단어 이상의 개념(예: "value text")을 참조하는 속성 이름은 각 단어 경계마다 대문자를 사용하는 카멜케이스 IDL 속성이 됩니다. 예를 들어, aria-valuetextariaValueText가 되어 V와 T가 모두 대문자입니다.
  • 마찬가지로, 하이픈으로 연결될 수 있는 개념(예: "multi-selectable")을 참조하는 속성 이름은 하이픈 경계마다 대문자를 사용하는 카멜케이스 IDL 속성이 됩니다. 예를 들어, "multi-selectable"의 유효한 철자는 하이픈 포함형뿐이므로 aria-multiselectableariaMultiSelectable가 되어 M과 S가 모두 대문자입니다.
  • 신뢰할 수 있는 사전 자료들이 하이픈형과 무하이픈형 철자 모두를 나열하는 경우(예: "multi-line"과 "multiline"이 모두 유효한 철자일 때) 하이픈형을 사용하고 위의 하이픈 규칙을 적용합니다. 예를 들어, aria-multilineariaMultiLine이 되어 M과 L이 모두 대문자입니다.
  • 신뢰할 수 있는 사전 자료들이 공백이나 하이픈 없이 단일 복합어 철자만을 나열하는 경우에는 용어의 첫 문자만 대문자로 합니다. 예를 들어, "place-holder"나 "place holder"는 "placeholder"의 유효 철자로 간주되지 않으므로, aria-placeholderariaPlaceholder가 되어 P만 대문자입니다.
  • 현재 약어 기반의 ARIA 속성은 없지만, 향후 속성에 약어 사용이 포함될 경우 기존 DOM 관례(예: ID는 Id가 됨)를 따르도록 시도하십시오.

10.2.2 IDL 속성 이름에 대한 주석 또는 예외

이 절은 비규범적입니다.

특정 속성 이름에 대한 주석이나 예외는 여기에 나열됩니다.

  • ariaPosInSet: aria-posinset 속성은 항목의 컬렉션 시작으로부터의 여백(inset)이 아니라 집합 내 항목의 위치(두 단어: "in set")를 가리킵니다. 따라서 IDL 속성 이름은 P, I 및 두 번째 S가 대문자인 ariaPosInSet이며, ariaPosInset이 아닙니다.

10.3 ARIAMixinElement에 혼합됨

사용자 에이전트는 MUST ElementARIAMixin을 포함해야 합니다:

WebIDLElement includes ARIAMixin;

Element에 대해:

참고

실무적으로, 예를 들어 Elementrole IDL은 role 콘텐츠 속성을 반영하고, ariaValueMin IDL 속성은 aria-valuemin 콘텐츠 속성을 반영하는 등이라는 의미입니다.

10.4 IDL 속성 사용 예시

이 절은 비규범적입니다.

ARIA IDL 속성 반영의 주요 목적은 값의 JavaScript 기반 조작을 용이하게 하는 것입니다. 다음 예제들은 그 사용법을 보여줍니다.

11. 보안 고려사항

이 절은 비규범적입니다.

이 명세는 새로운 보안 고려사항을 도입하지 않습니다.

12. 프라이버시 고려사항

이 절은 비규범적입니다.

웹 플랫폼 설계 원칙(Web Platform Design Principles)에 따라, 이 명세는 Assistive Technologies의 사용 여부를 프로그램적으로 판별하는 인터페이스를 제공하지 않습니다. 그러나 이 명세는 저자가 Assistive Technologies를 사용하는 사용자와 사용하지 않는 사용자에게 다른 정보를 제시할 수 있도록 허용합니다. 이는 ARIA 명세의 여러 기능을 사용하여 가능하며, 웹 기술 스택의 다른 많은 부분을 사용해서도 가능합니다. 이러한 내용 차이는 Assistive Technologies 사용자에 대한 능동적 지문 추출(active fingerprinting)을 악용하는 데 사용될 수 있습니다(active fingerprinting).

A. WAI-ARIA 값 유형을 언어에 매핑

이 절은 비규범적입니다.

참고

아래 표의 HTML 열은 권고적입니다. WAI-ARIA 상태 및 속성의 HTML에서의 사용에 대한 지침은 Document conformance requirements for use of ARIA attributes in HTML에 제공됩니다 ([HTML-ARIA]).

참고

HTML에서 true/false 값에 대해 제안된 매핑은 Keyword and enumerated attributes를 사용하여 허용값으로 truefalse를 사용하는 것을 추천하며, HTML boolean 값 타입을 사용하는 대신 이러한 방식이 권장됩니다.

아래 표는 WAI-ARIA 상태 및 속성 타입과 HTML StandardW3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes의 속성 타입 간의 권장 매핑을 제공합니다.

아래에 나열되지 않은 언어는 해당 언어에 적절한 값 타입이 정의되어 있을 수 있습니다. 정의되어 있지 않으면 일반 목적의 XML 언어에는 XML Schema Datatypes를 권장합니다. DTD를 사용하는 문서는 스키마 대신에 자동으로 검증할 수 없으며 WAI-ARIA 속성에 대해 추가 처리가 필요합니다.

WAI-ARIA 유형 HTML XML Schema
true/false Keyword and enumerated attributes — 허용값으로 "true" 및 "false" boolean
true/false/undefined Keyword and enumerated attributes — 허용값으로 true, false, 및 undefined NMTOKENenumeration constrainttrue, false, undefined 허용
tristate Keyword and enumerated attributes — 허용값으로 "true", "false", "mixed" NMTOKENenumeration constraint로 "true", "false", "mixed" 허용
number 부동 소수점 숫자 (Floating-point numbers) decimal
integer 비음수 정수 (Non-negative integer) integer
token Keyword and enumerated attributes NMTOKENenumeration constraint로 상태 또는 속성 정의에 나열된 값 허용
token list 공백으로 구분된 토큰 (Space-separated tokens) NMTOKENSenumeration constraint로 상태 또는 속성 정의에 나열된 값 허용
ID reference 다른 요소의 정의된 id 속성 IDREF
ID reference list 다른 요소의 하나 이상의 정의된 id 속성 값 — 공백으로 구분된 토큰으로 표현 IDREFS
string 값 제약 없음 string

B. 변경 로그

B.1 이번 릴리스의 주요 기능

B.2 ARIA 1.2 이후의 주요 변경사항

C. 감사의 글

이 절은 비규범적입니다.

다음 분들이 이 문서의 개발에 기여하였습니다.

C.1 문서 발행 시점에 ARIA WG에서 활동 중인 참가자

C.2 지원 기관

본 출판물은 미국 교육부, National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR)의 연방 기금의 일부 지원을 받았으며, 최초 계약 번호 ED-OSE-10-C-0067, 이후 HHSP23301500054C, 현재 HHS75P00120P00168로 지원되고 있습니다. 이 출판물의 내용은 반드시 미국 교육부의 견해나 정책을 반영하는 것은 아니며, 상품명, 상업 제품, 또는 조직의 언급이 미국 정부의 보증을 의미하지도 않습니다.

D. 참조

D.1 규범적 참조

[ACCNAME-1.2]
Accessible Name and Description Computation 1.2. Bryan Garaventa; Joanmarie Diggs; Michael Cooper. W3C. 2019년 7월 11일. W3C Working Draft. URL: https://www.w3.org/TR/accname-1.2/
[CORE-AAM]
Core Accessibility API Mappings 1.1. Joanmarie Diggs; Joseph Scheuhammer; Richard Schwerdtfeger; Michael Cooper; Andi Snow-Weaver; Aaron Leventhal. W3C. 2017년 12월 14일. W3C 권고. URL: https://www.w3.org/TR/core-aam-1.1/
[CORE-AAM-1.2]
Core Accessibility API Mappings 1.2. Valerie Young; Alexander Surkov; Michael Cooper. W3C. 2023년 11월 2일. W3C Candidate Recommendation. URL: https://www.w3.org/TR/core-aam-1.2/
[CSS3-SELECTORS]
Selectors Level 3. Tantek Çelik; Elika Etemad; Daniel Glazman; Ian Hickson; Peter Linss; John Williams. W3C. 2018년 11월 6일. W3C 권고. URL: https://www.w3.org/TR/selectors-3/
[DOM]
DOM Standard. Anne van Kesteren. WHATWG. Living Standard. URL: https://dom.spec.whatwg.org/
[DPUB-ARIA-1.0]
Digital Publishing WAI-ARIA Module 1.0. Matt Garrish; Tzviya Siegman; Markus Gylling; Shane McCarron. W3C. 2017년 12월 14일. W3C 권고. URL: https://www.w3.org/TR/dpub-aria-1.0/
[HTML]
HTML Standard. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[infra]
Infra Standard. Anne van Kesteren; Domenic Denicola. WHATWG. Living Standard. URL: https://infra.spec.whatwg.org/
[MathML3]
Mathematical Markup Language (MathML) Version 3.0 2nd Edition. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 2014년 4월 10일. W3C 권고. URL: https://www.w3.org/TR/MathML3/
[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. 1997년 3월. Best Current Practice. URL: https://www.rfc-editor.org/rfc/rfc2119
[ROLE-ATTRIBUTE]
Role Attribute 1.0. Shane McCarron et al. W3C. 2013년 3월 28일. W3C 권고. URL: https://www.w3.org/TR/role-attribute/
[SVG2]
Scalable Vector Graphics (SVG) 2. Amelia Bellamy-Royds; Bogdan Brinza; Chris Lilley; Dirk Schulze; David Storey; Eric Willigers. W3C. 2018년 10월 4일. W3C Candidate Recommendation. URL: https://www.w3.org/TR/SVG2/
[uievents-key]
UI Events KeyboardEvent key Values. Travis Leithead; Gary Kacmarcik. W3C. 2023년 5월 30일. W3C Candidate Recommendation. URL: https://www.w3.org/TR/uievents-key/
[WEBIDL]
Web IDL Standard. Edgar Chen; Timothy Gu. WHATWG. Living Standard. URL: https://webidl.spec.whatwg.org/
[XML-NAMES]
Namespaces in XML 1.0 (Third Edition). Tim Bray; Dave Hollander; Andrew Layman; Richard Tobin; Henry Thompson et al. W3C. 2009년 12월 8일. W3C 권고. URL: https://www.w3.org/TR/xml-names/

D.2 비규범적 참조

[AT-SPI]
Assistive Technology Service Provider Interface. The GNOME Project. URL: https://developer-old.gnome.org/libatspi/stable/
[ATK]
ATK - Accessibility Toolkit. The GNOME Project. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
The NSAccessibility Protocol for macOS. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[design-principles]
Web Platform Design Principles. Sangwhan Moon. W3C. 2023년 9월 7일. W3C Working Group Note. URL: https://www.w3.org/TR/design-principles/
[fingerprinting-guidance]
Mitigating Browser Fingerprinting in Web Specifications. Nick Doty. W3C. 2019년 3월 28일. W3C Working Group Note. URL: https://www.w3.org/TR/fingerprinting-guidance/
[HTML-ARIA]
ARIA in HTML. Scott O'Hara; Patrick Lauke. W3C. 2023년 12월 21일. W3C 권고. URL: https://www.w3.org/TR/html-aria/
[IAccessible2]
IAccessible2. Linux Foundation. URL: https://wiki.linuxfoundation.org/accessibility/iaccessible2/
[MSAA]
Microsoft Active Accessibility (MSAA). Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/microsoft-active-accessibility
[UI-AUTOMATION]
UI Automation. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/ui-automation-specification
[UIA-EXPRESS]
The IAccessibleEx Interface. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/iaccessibleex
[wai-aria-1.1]
Accessible Rich Internet Applications (WAI-ARIA) 1.1. Joanmarie Diggs; Shane McCarron; Michael Cooper; Richard Schwerdtfeger; James Craig. W3C. 2017년 12월 14일. W3C 권고. URL: https://www.w3.org/TR/wai-aria-1.1/
[WAI-ARIA-PRACTICES-1.2]
WAI-ARIA Authoring Practices 1.2. Matthew King; JaEun Jemma Ku; James Nurthen; Zoë Bijl; Michael Cooper. W3C. 2022년 5월 19일. W3C Working Group Note. URL: https://www.w3.org/TR/wai-aria-practices-1.2/
[WCAG21]
Web Content Accessibility Guidelines (WCAG) 2.1. Michael Cooper; Andrew Kirkpatrick; Joshue O'Connor; Alastair Campbell. W3C. 2023년 9월 21일. W3C 권고. URL: https://www.w3.org/TR/WCAG21/
[XMLSCHEMA11-2]
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes. David Peterson; Sandy Gao; Ashok Malhotra; Michael Sperberg-McQueen; Henry Thompson; Paul V. Biron et al. W3C. 2012년 4월 5일. W3C 권고. URL: https://www.w3.org/TR/xmlschema11-2/