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

W3C 권고안

이 문서에 대한 자세한 정보
이 버전:
https://www.w3.org/TR/2023/REC-wai-aria-1.2-20230606/
최신 공개 버전:
https://www.w3.org/TR/wai-aria-1.2/
최신 편집자 초안:
https://w3c.github.io/aria/
히스토리:
https://www.w3.org/standards/history/wai-aria-1.2
커밋 히스토리
구현 보고서:
https://w3c.github.io/test-results/core-aam-1.2/
이전 권고안:
https://www.w3.org/TR/wai-aria-1.1/
편집자:
Joanmarie Diggs (Igalia, S.L.)
James Nurthen (Adobe)
Michael Cooper (W3C)
Carolyn MacLeod (IBM)
이전 편집자:
Shane McCarron (Spec-Ops) (2018년까지 편집자)
Richard Schwerdtfeger (Knowbility) (2017년 10월까지 편집자)
James Craig (Apple Inc.) (2016년 5월까지 편집자)
피드백:
GitHub w3c/aria (풀 리퀘스트, 새 이슈, 오픈 이슈)
정오표:
정오표 있음.

참고: 번역본.


요약

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

이 문서는 WAI-ARIA 개요에 설명된 WAI-ARIA 제품군의 일부입니다.

이 문서의 상태

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

WAI-ARIA 1.2는 W3C 권고안입니다. 자문위원회(AC)와 W3C 이사 모두가 이 명세를 W3C 권고안으로 승인하였습니다. 구현 경험에 대한 자세한 내용은 WAI-ARIA 1.2 구현 보고서를 참조하세요. WAI-ARIA 1.2 변경 이력은 부록에서 확인할 수 있습니다.

이 문서는 접근 가능한 리치 인터넷 애플리케이션 작업 그룹에서 권고안 트랙(Recommendation track)을 통해 발행되었습니다.

W3C는 이 명세의 웹 표준으로서의 넓은 배포를 권장합니다.

W3C 권고안은 광범위한 합의 형성 과정을 거쳐 W3C와 회원들의 승인을 받았으며, 작업 그룹 구성원들의 로열티 없는 라이선스 이행 약속이 포함되어 있습니다.

이 문서는 W3C 특허 정책 하에서 운영되는 그룹에 의해 작성되었습니다. W3C는 해당 그룹 산출물과 관련하여 공개 특허 공개 목록을 유지합니다. 해당 페이지에는 특허 공개 방법 안내도 포함되어 있습니다. 어떤 개인이 해당 특허가 필수 청구사항을 포함한다고 판단되는 경우, W3C 특허 정책 6항에 따라 정보를 공개해야 합니다.

이 문서는 2021년 11월 2일 W3C 프로세스 문서에 따라 관리됩니다.

헌정

이 ARIA 명세의 이번 버전은 Carolyn MacLeod의 기억에 헌정합니다. 그녀의 기여는 이 문서 곳곳에 담겨 있습니다. 그녀는 우리의 작업에 평정과 지혜를 더해 주었으며, 그녀의 갑작스러운 별세는 우리 공동체에게 오랫동안 그리움으로 남을 것입니다.

1. 소개

이 섹션은 비규범적입니다.

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

WAI-ARIA는 웹 콘텐츠와 애플리케이션의 접근성과 상호운용성을 개선하기 위한 프레임워크를 제공하는 기술 명세입니다. 이 문서는 주로 맞춤 위젯 및 기타 웹 애플리케이션 구성요소를 만드는 개발자를 위한 것입니다. WAI-ARIA 개요에서 다른 대상(예: WAI-ARIA 저작 관행 [WAI-ARIA-PRACTICES-1.2])을 위한 관련 문서 링크를 보실 수 있습니다. 해당 문서는 WAI-ARIA가 해결하고자 하는 접근성 문제, 기본 개념, 그리고 WAI-ARIA의 기술적 접근법을 소개합니다.

이 문서는 현재 역할의 두 가지 측면, 즉 사용자 인터페이스 기능과 구조적 관계를 다룹니다. 자세한 정보와 사용 사례는 WAI-ARIA 저작 관행 [WAI-ARIA-PRACTICES-1.2]에서 대화형 콘텐츠를 접근 가능하게 만드는 역할의 사용법을 참고하세요.

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

이 표준을 지원하는 스키마는 확장성을 염두에 두고 설계되었기 때문에 기본 역할을 확장하여 사용자 지정 역할을 만들 수 있습니다. 이를 통해 사용자 에이전트는 최소한 기본 역할을 지원하고, 사용자 지정 역할을 지원하는 에이전트는 향상된 접근을 제공할 수 있습니다. 많은 부분은 [XMLSCHEMA11-2]에 공식화될 수 있지만, baseConcepts와 더 설명적인 정의 등 역할 간의 유사성을 정의하는 것은 XSD에서 제공되지 않습니다.

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

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

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

새로운 기술은 종종 접근성에 필요한 시맨틱을 간과하고, 새로운 저작 관행은 해당 기술의 의도된 시맨틱을 잘못 사용하는 경우가 많습니다. 요소가 언어에서 정의된 의미와 다른 의미로 사용되어 사용자가 의도한 대로 이해하는 경우가 있습니다.

예를 들어, 웹 애플리케이션 개발자는 HTML에서 CSS와 JavaScript를 사용해 접을 수 있는 트리 위젯을 만듭니다. 하지만 HTML에는 시맨틱 tree 요소가 없습니다. 비장애인은 이를 트리 위젯처럼 볼 수 있지만, 적절한 시맨틱이 없으면 트리 위젯은 인지 가능하거나 조작 가능하지 않을 수 있습니다. 이는 보조 기술이 역할을 인식하지 못하기 때문입니다. 유사하게, SVG에서 JavaScript로 인터랙티브 버튼 위젯을 만들지만 SVG에는 시맨틱 button 요소가 없습니다. 비장애인은 버튼 위젯처럼 볼 수 있지만 적절한 시맨틱 없이 버튼 위젯은 인지 가능하거나 조작 가능하지 않을 수 있습니다.

WAI-ARIA를 도입하면 저자가 맞춤 위젯에 올바른 시맨틱을 제공해 보조 기술과의 접근성, 사용성, 상호운용성을 확보할 수 있습니다. 이 명세는 접근성 제품에서 일반적으로 인식되는 위젯과 구조의 유형을 정의하며, 해당하는 온톨로지역할을 콘텐츠에 부여할 수 있도록 합니다. 이를 통해 특정 역할을 가진 요소를 호스트 언어가 가진 시맨틱과 관계없이 특정 위젯이나 구조 유형으로 인식할 수 있습니다. 역할은 플랫폼 접근성 API의 일반적인 속성으로, 보조 기술은 이를 활용해 사용자에게 효과적인 표현과 상호작용을 제공합니다.

역할 모델에는 인터랙션 위젯과 문서 구조를 나타내는 요소가 포함됩니다. 역할 모델은 상속을 설명하고 각 역할이 지원하는 속성을 자세히 안내합니다. 역할의 접근성 API 매핑 정보는 핵심 접근성 API 매핑 [CORE-AAM-1.2]에 있습니다.

역할은 요소 유형이며, 시간이나 사용자 동작에 따라 변경되지 않습니다. 역할 정보는 사용자 에이전트와의 상호작용을 통해 보조 기술이 지정된 요소 유형을 정상적으로 처리할 수 있도록 사용됩니다.

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

보조 기술이 이러한 속성을 직접 문서 객체 모델 [DOM]을 통해 접근할 수도 있지만, 권장되는 방식은 사용자 에이전트가 상태와 속성을 운영체제의 접근성 API에 매핑하는 것입니다. 자세한 내용은 핵심 접근성 API 매핑 [CORE-AAM-1.2] 및 접근 가능한 이름 및 설명 계산 [ACCNAME-1.2]을 참고하세요.

그림 1.0은 사용자 에이전트(예: 브라우저), 접근성 API, 그리고 보조 기술 간의 관계를 보여줍니다. 이것은 사용자 에이전트가 보조 기술에 제공하는 "계약"을 설명하며, 이는 많은 GUI 접근 가능한 플랫폼의 접근성 API에서 발견되는 일반적인 접근성 정보(역할, 상태, 선택, 이벤트 알림, 관계 정보, 설명 등)를 포함합니다. DOM(대개 HTML)은 모델-뷰-컨트롤러 관계에서 데이터 모델과 뷰 역할을 하며, JavaScript는 스타일과 콘텐츠를 조작하는 컨트롤러 역할을 합니다. 사용자 에이전트는 운영체제 접근성 API에 관련 정보를 전달하며, 이는 스크린 리더 등 모든 보조 기술에서 사용할 수 있습니다.

접근성 API와 함께하는 계약 모델

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

더 자세한 정보는 WAI-ARIA 저작 관행에서 대화형 콘텐츠 접근성 역할 사용법을 참고하세요.

대체 입력 장치 사용자에게는 키보드 접근성 콘텐츠가 필요합니다. 새로운 시맨틱은 WAI-ARIA 저작 관행에서 제공하는 권장 키보드 상호작용과 결합될 때 대체 입력 솔루션을 통한 명령 및 제어를 가능하게 합니다.

WAI-ARIA는 역할 모델과 XHTML 역할 랜드마크를 통해 탐색 랜드마크를 도입합니다. 이는 운동 및 시력 장애가 있는 사람에게 키보드 내비게이션을 개선하여 도움을 줄 수 있습니다. WAI-ARIA는 인지 학습 장애가 있는 사람을 돕는 데도 사용할 수 있습니다. 추가 시맨틱은 저자가 필요에 따라 콘텐츠를 재구성하거나 대체 콘텐츠를 제공할 수 있게 해줍니다.

보조 기술위젯 상태와 속성의 현재 값을 가져오거나 설정함으로써 대체 입력을 지원해야 하며, 여러 선택이 가능한 위젯(예: 목록 상자, 그리드)에서 어떤 객체가 선택되었는지 파악하고 관리할 수 있어야 합니다.

음성 기반 명령 및 제어 시스템은 WAI-ARIA 시맨틱(예: role 속성)에서 도움을 받을 수 있습니다. 예를 들어, menu 역할을 가진 요소와 menuitem 역할을 가진 자식 요소 각각이 다른 맛을 나타내는 텍스트를 포함할 경우, 음성 시스템은 사용자에게 "세 가지 중 하나를 선택하세요: 초콜릿, 딸기, 바닐라"라고 안내할 수 있습니다.

WAI-ARIA는 기본 언어 시맨틱을 보완하는 용도로 사용해야 하며, 대체하는 용도로 사용하지 않습니다. 호스트 언어가 WAI-ARIA와 동등한 접근성을 제공하는 기능을 지원하는 경우, 호스트 언어의 기능을 사용하세요. WAI-ARIA는 호스트 언어에 필요한 역할, 상태, 속성 표시자가 없을 때만 사용하세요. 호스트 언어 기능이 WAI-ARIA 기능과 가장 유사한 것을 사용하고, 그 의미를 WAI-ARIA로 보완하세요. 예를 들어, 다중 선택 가능한 그리드는 테이블로 구현하고, 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와 동등한 새로운 폼 컨트롤 등 표준 접근성 사용자 인터페이스 컨트롤이 추가될 수 있습니다. 이는 저자가 커스텀 WAI-ARIA 기반 UI 구성요소 대신 이를 사용할 수 있도록 하며, 이 때 사용자 에이전트가 호스트 언어의 네이티브 기능을 지원하게 됩니다. WAI-ARIA를 구현하는 호스트 언어 개발자는 암시적 호스트 언어 시맨틱과 충돌하지 않는 한 WAI-ARIA 시맨틱을 계속 지원하는 것이 권장되며, 호스트 언어 기능이 저자의 요구를 충족하지 못할 경우 WAI-ARIA 시맨틱이 저자의 의도를 더 명확하게 반영합니다.

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

WAI-ARIA는 [HTML] 및 [SVG2]와 같은 지원 언어의 시맨틱을 보완하거나, ARIA 지원을 명시적으로 포함하지 않는 기타 마크업 기반 언어에서 접근성 강화 기술로 사용할 수 있도록 고안되었습니다. 저자가 스타일과 스크립트로 페이지 언어에서 직접 지원되지 않는 새로운 객체 유형을 만들 때, WAI-ARIA는 보조 기술에 시맨틱을 명확히 전달해줍니다. 새로운 객체 유형의 발명 속도가 웹 언어에서의 표준화 지원 등장보다 빠르기 때문입니다.

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

시간이 지나면서 호스트 언어가 현재 WAI-ARIA로만 선언할 수 있는 객체에 대한 시맨틱을 제공할 것으로 기대합니다. 이것은 자연스럽고 바람직한 현상이며, WAI-ARIA의 목표 중 하나는 더 시맨틱하고 접근성 높은 마크업의 등장을 촉진하는 것입니다. 특정 기능에 대한 네이티브 시맨틱이 제공되면, 저자는 해당 네이티브 기능을 사용하고 해당 기능에 대해 WAI-ARIA 사용을 중단하는 것이 적절합니다. 그러나 레거시 콘텐츠는 WAI-ARIA를 계속 사용할 수 있으므로, 사용자 에이전트가 WAI-ARIA를 지원할 필요는 여전히 남아있습니다.

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

일부 호스트 언어는 사용자 인터페이스 이외의 기능을 위한 시맨틱을 만들기 위해 존재합니다. 예를 들어, SVG는 그래픽 객체의 생성에 대한 시맨틱을 표현하며, 해당 객체가 나타내는 사용자 인터페이스 구성요소의 시맨틱은 다루지 않습니다. 호스트 언어는 설계상 WAI-ARIA 기능에 매핑되는 네이티브 시맨틱을 제공하지 않을 수 있습니다. 이러한 경우 WAI-ARIA는 UI 구성요소에 시맨틱 정보를 추가하는 장기적인 접근법으로 채택될 수 있습니다.

1.5 저작 관행

1.5.1 저작 도구

많은 WAI-ARIA 역할, 상태, 속성의 정의 요구사항은 개발 과정에서 코드 검증과 같은 품질 관리 프로세스처럼 자동으로 점검할 수 있습니다. 맞춤 위젯을 생성하는 저자를 돕기 위해, 저작 도구는 위젯 역할, 상태, 속성을 WAI-ARIA에서 지원되는 것과 관련 및 교차 참조된 역할, 상태, 속성과 비교할 수 있습니다. 저작 도구는 위젯 디자인 패턴 오류를 저자에게 알리거나, 컨텍스트만으로 판단할 수 없는 정보를 개발자에게 입력하도록 요청할 수 있습니다. 예를 들어, 스크립트 라이브러리는 트리 뷰에서 트리 항목의 레이블을 파악할 수 있지만, 전체 트리에 대한 레이블은 저자에게 요청해야 합니다. 저작 환경은 WAI-ARIA 마크업을 기반으로 웹 리소스의 논리적 접근성 구조를 시각화하는 아웃라인 뷰를 제공할 수 있습니다.

HTMLSVG 모두에서 tabindex는 브라우저가 WAI-ARIA 구현에 대해 키보드 포커스 내비게이션을 지원하는 중요한 방법입니다. 저작 및 디버깅 도구는 tabindex 값이 올바르게 설정되어 있는지 확인할 수 있습니다. 예를 들어, 오류 조건으로는 트리에서 둘 이상의 treeitem에 tabindex 값이 0 이상으로 설정되어 있거나, 어떤 treeitem에도 tabindex가 설정되어 있지 않거나, aria-activedescendant 가 정의되지 않은 경우(트리 역할 요소에 tabindex가 0 이상인 경우) 등이 있습니다.

1.5.2 테스트 관행 및 도구

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

1.6 보조 기술

접근성 시맨틱에 대한 프로그래밍적 접근은 보조 기술에 필수적입니다. 대부분의 보조 기술은 다른 애플리케이션과 마찬가지로, 인식된 접근성 API를 통해 사용자 에이전트와 상호작용합니다. 사용자 인터페이스에서 인지 가능한 객체는 접근성 API 인터페이스에 의해 접근 가능한 객체로 보조 기술에 노출됩니다. 이를 올바르게 수행하려면 역할, 상태, 속성, 그리고 컨텍스트 정보 등 접근성 정보가 접근성 API를 통해 정확하게 보조 기술에 전달되어야 합니다. 상태 변화가 발생하면, 사용자 에이전트는 접근성 API에 적절한 이벤트 알림을 제공합니다. HTML 같은 많은 호스트 언어에서는 DOM 자체가 컨텍스트 트리 계층 구조를 제공하므로 컨텍스트 정보를 파악할 수 있습니다.

일부 보조 기술은 이러한 접근성 API와 상호작용하지만, 다른 기술은 DOM에서 직접 콘텐츠를 접근할 수 있습니다. 이런 기술은 콘텐츠를 구조화, 단순화, 스타일 변경 또는 리플로우하여 다른 사용자 집단을 돕습니다. 이러한 적응의 일반적인 사용 사례로는 고령자, 인지 장애가 있는 사람, 도구 사용을 방해하는 환경에 있는 사람이 있습니다. 예를 들어, 지역 탐색 랜드마크가 있으면 모바일 기기에서는 시맨틱에 따라 한 번에 일부 콘텐츠만 보여주는 적응이 가능하며, 사용자가 한 번에 처리해야 하는 정보량을 줄일 수 있습니다. 또 다른 상황에서는 맞춤 사용자 인터페이스 컨트롤을 키보드나 터치 스크린 장치로 탐색하기 쉬운 것으로 대체하는 것이 적절할 수 있습니다.

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] 등이 있습니다.

접근성 하위 트리

접근 가능한 객체와 해당 접근성 트리에서의 자손을 의미합니다. 다른 관계(예: 부모-자식이 아닌)로 연결된 객체는 포함하지 않습니다. 예를 들어, aria-flowto로 연결된 객체는 해당 객체가 접근성 트리의 자손일 때만 포함됩니다.

접근성 트리

사용자 인터페이스(UI) 구조를 표현하는 접근 가능한 객체의 트리입니다. 접근성 트리의 각 노드는 접근성 API를 통해 노출되는 UI의 요소(예: 푸시 버튼, 체크박스, 컨테이너 등)를 나타냅니다.

접근 가능한 설명

접근 가능한 설명은 인터페이스 요소와 관련된 추가 정보를 제공하며, 접근 가능한 이름을 보완합니다. 접근 가능한 설명은 시각적으로 인지될 수도 있고, 그렇지 않을 수도 있습니다.

접근 가능한 이름

접근 가능한 이름은 사용자 인터페이스 요소의 이름입니다. 각 플랫폼 접근성 API는 접근 가능한 이름 속성을 제공합니다. 접근 가능한 이름의 값은 사용자 인터페이스 요소의 보이는(예: 버튼의 표시 텍스트) 또는 보이지 않는(예: 아이콘을 설명하는 텍스트 대체) 속성에서 파생될 수 있습니다. 관련 접근 가능한 설명도 참고하세요.

접근 가능한 이름 속성의 간단한 예는 "OK" 버튼에서 볼 수 있습니다. "OK"라는 텍스트가 접근 가능한 이름입니다. 버튼이 포커스를 받을 때, 보조 기술은 플랫폼의 역할 설명과 접근 가능한 이름을 연결해서 전달할 수 있습니다. 예를 들어, 스크린 리더는 "푸시 버튼 OK" 또는 "OK 버튼"이라고 읽을 수 있습니다. 연결 순서와 역할 설명의 구체적인 내용(예: "버튼", "푸시 버튼", "클릭 가능한 버튼" 등)은 플랫폼 접근성 API 또는 보조 기술에 의해 결정됩니다.

접근 가능한 객체

플랫폼 접근성 트리노드입니다. 접근 가능한 객체는 상태, 속성, 이벤트 등을 보조 기술이 사용할 수 있도록 노출합니다. 일반적으로 마크업 언어(HTMLSVG) 및 WAI-ARIA에서는 마크업 요소와 해당 속성이 접근 가능한 객체로 표현됩니다.

활성화 동작

사용자가 입력 장치를 통해 주로 시작하는 이벤트가 요소에 정의된 역할을 수행하게 할 때 취하는 동작입니다. 역할은 호스트 언어 또는 저자가 정의한 변수, 또는 둘 다에 의해 정의될 수 있습니다. 역할은 일반적인 동작일 수도 있고, 해당 요소에 고유한 동작일 수도 있습니다. 예를 들어, HTML 또는 SVG <a> 요소의 활성화 동작은 href 속성에 지정된 링크로 사용자 에이전트가 이동하도록 하며, 탐색할 브라우징 컨텍스트(현재 창/탭, 명명된 창, 새 창 등)를 추가로 지정할 수도 있습니다. HTML <input> 요소에서 type 속성 값이 submit인 경우, 활성화 동작은 폼 요소 값을 저자가 정의한 IRIHTTP 방식으로 전송하는 것입니다.

보조 기술

하드웨어 및/또는 소프트웨어로서:

  • 웹 콘텐츠를 검색하고 렌더링하기 위해 사용자 에이전트가 제공하는 서비스를 이용합니다.
  • 사용자 에이전트 또는 웹 콘텐츠 자체와 API를 통해 상호작용합니다.
  • 장애가 있는 사용자가 웹 콘텐츠와 상호작용할 때 사용자 에이전트가 제공하지 않는 추가 서비스를 제공합니다.

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

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

  • 렌더링된 텍스트와 이미지를 확대해 읽기 쉽게 해주는 화면 확대기;
  • 합성 음성이나 점자 디스플레이로 정보를 전달하는 스크린 리더;
  • 텍스트를 합성 음성으로 변환하는 텍스트-음성 소프트웨어;
  • 음성 명령과 받아쓰기를 가능하게 하는 음성 인식 소프트웨어;
  • 키보드를 시뮬레이션하는 대체 입력기(헤드 포인터, 화면 키보드, 단일 스위치, 입/숨 장치 등);
  • 마우스 포인트 및 클릭을 시뮬레이션하는 대체 포인팅 장치.
속성

이 명세에서 속성은 마크업 언어에서와 같이 사용됩니다. 속성은 요소에 추가되어 해당 요소가 나타내는 객체상태속성 정보를 제공합니다.

클래스

유사한 특성을 공유하는 인스턴스 객체의 집합입니다.

사용 중단됨

사용 중단된 역할, 상태, 또는 속성은 최신 방식이나 상황 변화로 인해 더 이상 사용되지 않으며, 이후 WAI-ARIA 명세 버전에서 삭제될 수 있습니다. 사용자 에이전트는 하위 호환성을 위해 사용 중단된 항목을 계속 지원하는 것이 권장됩니다. 자세한 내용은 적합성 섹션의 사용 중단 요구 사항을 참조하세요.

데스크탑 포커스 이벤트

접근성 API를 통해 호스트 운영체제에서 입력 포커스 변경을 알리는 이벤트입니다.

DOMString
16비트 부호 없는 정수 시퀀스로, 일반적으로 UTF-16 코드 단위로 해석됩니다. 이는 자바스크립트의 기본 String 타입에 해당합니다.
요소

이 명세에서 요소는 마크업 언어에서와 같이 사용됩니다. 요소는 마크업 언어에서 객체의 데이터 프로파일을 포함하는 구조적 요소입니다.

이벤트

컴퓨팅 시스템의 다른 객체에 상태의 개별적 변화를 전달하는 프로그래밍 메시지입니다. 웹 페이지에 대한 사용자 입력은 상호작용을 설명하고 문서 객체의 상태 변화를 알릴 수 있는 추상 이벤트를 통해 중재됩니다. 일부 프로그래밍 언어에서는 이벤트를 알림(notification)이라고도 합니다.

노출하다

접근성 API에 플랫폼별로 번역되어 핵심 접근성 API 매핑에서 정의됩니다.

그래픽 문서

사용자가 탐색할 수 있는 부분을 포함한 그래픽 표현을 가진 문서입니다. 차트, 지도, 다이어그램, 청사진, 대시보드 등이 그래픽 문서에 해당합니다. 그래픽 문서는 기호, 이미지, 텍스트, 그래픽 원시(원, 점, 선, 경로, 사각형 등) 조합으로 구성될 수 있습니다.

숨김

요소가 모든 사용자에게 보이지 않거나, 인지 불가 또는 상호작용 불가임을 나타냅니다. 요소 자체나 상위 요소 중 하나가 렌더링되지 않거나 명시적으로 숨겨져 있으면 숨김으로 간주됩니다.

정보 제공용

적합성을 위해 요구되지 않고 정보 제공을 위해 제공되는 콘텐츠입니다. 적합성에 필요한 콘텐츠는 규범적이라고 합니다.

키보드 접근 가능

키보드 또는 키보드 입력을 모방하는 보조 기술(예: 입/숨 튜브)로 사용자에게 접근 가능한 것을 의미합니다. 본 문서의 관련 내용은 WCAG 2.1 가이드라인 2.1: 모든 기능을 키보드로 이용 가능하게 하기 [WCAG21]을 참조하세요.

랜드마크

사용자가 빠르게 접근하고자 하는 페이지의 특정 영역 유형입니다. 해당 영역의 콘텐츠는 페이지의 다른 영역과 다르며, 탐색, 검색, 주요 콘텐츠 열람 등 특정 사용자 목적에 관련되어 있습니다.

라이브 리전

라이브 리전은 일반적으로 외부 이벤트로 업데이트되는 웹 페이지의 인지 가능한 영역입니다. 이러한 영역은 항상 사용자 상호작용의 결과로 업데이트되는 것은 아닙니다. 라이브 리전의 예로는 채팅 로그, 주식 시세 표시기, 경기 통계를 주기적으로 갱신하는 스포츠 점수판 등이 있습니다. 이러한 비동기 영역은 사용자의 포커스 영역 이외에서 업데이트되므로, 스크린 리더와 같은 보조 기술이 그 존재를 인식하지 못하거나 사용자에게 정보를 처리해주지 못하는 경우가 있었습니다. WAI-ARIA는 저자가 라이브 리전을 식별하고 처리할 수 있도록 aria-live, aria-relevant, aria-atomic, aria-busy 속성 집합을 제공합니다.

주요 콘텐츠 요소

구현 호스트 언어의 주요 콘텐츠 요소로, HTML의 경우 body 요소 등이 해당합니다.

관리되는 상태

접근성 API 상태 중 사용자 에이전트가 제어하는(예: 포커스, 선택 등) 상태입니다. 이는 일반적으로 저자가 제어하는 "관리되지 않는 상태"와 대비됩니다. 하지만 저자는 aria-posinset, aria-setsize와 같은 일부 관리되는 상태를 덮어쓸 수 있습니다. 많은 관리되는 상태는 :focus 등의 CSS 의사 클래스 및 ::selection과 같은 의사 요소에 대응하며, 이 역시 사용자 에이전트에 의해 갱신됩니다.

네메스 점자

네메스 점자 수학 코드(Nemeth Braille Code for Mathematics)는 수학 및 과학 표기법을 점자로 인코딩하는 점자 코드입니다. 네메스 점자 위키백과.

노드

DOM 트리 또는 접근성 트리에서 객체의 기본 유형입니다. DOM 노드는 요소 또는 텍스트 노드 등이 될 수 있습니다. 접근성 트리의 노드는 접근 가능한 객체입니다.

규범적

적합성에 반드시 필요한 내용을 의미합니다. 반대로 정보 제공용 또는 "비규범적"으로 표시된 콘텐츠는 적합성에 필요하지 않습니다.

객체

사용자 인터페이스 맥락에서, 마크업 언어에서 하나 이상의 요소로 표현되며, 사용자 에이전트에 의해 렌더링되는 지각적 사용자 경험의 항목입니다.

프로그래밍 맥락에서는, 하나 이상의 클래스 및 인터페이스의 인스턴스이며, 유사 객체의 일반 특성을 정의합니다. 접근성 API의 객체는 하나 이상의 DOM 객체를 나타낼 수 있습니다. 접근성 APIDOM 인터페이스와 구분되는 인터페이스를 정의합니다.
온톨로지

클래스의 특성과 그들 간의 관계를 설명한 것입니다.

조작 가능

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

소유된 요소

소유된 요소는 DOM 내에서 요소의 자손, aria-owns로 지정된 자식, 또는 소유된 자식의 DOM 자손을 의미합니다.

소유하는 요소

소유하는 요소는 DOM 내에서 요소의 상위 요소, 또는 aria-owns 속성이 해당 요소의 ID를 참조하는 요소를 의미합니다.

인지 가능

사용자가 감각적으로 인식할 수 있도록 표현된 것을 의미합니다. 본 문서의 관련 내용은 WCAG 2.1 원칙 1: 콘텐츠는 인지 가능해야 함 [WCAG21]을 참조하세요.

속성

특정 속성 중 객체의 본질적 특성이나 데이터 값을 나타내는 것을 의미합니다. 속성 변경은 객체의 의미 또는 표현에 큰 영향을 줄 수 있습니다. 일부 속성(예: aria-multiline)은 상태보다 변동이 적지만, 변경 빈도의 차이가 규칙은 아닙니다. aria-activedescendant, aria-valuenow, aria-valuetext 등 자주 바뀌는 속성도 있습니다. 상태와 속성 구분도 참고하세요.

관계

두 개의 구별되는 사물 간의 연결입니다. 관계는 한 객체가 다른 객체를 라벨링하거나, 제어하는 등 다양한 유형이 있을 수 있습니다.

역할

타입의 주요 지표입니다. 이 시맨틱 연결은 도구가 객체 유형에 대한 사용자 기대에 부합하도록 객체를 표현하고 상호작용을 지원할 수 있게 합니다.

루트 WAI-ARIA 노드

비메타데이터 콘텐츠를 포함하는 주요 요소입니다. 많은 언어에서는 문서 요소가 해당되지만, HTML에서는 <body>가 해당됩니다.

시맨틱

사람이 이해하는 의미를, 컴퓨터가 객체(예: 요소, 속성 등)의 표현을 처리할 수 있도록 정의한 것입니다. 이를 통해 다양한 사람이 객체를 일관되게 이해할 수 있도록 합니다.

상태

상태는 속성의 동적 형태로, 객체가 사용자 동작이나 자동화된 프로세스에 따라 변화할 수 있는 특성을 나타냅니다. 상태는 객체의 본질적 특성에 영향을 미치지는 않지만, 객체와 사용자 상호작용 가능성에 관련된 데이터를 표현합니다. 상태와 속성 구분도 참고하세요.

서브 문서

<frame>, <iframe> 또는 유사한 메커니즘으로 생성된 모든 문서입니다. 서브 문서는 다른 서버에서 가져온 캘린더와 같은 위젯, 애플리케이션, 일반 문서 등을 포함할 수 있습니다. 접근성 트리에서는 이 상황에 대해 두 개의 접근 가능한 객체가 존재하는데, 하나는 부모 문서의 <frame>/<iframe> 요소를 나타내며, 그 자식으로 파생된 문서 콘텐츠를 나타내는 접근 가능한 객체가 있습니다.

대상 요소

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

분류체계

여러 클래스의 특성이 서로 어떻게 관련되는지 계층적으로 정의한 것으로, 계층 내에서 클래스는 상위 클래스의 속성을 상속합니다. 분류체계는 온톨로지의 공식 정의의 일부가 될 수 있습니다.

텍스트 노드

DOM 노드의 한 종류로, 속성 또는 요소의 텍스트 콘텐츠를 나타냅니다. 텍스트 노드는 자식 노드가 없습니다.

툴팁 속성

데스크탑 사용자 에이전트에서 마우스 오버 등의 동작에 반응해 툴팁을 생성하는 모든 호스트 언어 속성입니다.

이해 가능

사용자가 적절한 의미를 구성할 수 있도록 표현된 것을 의미합니다. 본 문서의 관련 내용은 WCAG 2.1 원칙 3: 정보와 UI 동작은 이해 가능해야 함 [WCAG21]을 참조하세요.

유니코드 점자 패턴

유니코드에서 점자는 Braille Patterns(U+2800..U+28FF) 블록에 정의되어 있습니다. 이 블록에는 8점 점자 셀의 모든 256가지 패턴이 포함되어 있으며, 6점 셀 범위(U+2800..U+283F)도 포함합니다. 모든 점자 시스템에서 dots-0(U+2800)은 공백이나 내용 없음(빈 점자 패턴)을 나타냅니다. 점자 패턴 위키백과.

사용자 에이전트

웹 콘텐츠를 검색, 렌더링하고 최종 사용자 상호작용을 지원하는 모든 소프트웨어를 의미합니다. 이 정의는 다른 문서의 정의와 다를 수 있습니다.

유효한 IDREF

같은 문서 내에서 일치하는 ID를 가진 대상 요소에 대한 참조입니다.

위젯

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

3. 적합성

Accessible Rich Internet Applications의 주요 콘텐츠는 규범적이며, 적합성 선언에 영향을 주는 요구 사항을 정의합니다. 도입부, 부록, "비규범적"으로 표시된 섹션과 그 하위 섹션, 다이어그램, 예시, 참고 사항 등은 정보 제공용(비규범적)입니다. 비규범적 자료는 가이드라인 해석에 도움을 주기 위한 권고 정보를 제공하지만, 적합성 선언에 영향을 주는 요구 사항을 만들지는 않습니다.

규범적 섹션은 구현이 이 명세에 적합하도록 사용자 에이전트가 따라야 하는 요구 사항을 제공합니다. 본 문서에서 MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, RECOMMENDED, MAY, 그리고 OPTIONAL 키워드는 RFC에서 요구 수준을 나타내기 위한 키워드 [RFC2119]에서 설명한 대로 해석해야 합니다. RFC-2119 키워드는 대문자로 표기되고 class="rfc2119"가 설정된 요소에 포함됩니다. 위에 표시된 키워드가 사용되었지만 이 형식을 공유하지 않는 경우, RFC 2119의 공식 정보로 전달하지 않고, 단순히 설명적(즉, 정보 제공용)입니다. 이러한 사용은 본 명세서에서 최대한 피하고 있습니다.

규범적 섹션은 저자, 사용자 에이전트, 보조 기술이 이 명세에 맞는 구현을 위해 MUST 따라야 하는 요구 사항을 제공합니다.

비규범적(정보 제공용) 섹션은 명세 이해에 유용한 정보를 제공합니다. 이러한 섹션에는 권장 관행의 예가 포함될 수 있지만, 이 명세에 적합하기 위해 반드시 이를 따를 필요는 없습니다.

3.1 호스트 언어와의 비간섭

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

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

3.2 모든 WAI-ARIADOM에 적용됨

W3C DOM 명세를 따르지 않는 문서 객체 모델을 구현하는 적합한 사용자 에이전트는 역할의 콘텐츠 속성과 WAI-ARIA 역할 값WAI-ARIA 상태 및 속성을 저자가 지정한 대로 DOM에 포함해야 하며, 처리 과정이 요소가 접근성 API에 어떻게 노출될지에 영향을 미칠 수 있더라도 마찬가지입니다. 이렇게 하면 각 역할 속성과 모든 WAI-ARIA 상태 및 속성(값 포함)이 문서 내에 수정되지 않은 형태로 유지되므로, 보조 기술 등 다른 도구가 접근할 수 있습니다. 적합한 W3C DOM은 이 기준을 만족합니다.

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

보조 기술(예: 음성 인식 시스템, 이동 장애 사용자를 위한 대체 입력 장치)은 장치에 독립적으로 웹 애플리케이션을 제어할 수 있어야 합니다. WAI-ARIA 상태속성은 리치 인터넷 애플리케이션 구성요소의 현재 상태를 반영합니다. 보조 기술이 웹 애플리케이션에 필요한 변경 사항을 알릴 수 있다는 것은, 사용자가 표준 입력 장치를 직접 제어할 수 없는 경우에도 대체 입력 솔루션이 애플리케이션을 제어할 수 있도록 해주므로 필수적입니다.

사용자 에이전트는 시스템 접근성 API에서 상태나 속성에 변경이 생길 때 웹 애플리케이션에 알릴 수 있는 방법을 MUST 제공해야 합니다. 마찬가지로, 웹 애플리케이션 저자는 사용자 에이전트 또는 보조 기술로부터 변경 요청을 알림 받았을 때 웹 애플리케이션을 적절히 업데이트해야 SHOULD 합니다.

참고

많은 상태 및 속성은 기본 액션 이벤트에 응답해 기존 접근성 API를 통해 보조 기술이 변경할 수 있습니다. 예를 들어, aria-selected 상태는 tabtabpanel에서 요소의 기본 액션을 트리거하면 변경할 수 있습니다.

3.4 적합성 검사기

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

3.5 사용 중단 요구 사항

기술이 발전함에 따라, 어떤 사용 사례를 더 잘 해결할 수 있는 새로운 방식이 등장하기도 하며, 이는 이전에 정의된 기능보다 더 효과적으로 동작합니다. 하지만 이전 기능의 기존 구현이 있기 때문에, 해당 기능을 적합성 모델에서 바로 제거하면 기존에 적합했던 콘텐츠가 비적합하게 되어버릴 수 있습니다. 이 경우, 이전 기능은 "사용 중단됨"으로 표시됩니다. 이는 해당 기능이 적합성 모델에서 허용되며 사용자 에이전트가 지원할 것으로 기대되지만, 저자가 새로운 콘텐츠에는 사용하지 않는 것이 권장됨을 의미합니다. 향후 명세 버전에서 해당 기능이 더 이상 널리 사용되지 않는 경우, 해당 기능이 제거되고 사용자 에이전트가 더 이상 지원하지 않아도 될 수 있습니다.

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">파일 열기…</li>

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

역할을 부여하면 보조 기술이 각 요소를 어떻게 처리할지 정보를 알 수 있습니다. WAI-ARIA 역할이 호스트 언어 시맨틱을 재정의할 때, DOM에는 변화가 없고 접근성 트리만 변경됩니다.

사용자 에이전트는 role 속성 값에서 토큰 시퀀스 중 첫 번째로 WAI-ARIA의 비추상 역할 이름과 일치하는 토큰을 MUST 사용해야 합니다. 다음 단계로 적용 가능한 WAI-ARIA 역할을 올바르게 식별할 수 있습니다:

  1. 호스트 언어의 규칙을 사용하여 요소에 role 속성이 있는지 감지하고, 해당 속성 값 문자열을 식별합니다.
  2. 속성 값 문자열을 공백으로 분리하여, 공백 없는 부분 문자열 시퀀스로 구분합니다.
  3. 부분 문자열을 모든 비추상 WAI-ARIA 역할 이름과 비교합니다. 비교의 대소문자 구분은 호스트 언어의 규칙을 따릅니다.
  4. 텍스트 순서상 비추상 WAI-ARIA 역할 이름과 일치하는 첫 부분 문자열을 사용합니다.

4.2 WAI-ARIA 상태 및 속성

WAI-ARIA는 다양한 운영체제 플랫폼의 플랫폼 접근성 API 지원을 위해 접근성 상태속성 모음을 제공합니다. 보조 기술은 노출된 사용자 에이전트 DOM 또는 플랫폼 접근성 API로부터 이 정보를 얻을 수 있습니다. 역할과 결합될 때, 사용자 에이전트는 사용자 인터페이스 정보를 보조 기술에 제공하여 사용자가 언제든지 전달받을 수 있도록 합니다. 상태나 속성의 변화는 보조 기술에 알림이 전달되어 사용자에게 변경이 있음을 알릴 수 있습니다.

다음 예제에서, 리스트 항목(html:li)을 이용해 체크 가능한 메뉴 항목을 만들고, JavaScript 이벤트로 마우스와 키보드 이벤트를 캡처하여 aria-checked 값의 토글을 처리합니다. 역할은 이 단순한 위젯의 동작을 사용자 에이전트에 알리기 위해 사용됩니다. 사용자 동작에 따라 변하는 속성(예: aria-checked)은 상태 및 속성 섹션에서 정의됩니다.

<li role="menuitemcheckbox" aria-checked="true">마지막 수정일 기준 정렬</li>

접근성 상태 중 관리되는 상태는 사용자 에이전트가 제어합니다. 관리되는 상태의 예로는 키보드 포커스, 선택 등이 있습니다. 관리되는 상태는 :focus::selection과 같은 CSS 의사 클래스와 관련이 있습니다. 반면, 이 명세의 상태는 주로 저자가 제어하며, 관리되지 않는 상태라고 부릅니다. aria-posinset, aria-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" role="presentation" alt="">
  <!-- 참고: 이미지를 토글하려면 추가 스크립트 필요 -->
  마지막 수정일 기준 정렬
</li>

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

표준 HTML 인터랙티브 요소와 단순 WAI-ARIA 위젯을 사용할 때, 애플리케이션 개발자는 문서 내 요소의 탭 순서를 조작하거나 키보드 단축키를 연결할 수 있습니다.

WAI-ARIA에는 "관리 컨테이너" 위젯(컴포지트 위젯으로도 불림)이 여러 개 포함되어 있습니다. 상황에 따라 컨테이너는 마지막으로 활성화된 자손을 추적해야 하며(기본값은 보통 첫 번째 항목임), 포커스가 컨테이너를 벗어났다가 다시 돌아올 때 항상 일관된 전략을 유지해야 합니다. 예외도 있을 수 있지만, 컨테이너에 포커스가 다시 돌아올 때 활성 자손이 마지막으로 포커스된 자손인 것이 권장됩니다. 예외로는 컨테이너 위젯의 내용이 변경된 경우나 메뉴바처럼 포커스를 벗어나면 항상 첫 항목으로 돌아가는 것이 기대되는 위젯이 있습니다. 예를 들어, 트리 그룹의 두 번째 항목이 활성 자손일 때 사용자가 트리 그룹에서 탭으로 벗어나면, 다시 포커스가 돌아왔을 때도 두 번째 항목이 활성 자손이어야 합니다. 사용자는 컨테이너 내부의 자손을 클릭해서 컨테이너를 활성화할 수도 있습니다. 컨테이너나 활성 자손에 포커스가 있을 때, 사용자는 추가 키(예: 방향키)를 눌러 현재 활성 자손을 변경하며 컨테이너를 탐색할 수 있습니다. 메인 내비게이션 키(TAB 키 등)를 추가로 누르면 컨테이너를 벗어나 다음 위젯으로 이동합니다.

리치 인터넷 애플리케이션에서의 키보드 내비게이션은 정적 문서의 링크, 폼 컨트롤 등 인터랙티브 요소 간 탭 패러다임과 다릅니다. 리치 인터넷 애플리케이션에서는 사용자가 복잡한 위젯(예: 메뉴, 스프레드시트 등)에 탭으로 진입한 뒤, 방향키로 위젯 내를 탐색합니다. WAI-ARIA가 도입한 키보드 내비게이션 변화가 이러한 접근성 향상을 가능하게 합니다. WAI-ARIA에서는 모든 요소가 키보드 포커스를 받을 수 있습니다. tabindex 등 호스트 언어 메커니즘 외에 aria-activedescendant는 키보드 조작을 위한 또 다른 메커니즘을 제공합니다. WAI-ARIA 위젯 개발의 대부분은 키보드 내비게이션이 제대로 동작하는 것에 의존합니다.

아래에 설명된 대로 aria-activedescendant를 구현할 때, 사용자 에이전트는 DOM 포커스를 컨테이너 요소 또는 컨테이너를 제어하는 입력 요소에 유지합니다. 그러나 사용자 에이전트는 데스크탑 포커스 이벤트와 상태를 보조 기술에 aria-activedescendant가 참조하는 요소에 포커스가 있는 것처럼 전달합니다. 사용자 에이전트는 활성 자손이 컨테이너의 자손인지 확인할 필요는 없습니다. 사용자 에이전트는 키보드 이벤트가 DOM 포커스를 가진 요소에서 처리되도록 해야 합니다. 활성 자손에 전달된 키보드 이벤트는 DOM 포커스를 가진 요소로 버블링되어 처리됩니다.

4.3.1 저자 안내

저자가 포커스가 있는 요소를 제거할 경우, 논리적인 다른 요소로 포커스를 이동해야 SHOULD 합니다. 마찬가지로, 저자는 사용자가 스크롤 액션을 수행하지 않은 한 포커스가 있는 요소를 화면 밖으로 스크롤하지 않아야 SHOULD 합니다.

저자는 모든 인터랙티브 요소가 포커스를 받을 수 있고, 컴포지트 위젯의 모든 부분이 포커스를 받을 수 있거나 기능을 수행할 대체 방법이 문서화되어 있어야 SHOULD 합니다.

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

WAI-ARIA를 지원하는 사용자 에이전트는 tabindex, focus, blur 등 호스트 언어 메커니즘을 모든 요소에 사용할 수 있도록 확장합니다. 호스트 언어가 지원하는 경우, 저자는 div, span, img 등 어떤 요소라도 tabindex="0"를 설정해 기본 탭 순서에 추가할 수 MAY 있습니다. 또한, tabindex가 음수이면 스크립트나 마우스 클릭으로 포커스는 가능하지만 기본 탭 순서에는 포함되지 않습니다. 이는 [HTML]과 [SVG2] 모두에서 지원됩니다.

저자는 aria-activedescendant를 활용해 보조 기술에 어떤 widget 요소의 자손이 UI에서 키보드 포커스를 가진 것으로 처리되는지 알릴 수 MAY 있습니다. 해당 위젯 요소의 역할이 aria-activedescendant를 지원하는 경우에 적용할 수 있으며, 이는 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로 참조되는 경우는 두 가지가 있는데, 하나는 해당 요소가 소유된 경우, 다른 하나는 combobox, textbox, searchbox 역할의 요소에 의해 제어되는 경우입니다.
    1. 해당 요소가 WAI-ARIA 역할을 가지고 있다면 포커스 가능해야 합니다. aria-activedescendant 속성에 의해 참조될 수 있기 때문입니다. role 속성이 없는 네이티브 요소는 별도로 검사할 필요가 없습니다. 네이티브 시맨틱이 포커스 가능 상태를 결정합니다.
    2. 해당 요소가 aria-activedescendant 속성의 대상이고, 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를 가지고 있고, aria-activedescendant 속성이 있고 DOM 포커스를 가진 컨테이너 요소에 소유된 경우, 또는 aria-activedescendant 속성이 있고 DOM 포커스를 가진 요소에 의해 제어되는 컨테이너에 소유된 경우, 사용자 에이전트는 해당 요소에 접근성 API 포커스 상태를 설정하고 이벤트를 발생시켜야 MUST 합니다.

5. 역할 모델

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

역할, 역할의 특성, 지원하는 상태 및 속성, 그리고 마크업에서의 사용 명세는 모두 규범적입니다.

DOM의 콘텐츠를 반영하기 위해, 사용자 에이전트는 역할 속성을 구현된 접근성 API의 적절한 값에 매핑해야 하며(SHOULD), 역할 속성이 변경될 때 매핑을 업데이트해야 합니다(SHOULD).

5.1 개념 간의 관계

역할 모델은 WAI-ARIA 역할을 서로 및 HTML과 같은 다른 명세의 개념과 관련짓기 위해 다음 관계들을 사용합니다.

5.1.1 슈퍼클래스 역할

현재 서브클래스 역할이 역할 모델에서 확장하는 역할입니다. 이 확장으로 인해 슈퍼클래스 역할의 모든 속성과 제약 조건이 서브클래스 역할로 전달됩니다. 잘 알려진 안정적인 명세를 제외하면, 상속은 이 명세 내에서 정의된 항목에만 제한될 수 있으며, 외부 항목이 변경되어 상속된 클래스에 영향을 주지 않도록 합니다.

5.1.2 서브클래스 역할

이 역할이 슈퍼클래스인 역할들의 정보 제공용 목록입니다. 명세의 가독성을 높이기 위해 제공되며, 새로운 정보를 추가하지 않습니다.

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

예를 들어, 진행 표시줄(progress bar)은 상태 표시기(status indicator)와 유사합니다. 따라서 progressbar 위젯status를 포함하는 관련 개념을 가집니다. 하지만 status의 정의가 수정되어도 progressbar의 정의에는 영향을 미치지 않습니다.

5.1.4 기본 개념

객체역할의 원형(prototype)으로 간주되는 것에 대한 정보입니다. 기본 개념은 타입과 유사하지만, 제한과 속성의 상속이 없습니다. 기본 개념은 외부 개념에 대한 상속을 대신하는 목적으로 설계되었습니다. 기본 개념은 관련 개념과 유사하지만, 거의 역할 정의와 동일하다는 점이 다릅니다.

예를 들어, 이 문서에서 정의된 checkbox는 [HTML]에서 정의된 <input[type="checkbox"]>와 기능 및 예상 동작이 유사합니다. 따라서 checkbox에는 [HTML]의 checkboxbaseConcept로 지정됩니다. 하지만 원래 [HTML] checkbox baseConcept 정의가 변경되어도, 이 문서의 checkbox 정의에는 영향이 없습니다. 각각의 타입에 대한 실제 상속이 없기 때문입니다.

5.2 역할의 특성

역할은 그 특성으로 정의되고 설명됩니다. 특성은 역할의 구조적 기능, 즉 역할이 무엇인지, 그 배경 개념, 역할이 포함할 수 있거나 반드시 포함해야 하는 인스턴스를 정의합니다. 위젯의 경우, 이는 HTML 폼과의 매핑을 기반으로 사용자 에이전트와 어떻게 상호작용하는지도 포함됩니다. 역할이 지원하는 WAI-ARIA의 상태와 속성도 표시됩니다.

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

5.2.1 추상 역할

Boolean

추상 역할은 모든 WAI-ARIA 역할의 기반이 됩니다. 콘텐츠 저자는 추상 역할을 MUST NOT 사용해야 하며, 이는 API 바인딩에서 구현되지 않기 때문입니다. 사용자 에이전트는 추상 역할을 접근성 API의 표준 역할 매커니즘에 MUST NOT 매핑해야 합니다. 추상 역할은 다음에 도움을 줍니다:

  1. 역할 모델을 조직하고, 알려진 개념의 맥락에서 역할의 의미를 제공합니다.
  2. 필요한 기능을 포함하는 역할 추가를 간소화합니다.

5.2.2 필수 상태 및 속성

상태속성은 특정 역할 및 서브클래스 역할에 필수적으로 요구됩니다. 콘텐츠 저자는 필수 상태 및 속성에 대해 비어 있지 않은 MUST 제공해야 합니다. 콘텐츠 저자는 undefined 값이 해당 상태나 속성의 명시적으로 지원되는 값이 아닌 한, 필수 상태 및 속성에 undefined 값을 MUST NOT 사용해야 합니다.

객체가 여러 조상에서 상속받을 때 한 조상이 속성 지원을, 다른 조상이 속성 필수를 표시하면, 해당 속성은 상속받는 객체에서 필수로 간주됩니다.

참고

적절한 암시적 WAI-ARIA 시맨틱을 가진 호스트 언어 속성은 이 요구사항을 충족합니다.

5.2.3 지원되는 상태 및 속성

상태속성은 해당 역할 및 하위 역할에 적용됩니다. 콘텐츠 저자는 지원되는 상태 및 속성에 MAY 제공할 수 있지만, 기본값으로 충분한 경우에는 꼭 필요하지 않습니다. 사용자 에이전트는 해당 역할의 모든 지원되는 상태 및 속성을 접근성 APIMUST 매핑해야 합니다. 상태나 속성이 정의되지 않았고 역할에 기본값이 있다면, 사용자 에이전트는 기본값을 SHOULD 노출해야 합니다.

참고

적절한 암시적 WAI-ARIA 시맨틱을 가진 호스트 언어 속성은 이 요구사항을 충족합니다.

5.2.4 상속된 상태 및 속성

이 역할이 슈퍼클래스 역할로부터 상속받는 속성의 정보 제공용 목록입니다. 상태속성은 역할 모델에서 슈퍼클래스 역할로부터 상속되며, DOM 트리의 조상 요소로부터 상속되지 않습니다. 이러한 속성은 역할에 명시적으로 정의되지 않으며, 속성 상속은 자동으로 이루어집니다. 이 정보는 명세의 가독성을 위해 제공됩니다. 지원되는 상태와 속성 세트와 상속된 상태 및 속성 세트가 결합되어 역할이 지원하는 전체 상태 및 속성 집합을 형성합니다.

5.2.5 금지된 상태 및 속성

해당 역할에서 금지된 상태 및 속성 목록입니다. 저자는 금지된 상태나 속성을 MUST NOT 지정해야 합니다.

참고

적절한 암시적 WAI-ARIA 시맨틱을 가진 호스트 언어 속성도 본 섹션의 상태나 속성을 금지합니다.

5.2.6 필수 포함 요소

해당 역할을 가진 요소가 소유하게 될 요소입니다. 예를 들어, list 역할을 가진 요소는 listitem 역할을 가진 요소를 최소 하나 소유해야 합니다.

역할에 대해 여러 개의 필수 포함 요소가 지정된 경우, 필수 소유 요소 중 하나 이상의 인스턴스가 있어야 합니다. 이 명세는 나열된 모든 소유 역할 각각의 인스턴스를 요구하지 않습니다. 예를 들어, menumenuitem, menuitemcheckbox, 또는 menuitemradio 중 하나 이상의 인스턴스를 가져야 하며, 각 역할을 모두 하나씩 가져야 하는 것은 아닙니다.

필수 소유 요소가 누락될 때가 있을 수 있는데, 예를 들어 편집 도중이거나 데이터 세트 로딩 중인 경우입니다. 위젯이 스크립트 실행이나 로딩으로 인해 필수 포함 요소가 누락된 경우, 저자는 포함하는 요소에 aria-busytrueMUST 표시해야 합니다. 예를 들어, 페이지가 완전히 초기화되고 완성될 때까지 문서 요소를 busy로 표시할 수 있습니다.

참고

'필수 포함 요소'가 있는 역할은 역방향 관계를 의미하지 않습니다. 특정 역할의 요소가 자손으로 존재해야 역할 처리가 완전하지만, 이 목록에 있는 역할의 요소가 항상 해당 역할 요소 내부에 존재할 필요는 없습니다. 필수 컨텍스트 역할에서 특정 역할 요소가 포함되어야 하는 컨텍스트에 대한 요구사항을 참고하세요.

참고

'필수 포함 요소'의 서브클래스 역할을 가진 요소는 이 요구사항을 충족하지 않습니다. 예를 들어, listbox 역할은 option 또는 group 역할을 가진 요소를 소유해야 합니다. group 역할이 row의 슈퍼클래스이더라도, row 역할을 가진 소유 요소를 추가하는 것으로 listboxoption 또는 group을 소유해야 하는 요구사항을 충족하지 않습니다.

참고

적절한 암시적 WAI-ARIA 시맨틱을 가진 요소는 이 요구사항을 충족합니다.

5.2.7 필수 컨텍스트 역할

필수 컨텍스트 역할은 해당 역할이 허용되는 소유 컨테이너를 정의합니다. 역할에 필수 컨텍스트가 있으면, 저자는 해당 역할의 요소가 필수 컨텍스트 역할을 가진 요소 내부(혹은 소유됨)이어야 MUST 합니다. 예를 들어, listitem 역할을 가진 요소는 list 역할을 가진 요소 내부(혹은 소유됨)에서만 의미가 있습니다.

참고

'필수 컨텍스트 역할'이 있는 역할은 역방향 관계를 의미하지 않습니다. 특정 역할의 요소가 나열된 역할 요소 내에 존재해야만 의미가 있지만, 나열된 역할 요소가 항상 해당 역할의 자손 요소를 포함해야 하는 것은 아닙니다. 자손의 존재가 처리에 필요한 요소에 대한 요구사항은 필수 포함 요소에서 참고하세요.

참고

적절한 암시적 WAI-ARIA 시맨틱을 가진 요소는 이 요구사항을 충족합니다.

5.2.8 접근 가능한 이름 계산

다음 값 중 하나:
  1. author: 이름은 aria-label 속성, aria-labelledby 속성, 호스트 언어의 라벨링 메커니즘(예: HTMLalt 또는 title 속성, 단 HTML title 속성은 텍스트 대체 지정에서 가장 낮은 우선순위) 등 명시적 마크업 기능에서 저자가 제공한 값에서 옵니다.
  2. contents: 이름은 요소 노드의 텍스트 값에서 옵니다. 이는 일부 역할에서 "author"와 함께 허용될 수 있지만, 더 높은 우선순위의 "author" 기능이 제공되지 않을 때만 콘텐츠가 사용됩니다. 우선순위는 접근 가능한 이름 및 설명 계산 알고리즘 [ACCNAME-1.2]에 정의되어 있습니다.
  3. prohibited: 해당 요소는 저자로부터 이름을 지원하지 않습니다. 저자는 aria-label 또는 aria-labelledby 속성으로 요소에 이름을 지정해서는 MUST NOT 안 됩니다.
5.2.8.1 이름 계산

이름 계산은 Accessible Name and Description 명세에서 정의합니다.

5.2.8.2 설명 계산

설명 계산은 Accessible Name and Description 명세에서 정의합니다.

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

접근 가능한 이름 및 설명 계산은 Accessible Name and Description 명세에서 정의합니다.

5.2.8.4 저자가 지정할 수 있는 이름을 지원하는 역할
5.2.8.5 콘텐츠에서 이름을 지원하는 역할
5.2.8.6 이름 지정이 불가한 역할(이름 금지됨)

5.2.9 표현용 자식 요소

Boolean (true | false)

DOM 자손은 표현용입니다. 사용자 에이전트는 이 요소의 자손을 플랫폼 접근성 APISHOULD NOT 노출해야 합니다. 사용자 에이전트가 자손 노드를 숨기지 않으면, 일부 정보가 두 번 읽힐 수 있습니다.

5.2.10 역할의 암시적 값

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

5.3 역할 분류

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

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

역할은 다음과 같이 분류됩니다:

  1. 추상 역할
  2. 위젯 역할
  3. 문서 구조 역할
  4. 랜드마크 역할
  5. 라이브 리전 역할
  6. 윈도우 역할

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, table, grid, treegrid에 이름을 붙이고 설명할 수 있는 표시 콘텐츠입니다.
cell
표 형식 컨테이너의 셀입니다. 관련: gridcell.
checkbox
세 가지 (true, false, mixed)을 가질 수 있는 체크 가능한 입력입니다.
code
컴퓨터 코드 조각을 나타내는 콘텐츠 섹션입니다.
columnheader
열의 헤더 정보를 담는 셀입니다.
combobox
input이 다른 요소(예: listbox, grid)를 제어하며, 사용자가 input의 값을 설정하는 데 도움을 주도록 동적으로 팝업될 수 있습니다.
command
입력 데이터를 받지 않고 동작만 수행하는 위젯 형태입니다.
complementary
landmark로, DOM 계층에서 메인 콘텐츠와 유사한 레벨에 있으면서도 분리되어도 의미가 유지되는 보조 콘텐츠입니다.
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
하나 이상의 행과 여러 셀을 포함하는 컴포지트 widget으로, 셀 일부 또는 전체를 방향키 등 2차원 내비게이션 방법으로 포커스할 수 있습니다.
gridcell
grid 또는 treegridcell입니다.
group
페이지 요약이나 목차에 보조 기술에 포함되지 않는 사용자 인터페이스 객체 집합입니다.
heading
페이지 섹션의 제목입니다.
img
이미지를 구성하는 요소 집합을 담는 컨테이너입니다.
input
사용자 입력을 받을 수 있는 일반적인 위젯 유형입니다.
insertion
추가된 것으로 표시된 콘텐츠 또는 추가 제안 중인 콘텐츠를 포함합니다. 관련: deletion.
landmark
저자가 지정한 특정 목적에 관련된 콘텐츠를 담은 인지 가능한 section이며, 사용자가 쉽게 탐색하거나 페이지 요약에 포함되기를 원할 만큼 중요한 영역입니다. 페이지 요약은 사용자 에이전트나 보조 기술이 동적으로 생성할 수 있습니다.
link
내부 또는 외부 리소스에 대한 인터랙티브 참조로, 활성화 시 사용자 에이전트가 해당 리소스로 이동합니다. 관련: button.
list
listitem 요소를 포함하는 section입니다. 관련: listbox.
listbox
사용자가 선택지를 리스트에서 하나 이상 선택할 수 있는 위젯입니다. 관련: combobox, list.
listitem
리스트 또는 디렉터리의 단일 항목입니다.
log
새 정보가 의미 있는 순서대로 추가되고 오래된 정보가 사라질 수 있는 라이브 리전의 한 유형입니다. 관련: marquee.
main
문서의 주요 콘텐츠를 담는 landmark입니다.
marquee
비필수 정보가 빈번하게 변하는 라이브 리전 유형입니다. 관련: log.
math
수학 표현을 나타내는 콘텐츠입니다.
meter
알려진 범위 내의 스칼라 측정 또는 분수 값을 나타내는 요소입니다. 관련: progressbar.
menu
사용자에게 선택지를 제공하는 위젯의 한 유형입니다.
menubar
일반적으로 수평으로 표시되며, menu의 프레젠테이션입니다.
menuitem
menu 또는 menubar에 포함된 선택지 옵션입니다.
menuitemcheckbox
체크 가능한 상태(true, false, mixed 값)를 가지는 menuitem입니다.
menuitemradio
동일 역할의 요소 집합에서 오직 하나만 체크될 수 있는 체크 가능한 menuitem입니다.
navigation
문서 또는 관련 문서를 탐색하기 위한 내비게이션 요소(주로 링크)를 포함하는 landmark입니다.
none
내장 네이티브 역할 시맨틱이 접근성 API에 매핑되지 않는 요소입니다. 동의어: presentation.
note
리소스의 주요 콘텐츠에 덧붙이거나 보조적인 콘텐츠 섹션입니다.
option
listbox에서 선택 가능한 항목입니다.
paragraph
콘텐츠의 단락입니다.
presentation
내장 네이티브 역할 시맨틱이 접근성 API에 매핑되지 않는 요소입니다. 동의어: none.
progressbar
시간이 많이 소요되는 작업의 진행 상태를 표시하는 요소입니다.
radio
동일 역할의 요소 집합에서 오직 하나만 체크될 수 있는 체크 가능한 입력입니다.
radiogroup
radio 버튼의 그룹입니다.
range
값의 범위를 나타내는 요소입니다.
region
저자가 지정한 특정 목적에 관련된 콘텐츠를 담은 landmark 영역이며, 사용자가 쉽게 탐색하거나 페이지 요약에 포함되기를 원할 만큼 중요한 영역입니다. 페이지 요약은 사용자 에이전트나 보조 기술이 동적으로 생성할 수 있습니다.
roletype
모든 역할이 상속하는 기본 역할입니다.
row
표 형식 컨테이너의 행입니다.
rowgroup
표 형식 컨테이너에서 하나 이상의 행 요소를 포함하는 구조입니다.
rowheader
행의 헤더 정보를 담는 셀입니다.
scrollbar
내용이 보기 영역 안에 모두 표시되지 않더라도, 보기 영역 내에서 콘텐츠 스크롤을 제어하는 그래픽 객체입니다.
search
아이템과 객체 집합을 포함하는 landmark 영역으로, 전체적으로 검색 기능을 구성합니다. 관련: form, searchbox.
searchbox
검색 기준을 지정하는 textbox 유형입니다. 관련: textbox, search.
section
문서나 애플리케이션 내에서 렌더링 가능한 구조적 포함 단위입니다.
sectionhead
관련 섹션의 주제에 라벨이나 요약을 제공하는 구조입니다.
select
사용자가 선택지 집합에서 선택할 수 있는 폼 위젯입니다.
separator
콘텐츠 섹션이나 메뉴 아이템 그룹을 구분하고 구별하는 구분선입니다.
slider
사용자가 주어진 범위 내에서 값을 선택할 수 있는 입력입니다.
spinbutton
사용자가 여러 이산 선택지 중에서 선택할 수 있는 range 형태입니다.
status
사용자에게 권고 정보를 제공하는 라이브 리전 유형으로, alert만큼 중요하지 않으며, 종종 상태 표시줄로 표시될 수 있습니다.
strong
중요하거나 심각하거나 긴급한 콘텐츠입니다. 관련: emphasis.
structure
문서 구조적 요소입니다.
subscript
하나 이상의 아래 첨자 문자입니다. 관련: superscript.
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 역할은 알림 메시지를 포함하는 요소에 적용됩니다. alertstatus 역할의 특수화된 형태이며, 원자적 라이브 리전으로 처리됩니다.

alert는 assertive 라이브 리전이므로, 보조 기술 사용자를 위해 즉각적으로 알림을 발생시킵니다. 운영체제가 허용하는 경우, 사용자 에이전트WAI-ARIA alert가 생성될 때 접근성 API를 통해 시스템 alert 이벤트SHOULD 발생시켜야 합니다.

저자나 사용자 에이전트는 alert가 처리되도록 포커스를 설정하거나 관리할 필요가 없습니다. alert는 포커스를 받을 필요가 없으므로, 저자는 사용자가 alert를 반드시 닫게 요구해서는 SHOULD NOT 안 됩니다. 메시지로 포커스를 옮기고 싶다면, 저자는 alert 대신 alertdialogSHOULD 사용해야 합니다.

alert 역할을 가진 요소는 aria-live 값이 assertive, aria-atomic 값이 true로 암시적으로 설정됩니다.

특성:
특성
슈퍼클래스 역할: section
서브클래스 역할:
상속된 상태 및 속성:
이름 출처: author
역할의 암시적 값: aria-live의 기본값은 assertive입니다.
aria-atomic의 기본값은 true입니다.

alertdialog role

알림 메시지를 포함하며, 초기 포커스가 다이얼로그 내 요소로 이동하는 다이얼로그 유형입니다. 관련 역할: alert, dialog.

alertdialog는 사용자에게 경고 메시지를 전달하는 데 사용됩니다. alertdialog 역할 은 알림 메시지와 나머지 다이얼로그를 함께 포함하는 노드에 적용됩니다. 콘텐츠 저자는 alertdialog가 표시되는 동안 키보드와 마우스 상호작용이 다이얼로그 내에서만 동작하도록 하여 alertdialog를 모달로 만드는 것이 SHOULD 권장됩니다. 자세한 내용은 aria-modal 참고.

alert와 달리 alertdialog는 사용자로부터 응답을 받을 수 있습니다. 예를 들어, 사용자가 생성된 알림을 인지했는지 확인하는 경우입니다. alertdialog가 표시될 때, 저자는 다이얼로그 내 활성 요소(폼 컨트롤 또는 확인 버튼 등)에 포커스를 설정하는 것이 SHOULD 권장됩니다. 사용자 에이전트는 알림이 생성될 때, 접근성 API를 통해 시스템 alert 이벤트SHOULD 발생시켜야 합니다(해당 접근성 API가 명시된 경우).

저자는 alertdialog에서 aria-describedby를 사용하여 다이얼로그 내의 알림 메시지 요소를 참조하는 것이 SHOULD 권장됩니다. 만약 그렇지 않으면, 보조 기술이 자체 복구 메커니즘을 사용하여 알림 메시지의 내용을 결정할 수 있습니다.

특성:
특성
슈퍼클래스 역할:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

application role

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

일부 사용자 에이전트보조 기술은 브라우즈 모드를 제공하여, 위/아래 화살표 등 표준 입력 이벤트를 가로채어 읽기 커서를 제어하는 데 사용합니다. 이러한 브라우즈 모드 동작은 widget 역할이 없는 요소가 해당 키보드 및 제스처 이벤트를 받아서 인터랙티브 기능을 제공하는 것을 방해합니다.

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

예를 들어, 프레젠테이션 슬라이드 편집기는 방향키로 슬라이드 위의 텍스트박스 및 이미지 요소 위치를 변경할 수 있습니다. WAI-ARIA widget 역할 중 이러한 상호작용 모델에 해당하는 것이 없으므로, 저자는 슬라이드 컨테이너에 application 역할, aria-roledescription "슬라이드 편집기"와 aria-describedby로 안내문을 제공할 수 있습니다.

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

  1. aria-labelledby 또는 aria-describedby를 이용해 콘텐츠를 포커스 가능한 요소와 연결합니다.
  2. 콘텐츠를 role document 또는 article를 가진 포커스 가능한 요소에 배치합니다.
  3. 포커스 관리에서 설명한 대로 소유 요소의 포커스를 관리하고, aria-activedescendant 값을 업데이트하여 포커스된 콘텐츠를 담고 있는 요소를 참조하도록 합니다.
특성:
특성
슈퍼클래스 역할: structure
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

article role

문서, 페이지, 사이트의 독립적인 부분을 구성하는 작성물로 이루어진 페이지 섹션입니다.

article은 내비게이션 랜드마크는 아니지만, 중첩하여 토론을 구성할 수 있으므로 보조 기술은 article 중첩을 인식하여 사용자가 토론 흐름을 추적할 수 있도록 도울 수 있습니다. article은 포럼 글, 잡지나 신문 기사, 웹 로그 항목, 사용자 댓글, 또는 기타 독립적인 콘텐츠 항목이 될 수 있습니다. 독립적이라는 것은 syndication 등에서 내용이 단독으로 존재할 수 있다는 의미입니다. 단, 요소는 여전히 상위 요소와 연관되어 있습니다. 예를 들어, 상위 body 요소에 적용되는 연락처 정보는 article에도 적용됩니다. article을 중첩할 때, 자식 article은 상위 article의 콘텐츠와 관련된 내용을 나타냅니다. 예를 들어, 사용자 댓글을 허용하는 웹 로그 항목 사이트에서 댓글을 웹 로그 항목의 article 내부에 중첩된 article로 표현할 수 있습니다. 저자, 제목, 날짜 등 article에 연관된 정보는 중첩된 article에는 적용되지 않습니다.

사용자가 article 역할이 지정된 요소로 내비게이션할 때, 표준 키보드 이벤트를 가로채는 보조 기술은 키보드 이벤트를 웹 애플리케이션에 전달하는 대신 문서 탐색 모드로 SHOULD 전환해야 합니다. 보조 기술은 MAY 사용자가 중첩된 article 요소 계층을 탐색할 수 있는 기능을 제공할 수 있습니다.

articlefeed 컨텍스트에 있을 때, 저자는 aria-posinsetaria-setsize 값을 MAY 지정할 수 있습니다.

특성:
특성
슈퍼클래스 역할: document
관련 개념:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

blockquote role

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

특성:
특성
슈퍼클래스 역할: section
관련 개념:
상속된 상태 및 속성:
이름 출처: author

button role

클릭 또는 누름으로 사용자 동작을 트리거할 수 있는 입력 요소입니다. 관련 역할: link.

버튼은 주로 개별적인 동작에 사용됩니다. 버튼의 외형을 표준화하면 사용자가 위젯을 버튼으로 인식하기 쉬워지고, 툴바에서 더 콤팩트하게 표시할 수 있습니다.

버튼은 선택적 속성 aria-pressed를 지원합니다. aria-pressed 속성이 비어 있지 않으면 토글 버튼입니다. aria-pressedtrue이면 버튼은 "눌림" 상태이고, aria-pressedfalse이면 눌려 있지 않습니다. 속성이 없으면 버튼은 단순 명령 버튼입니다.

특성:
특성
슈퍼클래스 역할: command
기본 개념: <button> in [HTML]
관련 개념:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True
자식 표현용: True

caption role

눈에 보이는 콘텐츠로, figure, table, grid, treegrid의 이름을 지정하거나 설명할 수도 있습니다.

caption을 사용할 때, 저자는 SHOULD 다음을 보장해야 합니다:

  • captionfigure, table, grid, treegrid의 직접적인 자식이어야 합니다.
  • captiontable, grid, treegrid의 첫 번째 자식이어야 합니다.
  • captionfigure의 첫 번째 또는 마지막 자식이어야 합니다.

저자는 aria-labelledby를 부모 figure, table, grid, treegrid에 설정하여 caption 역할의 요소를 참조하는 것이 SHOULD 권장됩니다. 하지만 caption이 부모에 대한 이름과 설명을 모두 제공한다면, 저자는 MAY aria-labelledbycaption 내부의 간결한 이름을 포함하는 요소를 참조하도록 설정하고, aria-describedby를 설명 콘텐츠를 포함하는 요소를 참조하도록 설정할 수 있습니다.

<div role="table" aria-labelledby="name" aria-describedby="desc">
   <div role="caption">
     <div id="name">콘테스트 참가자</div>
     <div id="desc">
       이 표는 지난 4주간 콘테스트에 접수된 참가자 총 인원(500명)을 보여줍니다.
     </div>
   </div>
   <!-- ... -->
특성:
특성
슈퍼클래스 역할: section
관련 개념:
필수 컨텍스트 역할:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

cell role

표 형식 컨테이너의 셀입니다. 관련 역할: gridcell.

저자는 cell 역할의 요소row 역할의 요소 내부에 포함되거나 소유되어야 함을 MUST 보장해야 합니다.

특성:
특성
슈퍼클래스 역할: section
서브클래스 역할:
기본 개념: <td> in [HTML]
필수 컨텍스트 역할: row
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

checkbox role

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

checkboxaria-checked 속성은 입력이 체크됨(true), 체크 해제됨(false), 또는 요소 그룹이 체크됨과 체크 해제됨이 혼합된 상태(mixed)를 나타냅니다. 많은 체크박스는 mixed 값을 사용하지 않으므로 사실상 불리언 체크박스입니다.

특성:
특성
슈퍼클래스 역할: input
서브클래스 역할:
관련 개념:
필수 상태 및 속성:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True
자식 표현용: True

code role

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

code 역할의 주요 목적은 보조 기술에 해당 내용이 컴퓨터 코드임을 알리는 것이며, 특히 합성 음성에 대해 특별한 표현이 필요할 수 있음을 의미합니다. 구체적으로, 스크린 리더나 기타 텍스트-음성 변환 도구는 SHOULD 전체 구두점 발음을 선호하여 일반적인 기호(예: "-")가 제대로 발음되도록 해야 합니다.

특성:
특성
슈퍼클래스 역할: section
관련 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

columnheader role

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

columnheader는 테이블이나 그리드에서 열 헤더로 사용할 수 있습니다. 또한 파이 차트 등에서 데이터의 관계를 나타내는 용도로도 사용할 수 있습니다.

columnheader는 해당 열의 모든 셀과 관계를 형성합니다. 이는 HTML th 요소의 column scope와 구조적으로 동등합니다.

저자는 columnheader 역할의 요소row 역할의 요소 내부에 포함되거나 소유되어야 함을 MUST 보장해야 합니다.

aria-selected 상태를 columnheader에 적용할 때, 사용자 에이전트가 해당 열의 모든 셀에 aria-selected 상태를 자동으로 전파해서는 MUST NOT 안 됩니다. 저자는 필요에 따라 이런 선택 전파를 MAY 구현할 수 있습니다.

columnheader 역할은 인터랙티브 그리드와 비인터랙티브 테이블 모두에서 사용할 수 있지만, aria-readonlyaria-required는 인터랙티브 요소에만 적용됩니다. 따라서 저자는 table에서 파생된 columnheader에는 aria-requiredaria-readonlySHOULD NOT 사용해야 하며, 사용자 에이전트도 columnheadergrid 또는 treegrid 컨텍스트에 있지 않으면 해당 속성을 SHOULD NOT 보조 기술에 노출해야 합니다.

참고

셀들은 행 단위로 구성되기 때문에 열을 위한 단일 컨테이너 요소가 없습니다. 열은 각 row 컨테이너의 특정 위치에 있는 gridcell 요소들의 집합입니다.

참고: aria-disabled 사용에 대해

현재 columnheader에서 aria-disabled가 지원되지만, 앞으로의 버전에서는 grid 또는 treegrid 컨텍스트가 아닌 경우 columnheader 요소에서 사용이 금지될 예정입니다.

특성:
특성
슈퍼클래스 역할:
기본 개념: <th[scope="col"]> in [HTML]
필수 컨텍스트 역할: row
지원 상태 및 속성: aria-sort
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True

combobox role

input이 다른 요소(예: listbox, grid)를 제어하며, 사용자가 input의 값을 설정하는 데 도움을 주도록 동적으로 팝업될 수 있습니다.

편집자 메모: ARIA 1.2에서 combobox 역할의 주요 변경

combobox에 대한 가이드라인은 ARIA 1.2에서 이전 패턴의 구현 문제로 인해 크게 변경되었습니다. 사용자 에이전트, 보조 기술, 적합성 검사기 개발자 및 저자는 이 섹션을 주의 깊게 검토해야 합니다. 변경 사항의 설명은 ARIA repository wiki에서 볼 수 있습니다.

combobox는 명명된 입력 필드와 보조 팝업 요소를 통한 값 선택 지원 기능이 결합된 역할입니다. combobox 입력은 편집 및 입력이 가능한 단일 라인 텍스트 필드이거나, combobox의 현재 값만 표시하는 요소일 수도 있습니다. combobox가 텍스트 입력을 지원하고 aria-autocomplete에서 설명한 자동완성 동작을 제공한다면, 저자는 combobox 요소에 aria-autocomplete 값을 제공된 동작에 맞게 MUST 설정해야 합니다.

일반적으로 combobox의 초기 상태는 접힘(collapsed)입니다. 접힌 상태에서는 combobox 요소와 별도의 선택적 팝업 제어 button만 보입니다. combobox가 펼쳐짐(expanded) 상태일 때는 combobox 요소와 현재 값, 연결된 팝업 요소가 모두 표시됩니다. 저자는 combobox 요소가 펼쳐질 때 aria-expandedtrue로, 접힐 때 falseMUST 설정해야 합니다.

저자는 combobox와 연관된 팝업 요소가 listbox, tree, grid, dialog 역할 중 하나를 MUST 가져야 하며, combobox 요소에 aria-controls 값을 팝업 요소를 참조하도록 MUST 설정해야 합니다.

combobox 역할 요소는 aria-haspopup 값이 listbox로 암시적으로 설정됩니다. 만약 팝업 요소의 역할이 listbox가 아니라면, 저자는 팝업 역할에 해당하는 aria-haspopup 값을 MUST 명시적으로 지정해야 합니다.

UI에 추가 아이콘이 있어 포인터와 터치 이벤트로 팝업 표시를 제어할 수 있다면, 저자는 해당 요소에 button 역할을 부여하고, 포커스 가능하지만 페이지 Tab 순서에는 포함되지 않도록 하며, combobox 요소의 자손이 아니어야 SHOULD 합니다. 또한 키보드 접근성을 위해 combobox 요소와 팝업 요소 내의 요소 간 포커스 이동을 위한 키보드 메커니즘을 SHOULD 제공해야 합니다. 예를 들어, 일반적인 규칙으로 아래 화살표는 입력에서 팝업 요소의 첫 포커스 가능한 자손으로 포커스를 옮깁니다. 팝업 요소가 aria-activedescendant를 지원한다면, 포커스 이동 대신 해당 키보드 메커니즘이 combobox 요소의 aria-activedescendant 값을 제어할 수 있습니다. 팝업의 자손 중 하나가 활성 상태일 때, 저자는 combobox의 aria-activedescendant 값을 그 자손을 참조하도록 MAY 설정할 수 있습니다(포커스는 combobox 요소에 유지).

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

  • combobox 요소가 값을 제공하는 호스트 언어 요소(예: HTML input 요소)일 경우, combobox의 값은 해당 요소의 값입니다.
  • 그 외의 경우, combobox 값은 자손 요소로 표현되며, button의 자손 콘텐츠에서 이름을 계산하는 방식과 동일하게 결정됩니다.
    <label for="tag_combo">태그</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">
   <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 및 ARIA 1.1과 다릅니다:

  • ARIA 1.0 명세에서는 combobox 역할의 입력 요소가 단일 라인 텍스트 필드여야 하며, 팝업 요소를 aria-owns로 참조해야 했습니다(aria-controls 대신).
  • ARIA 1.1 명세(보조 기술에서 널리 지원되지 않음)는 combobox가 포커스 불가 요소이고, 필수로 소유하는 두 요소(포커스 가능한 textboxtextbox가 제어하는 팝업 요소)가 있어야 했습니다.
  • ARIA 1.2의 변경 사항은 보조 기술과의 상호운용성을 개선하고, 저자가 네이티브 HTML select 요소와 더 유사한 combobox 구성을 만들 수 있게 합니다.

combobox 구현의 기능과 동작은 다양하게 나타나므로, 저자를 위한 중요한 고려사항이 많습니다. combobox 디자인 패턴 구현에 대한 추가 정보는 WAI-ARIA 저작 관행을 참고하세요.

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

command role

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

참고

command는 온톨로지 용도의 추상 역할입니다. 저자는 이 역할을 콘텐츠에 사용하지 않아야 합니다.

특성:
특성
추상 여부: True
슈퍼클래스 역할: widget
서브클래스 역할:
상속된 상태 및 속성:
이름 출처: author

complementary role

landmark로, DOM 계층에서 메인 콘텐츠와 유사한 수준에 있지만, 메인 콘텐츠와 분리되어도 의미가 유지되는 보조 콘텐츠를 포함합니다.

역할에 적합한 콘텐츠 유형은 다양합니다. 예를 들어 포털의 경우, 상영 시간, 현재 날씨, 관련 기사, 추천 주식 등이 포함될 수 있습니다. complementary 역할은 포함된 콘텐츠가 메인 콘텐츠와 관련 있음을 나타냅니다. 만약 보조 콘텐츠가 메인 콘텐츠와 완전히 분리될 수 있다면, 더 일반적인 역할을 사용할 수 있습니다.

사용자 에이전트는 complementary 역할이 부여된 요소를 내비게이션 랜드마크SHOULD 처리해야 합니다.

특성:
특성
슈퍼클래스 역할: landmark
상속된 상태 및 속성:
이름 출처: author

composite role

위젯으로, 탐색 가능한 자손 또는 소유 자식 요소를 포함할 수 있습니다.

저자는 컴포지트 위젯이 웹 페이지의 더 큰 내비게이션 시스템 내에서 하나의 내비게이션 정지점으로 존재하도록 SHOULD 해야 합니다. 컴포지트 위젯에 포커스가 있을 때, 저자는 자손 또는 소유된 자식 요소로 내비게이션할 수 있는 별도의 내비게이션 메커니즘을 SHOULD 제공해야 합니다.

참고

composite는 온톨로지 용도의 추상 역할입니다. 저자는 이 역할을 콘텐츠에 사용하지 않아야 합니다.

특성:
특성
추상 여부: True
슈퍼클래스 역할: widget
서브클래스 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

contentinfo role

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

이 영역에 포함되는 정보의 예로는 저작권 및 개인정보 보호정책 링크 등이 있습니다.

사용자 에이전트는 contentinfo 역할이 부여된 요소를 내비게이션 랜드마크SHOULD 처리해야 합니다.

어떤 document 또는 application 내에서, 저자는 contentinfo 역할을 가진 요소를 한 개만 SHOULD 표시해야 합니다.

참고

documentapplication 요소는 DOM에서 중첩될 수 있기 때문에, 각기 다른 문서 노드와 연결되어 있는 경우(예: DOM 중첩 또는 aria-owns 속성 사용) DOM 자손으로 여러 개의 contentinfo 요소가 존재할 수 있습니다.

특성:
특성
슈퍼클래스 역할: landmark
상속된 상태 및 속성:
이름 출처: author

definition role

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

저자는 정의되는 요소term 역할을 부여하고, aria-labelledby 속성으로 참조하거나, term 역할 요소를 definition 역할 요소의 자손으로 만들 것을 SHOULD 권장합니다.

특성:
특성
슈퍼클래스 역할: section
상속된 상태 및 속성:
이름 출처: author

deletion role

삭제는 제거된 것으로 표시된 콘텐츠 또는 제거 제안 중인 콘텐츠를 포함합니다. 관련 역할: insertion.

삭제는 일반적으로 두 버전의 콘텐츠 간 차이를 표시하거나 여러 사람이 콘텐츠를 수정하는 상황에서 제거 제안 콘텐츠를 지정하는 데 사용됩니다.

특성:
특성
슈퍼클래스 역할: 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 역할은 본질적으로 list 역할과 동일합니다. 즉, directory를 사용해도 보조 기술 사용자에게 추가적인 이점이 없습니다. 저자는 directory를 사용 중단된 것으로 간주하고 list 또는 호스트 언어의 동등한 시맨틱을 대신 사용할 것을 권장합니다.

directory는 링크 여부와 관계없이 정적 목차입니다. 리스트로 만든 목차(중첩 리스트 포함)도 여기에 해당합니다. 동적 목차는 대신 tree 역할을 사용할 수 있습니다.

특성:
특성
슈퍼클래스 역할: list
상속된 상태 및 속성:
이름 출처: author

document role

보조 기술 사용자가 읽기 모드로 탐색하려는 콘텐츠를 포함하는 요소입니다.

사용자 에이전트의 포커스가 document 역할이 지정된 요소로 이동하면, 정적 콘텐츠를 읽기 모드로 탐색할 수 있는 보조 기술은 해당 읽기 모드로 MAY 전환하고, 위/아래 화살표 등 표준 입력 이벤트를 읽기 커서를 제어하는 데 가로챌 수 있습니다.

읽기 모드가 있는 보조 기술은 기본적으로 모든 요소(단, widget 또는 application 역할 요소 제외)에 대해 해당 모드를 사용합니다. 따라서 document 역할이 보조 기술 동작을 변경하는 데 유용한 상황은 document 역할 요소가 widget 또는 application의 포커스 가능한 자식 요소일 때뿐입니다. 예를 들어, application 요소에 일부 정적 리치 텍스트가 포함되어 있을 때, 저자는 해당 텍스트가 들어 있는 요소에 document 역할을 부여하고 tabindex0으로 설정할 수 있습니다. 스크린 리더 사용자가 Tab 키를 눌러 document 요소에 포커스를 맞추면, 해당 텍스트를 스크린 리더의 읽기 커서로 읽을 수 있습니다.

특성:
특성
슈퍼클래스 역할: structure
서브클래스 역할:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: False

emphasis role

하나 이상의 강조된 문자입니다. 관련 역할: strong.

emphasis 역할의 목적은 콘텐츠를 강조하거나 스트레스를 주는 것입니다. 이는 콘텐츠의 의미에 영향을 주지 않는 서체 변화(예: 단순 스타일 변경)를 전달하기 위한 것이 아닙니다. 저자는 SHOULD emphasis 역할의 부재가 콘텐츠의 의미를 변경시킬 경우에만 이 역할을 사용해야 합니다.

emphasis 역할은 중요성을 전달하려는 것이 아니며, 그 목적에는 strong 역할이 더 적합합니다.

특성:
특성
슈퍼클래스 역할: section
관련 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

feed role

스크롤 가능한 list로, article들이 포함되며, 스크롤 시 article들이 리스트 양쪽 끝에서 추가되거나 제거될 수 있습니다.

feed보조 기술 사용자(예: 스크린 리더)가 문서 탐색 모드를 사용하여 무한 스크롤로 더 많은 콘텐츠를 읽으면서 읽기 커서로 풍부한 콘텐츠 스트림을 읽고 스크롤할 수 있도록 지원합니다. feed에서는 보조 기술사용자 에이전트 포커스를 이동시켜 사용자의 읽기 커서 움직임을 웹 애플리케이션에 신호로 제공하며, 애플리케이션은 사용자가 페이지를 탐색함에 따라 새 콘텐츠를 추가하거나 시각적으로 콘텐츠를 위치시킬 수 있습니다. feed는 저자가 보조 기술에 추가 및 제거 상황을 알려 보조 기술이 읽기 뷰를 신속하게 갱신하면서 읽기를 방해하거나 성능을 저하시키지 않도록 할 수 있게 합니다.

예를 들어, feed는 각 article에 텍스트, 링크, 이미지, 댓글, 공유 및 댓글 위젯을 포함하는 뉴스 스트림을 제공할 수 있습니다. 스크린 리더 사용자가 각 기사에서 읽기 및 상호작용 후 읽기 커서를 기사에서 기사로 이동하면 각 기사가 화면에 표시되고, 필요 시 새 기사들이 로드됩니다.

feed는 자식들이 article 역할을 갖는 컨테이너 요소입니다. feed의 양쪽 끝에서 article들이 추가/제거될 때, 저자는 변경 전에 feed 요소에 aria-busytrue로, 변경 완료 후 falseSHOULD 설정해야 합니다. 저자는 feed 중간에 article을 삽입하거나 제거하는 것을 SHOULD 피해야 합니다. 이러한 요구는 보조 기술이 사용자의 읽기 커서 이동과 동시에 발생하는 feed 콘텐츠 변경에 부드럽게 대응할 수 있도록 돕습니다.

저자는 feed 내의 각 article이 포커스 가능하도록 하고, 애플리케이션이 사용자 에이전트 포커스가 article 또는 자손 요소에 설정될 때 해당 article을 화면에 표시하도록 SHOULD 해야 합니다. 예를 들어 HTML에서는 각 article 요소에 tabindex-1 또는 0으로 설정해야 합니다.

보조 기술의 읽기 커서가 하나의 article에서 다른 article로 이동할 때, 보조 기술은 읽기 커서를 포함하는 article에 사용자 에이전트 포커스를 SHOULD 설정해야 합니다. 읽기 커서가 article 내부의 포커스 가능한 요소에 도달한 경우, 보조 기술은 대신 해당 요소에 포커스를 MAY 설정할 수 있습니다.

보조 기술의 읽기 커서로 다른 article로 스크롤할 수 있으려면 페이지에 다른 article이 존재해야 하므로, 저자는 SHOULD 사용자 에이전트 포커스가 로드된 article 집합의 양쪽 끝에 도달하기 전에 추가 article을 로드하도록 시도해야 합니다. 또는, 저자는 MAY 양쪽 끝에 button 등 추가 article 로드를 요청할 수 있는 요소가 포함된 article을 포함할 수 있습니다.

저자는 간단한 라벨뿐 아니라 aria-describedbyfeedarticle 요소에 적용하여 스크린 리더가 사용자가 article 단위로 내비게이션할 때 어떤 요소를 라벨 뒤에 읽도록 권장할 수 있습니다. 스크린 리더는 MAY feed 콘텐츠를 빠르게 스캔할 수 있도록 라벨과 접근성 설명을 함께 읽어주며, 저자가 설명에서 생략한 반복적이거나 덜 중요한 요소(예: 내장 상호작용 위젯 등)는 사용자가 무시할 수 있게 합니다.

저자는 SHOULD feedarticle들 간 포커스 이동을 위한 키보드 명령을 제공하여, article 내비게이션 기능을 제공하지 않는 보조 기술을 사용하는 사용자도 키보드로 feed를 탐색할 수 있도록 해야 합니다.

feed에 포함된 article의 총 개수가 고정된 경우, 저자는 MAY 해당 feedarticle 요소에 aria-setsize를 지정할 수 있습니다. 단, 총 개수가 매우 크거나 불확정적이거나 자주 변하는 경우, 저자는 MAY aria-setsize-1로 설정해 집합의 크기가 알 수 없음을 전달할 수 있습니다.

WAI-ARIA 저작 관행에서 feed 디자인 패턴 구현에 대한 추가 정보를 확인할 수 있습니다.

특성:
특성
슈퍼클래스 역할: list
필수 소유 요소: article
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: False

figure role

인지 가능한 section 콘텐츠로, 일반적으로 그래픽 문서, 이미지, 코드 조각, 예시 텍스트를 포함합니다. figure의 부분은 MAY 사용자가 탐색할 수 있습니다.

저자는 SHOULD 본문에서 figure로의 참조를 제공해야 하지만, figure는 참조하는 요소와 동일한 위치에 표시될 필요는 없습니다. 저자는 MAY 캡션 역할의 텍스트를 aria-describedby로 참조할 수 있습니다. 저자는 MAY aria-label로 라벨을 제공하거나, MAY 라벨 역할의 텍스트를 aria-labelledby로 참조할 수 있습니다.

보조 기술SHOULD 사용자가 figure로 빠르게 이동할 수 있도록 해야 합니다. 일반 사용자 에이전트MAY 사용자가 figure로 빠르게 이동할 수 있도록 할 수 있습니다.

특성:
특성
슈퍼클래스 역할: section
관련 개념:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: False

form role

landmark 영역으로, 아이템과 객체 집합을 포함하며 전체적으로 폼을 구성합니다. 관련 역할: search.

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

저자는 MUST form 역할의 각 요소에 폼의 목적을 설명하는 간략한 라벨을 제공해야 하며, 표시되는 라벨이 있으면 aria-labelledby로 참조하는 것이 SHOULD 권장됩니다. 저자는 라벨을 가능하면 heading 내에 포함하는 것이 SHOULD 권장되며, heading은 표준 호스트 언어 heading 요소이거나 heading 역할 요소일 수 있습니다.

저자가 스크립트를 사용해 사용자의 동작으로 onsubmit 이벤트가 발생하지 않는 경우(예: 값 변경 시 폼 제출) 폼을 제출한다면, 해당 동작에 대해 사용자가 미리 알 수 있도록 SHOULD 안내해야 합니다.

사용자 에이전트는 form 역할 요소를 내비게이션 랜드마크SHOULD 처리해야 합니다.

특성:
특성
슈퍼클래스 역할: landmark
기본 개념: <form> in [HTML]
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: true

generic role

자체적으로 시맨틱 의미가 없는 이름 없는 컨테이너 요소입니다.

generic 역할은 호스트 언어의 일반 요소(예: HTML div 또는 span)의 암시적 역할로 사용되도록 설계되었으므로 주로 사용자 에이전트 구현자를 위한 것입니다. 저자는 이 역할을 콘텐츠에 SHOULD NOT 사용해야 합니다. 저자는 MAY presentation 또는 none을 사용해 암시적 접근성 시맨틱을 제거하거나, group과 같은 시맨틱 컨테이너 역할로 자손을 명명된 컨테이너로 시맨틱 그룹화할 수 있습니다.

presentation 역할 요소와 마찬가지로, generic 역할 요소는 자손에 대해 aria-live 속성과 같은 제한된 수의 접근성 상태와 속성을 제공할 수 있습니다. 하지만 presentation 역할 요소와 달리 generic 요소는 접근성 API에 노출되어, 보조 기술이 레이아웃, 경계 등 특정 속성을 수집할 수 있습니다.

특성:
특성
슈퍼클래스 역할: structure
관련 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

grid role

집합적인 widget으로, 하나 이상의 행(row)과 하나 이상의 셀(cell)을 포함하며, 그리드의 일부 또는 모든 셀이 방향키 등 2차원 내비게이션 방법으로 포커스될 수 있습니다.

grid 역할은 특정 시각적(예: 표 형태) 표현을 의미하지 않습니다. 이는 요소들 간의 관계를 설명합니다. 체크박스 집합이나 내비게이션 링크 그룹처럼 단순한 경우부터, 복잡한 스프레드시트 애플리케이션까지 다양하게 사용할 수 있습니다.

grid의 셀 요소들은 gridcell 역할을 갖습니다. 저자는 MAY 셀을 행 또는 열 헤더로 지정하기 위해 rowheader 또는 columnheader 역할을 gridcell 역할 대신 사용할 수 있습니다. 저자는 MUST gridcell, columnheader, rowheader 역할 요소들이 row 역할 요소에 소유되어야 하며, 해당 row는 다시 rowgroup 또는 grid에 소유되어야 합니다.

키보드 접근성을 위해, 저자는 SHOULD 포커스 관리에 따라 grid의 자손 포커스를 조정해야 합니다. 사용자가 키보드로 grid 내용을 내비게이션할 때, 저자는 다음과 같이 포커스를 설정해야 SHOULD 합니다:

  • gridcell에 화살표 키를 소비하지 않는 단일 인터랙티브 widget(예: checkbox, button, link)가 포함되어 있다면, 저자는 해당 셀의 인터랙티브 요소에 포커스를 MAY 직접 설정할 수 있습니다.
  • 그 외의 경우, 저자는 포커스를 받는 요소가 gridcell, rowheader, columnheader 역할이어야 SHOULD 합니다.

포커스 가능한 셀 내에 다음 중 하나가 포함되어 있다면, 저자는 셀 내부 콘텐츠를 탐색 및 상호작용할 수 있도록 상호작용 또는 편집 모드로 전환하는 메커니즘을 SHOULD 제공해야 합니다:

  • 화살표 키 조작이 필요한 위젯(예: combobox, radiogroup)
  • 다수의 인터랙티브 요소
  • 편집 가능한 콘텐츠

예를 들어, 스프레드시트의 셀에 combobox나 편집 가능한 텍스트가 들어 있을 경우, Enter 키로 셀 상호작용 또는 편집 모드를 활성화하여 방향키로 combobox 또는 textbox를 조작할 수 있습니다. 구현에 따라 Enter 다시 누르기, Tab, Escape 또는 다른 키로 그리드 내비게이션 모드로 다시 전환시킬 수 있습니다.

저자는 MAY gridcell을 수식 결과 표시(사용자 편집 가능) 용도로 사용할 수 있습니다. 예를 들어, 스프레드시트 애플리케이션에서 gridcell이 수식 계산 값을 보여주다가, 사용자가 해당 셀을 편집할 때 textbox가 셀 내에 나타나게 할 수 있습니다.

grid 역할 요소에 aria-readonly가 설정되어 있으면, 사용자 에이전트는 MUST 그 값(읽기 전용 여부)을 grid가 소유하는 모든 gridcell 요소에 전파하고 접근성 API에 노출해야 합니다. 저자는 MAY 개별 gridcell 요소에 대해서 전파된 값을 덮어쓸 수 있습니다.

셀 콘텐츠 편집 기능이 있는 grid에서, 포커스 가능한 gridcell의 콘텐츠가 편집 불가일 경우, 저자는 해당 gridcell 요소에 aria-readonlytrueMAY 설정할 수 있습니다. 단, aria-readonly 값은 grid나 개별 셀에 지정하더라도 셀 내부 콘텐츠의 편집 가능 여부만 나타내며, grid 자체의 내비게이션이나 조작 기능 제공 여부와는 관련이 없습니다.

aria-readonly 값을 명시하지 않는다고 해서 gridgridcell에 편집 가능한 콘텐츠가 있다는 의미는 아닙니다. 예를 들어, grid가 날짜를 나타내는 link 요소 집합 등 편집 불가 요소 모음일 경우, aria-readonly 값을 굳이 지정할 필요가 없습니다.

저자는 MAY gridcell이 동작의 대상(선택 가능)임을 aria-selected 속성으로 표시할 수 있습니다. grid에서 여러 gridcell을 선택할 수 있다면, 저자는 aria-multiselectabletruegrid 역할 요소에 SHOULD 설정해야 합니다.

WAI-ARIA는 호스트 언어의 요소를 확장할 수 있으므로, grid는 네이티브 테이블의 요소 및 속성을 재사용할 수 있습니다. 예를 들어, 저자가 HTML table 요소에 grid 역할을 적용하면, 하위 HTML trtd 요소에 rowgridcell 역할을 별도로 적용할 필요가 없습니다. 사용자 에이전트가 자동으로 적절한 변환을 수행합니다. 네이티브 테이블 요소를 재사용하며 gridcell 요소가 여러 행 또는 열에 걸쳐야 할 경우, 저자는 WAI-ARIA aria-rowspanaria-colspan 대신, 호스트 언어의 해당 속성을 SHOULD 사용해야 합니다.

WAI-ARIA 저작 관행에서 grid 디자인 패턴 구현에 대한 추가 정보를 확인할 수 있습니다.

특성:
특성
슈퍼클래스 역할:
서브클래스 역할:
기본 개념: <table> in [HTML]
필수 소유 요소:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

gridcell role

grid 또는 treegrid 내의 cell입니다.

gridcell은 포커스 가능, 편집 가능, 선택 가능할 수 있습니다. gridcellaria-controls 등 기능적 관계를 위한 관계를 가질 수 있습니다.

저자가 gridcell에 행 헤더, 열 헤더 또는 둘 다를 부여하려고 하고, 관련 헤더가 DOM 구조에서 결정할 수 없다면, 저자는 SHOULD gridcellaria-describedby를 적용하여 rowheader 또는 columnheader 역할의 요소를 참조해야 합니다.

treegrid에서 저자는 MAY gridcellaria-expanded 속성으로 확장 가능하게 정의할 수 있습니다. aria-expanded 속성이 제공될 경우, 해당 셀 개별에만 적용됩니다. 이는 row 컨테이너의 대리(proxy)가 아니며, 행(row) 역시 확장 가능할 수 있습니다. 이 속성을 gridcell에 제공하는 주요 용도는 피벗 테이블 동작입니다.

저자는 MUST gridcell 역할의 요소row 역할 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

특성:
특성
슈퍼클래스 역할:
서브클래스 역할:
기본 개념: <td> in [HTML]
필수 컨텍스트 역할: row
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

group role

페이지 요약이나 목차에 보조 기술에서 포함되지 않는 UI object 집합입니다.

region은 UI 객체 그룹을 페이지 요약/목차에 포함시키는 반면, group은 포함되지 않습니다.

저자는 SHOULD groupwidget 내 논리적 아이템 집합(예: 트리 위젯에서 계층 내 형제 집합) 구성을 위해 사용해야 합니다. 단, grouplistbox 컨텍스트에서 사용될 경우, 저자는 MUST 자식 요소를 option 요소로 제한해야 합니다. 즉, 저자와 보조 기술이 group을 다루는 방식은 제공되는 컨텍스트에 따라 결정됩니다.

저자는 MAY group 요소를 중첩할 수 있습니다. 웹 페이지 목차에 포함될 만큼 중요한 구역이라면, 저자는 SHOULD 그 역할을 region 또는 표준 랜드마크 역할로 지정해야 합니다.

특성:
특성
슈퍼클래스 역할: section
서브클래스 역할:
관련 개념:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

heading role

페이지 섹션의 제목입니다.

heading 역할의 요소가 논리적인 개요 구조로 정리되도록, 저자는 MUST aria-level 속성을 사용하여 올바른 중첩 수준을 표시해야 합니다.

특성:
특성
슈퍼클래스 역할: sectionhead
관련 개념:
필수 상태 및 속성: aria-level
상속된 상태 및 속성:
이름 출처:
  • 컨텐츠
  • author
접근 가능한 이름 필수: True

img role

이미지를 구성하는 요소 모음을 담는 컨테이너입니다.

img는 캡션 및 설명 텍스트, 그리고 여러 이미지 파일을 포함할 수 있으며, 함께 보면 하나의 이미지처럼 보입니다. img는 문서 내의 단일 그래픽을 나타내며, 개별 드로잉 object 모음으로 구성되어 있든 아니든 상관없습니다. img 역할의 요소가 인지 가능하려면, 저자는 MUST aria-label 또는 aria-labelledby 속성으로 라벨을 제공해야 합니다.

특성:
특성
슈퍼클래스 역할: section
관련 개념:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
자식 표현용: True

input role

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

특성:
특성
추상 여부: True
슈퍼클래스 역할: widget
서브클래스 역할:
지원 상태 및 속성: aria-disabled
상속된 상태 및 속성:
이름 출처: author

insertion role

삽입은 추가된 것으로 표시된 콘텐츠 또는 추가 제안 중인 콘텐츠를 포함합니다. 관련 역할: deletion.

삽입은 일반적으로 두 버전의 콘텐츠 간 차이를 표시하거나 여러 사람이 콘텐츠를 수정하는 상황에서 추가 제안 콘텐츠를 지정하는 데 사용됩니다.

특성:
특성
슈퍼클래스 역할: section
관련 개념:
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

landmark role

특정 저자 지정 목적에 관련된 콘텐츠를 포함하는 인지 가능한 section으로, 충분히 중요한 경우 사용자가 해당 섹션으로 쉽게 이동하거나 페이지 요약에 포함되기를 원할 수 있습니다. 이러한 페이지 요약은 사용자 에이전트나 보조 기술에 의해 동적으로 생성될 수 있습니다.

저자는 랜드마크 역할의 서브클래스 역할을 지정하고, 필요에 따라 간략하고 설명적인 라벨을 제공함으로써 콘텐츠의 목적을 지정합니다.

랜드마크 역할의 서브클래스 역할을 가진 요소는 랜드마크 영역 또는 내비게이션 랜드마크 영역으로 불립니다. 보조 기술SHOULD 사용자가 랜드마크 영역으로 빠르게 이동할 수 있도록 해야 합니다. 일반 사용자 에이전트MAY 사용자가 랜드마크 영역으로 빠르게 이동할 수 있도록 할 수 있습니다.

참고

landmark는 온톨로지 용도의 추상 역할입니다. 저자는 이 역할을 콘텐츠에 사용하지 않아야 합니다.

특성:
특성
추상 여부: True
슈퍼클래스 역할: section
서브클래스 역할:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: False

list role

listitem 요소를 포함하는 section입니다. 관련 역할: listbox.

리스트는 자식 요소의 rolelistitem인 경우를 포함합니다.

특성:
특성
슈퍼클래스 역할: section
서브클래스 역할:
기본 개념:
필수 소유 요소: listitem
상속된 상태 및 속성:
이름 출처: author

listbox role

사용자가 선택지 목록에서 하나 이상의 항목을 선택할 수 있는 widget입니다. 관련 역할: combobox, list.

목록 내부 항목은 정적이고, 표준 HTML select 요소와 달리 이미지를 포함할 수도 있습니다. 리스트박스는 자식 요소의 roleoption이거나, rolegroup인 요소(이 경우 자식이 option 역할이어야 함)를 포함합니다.

키보드 접근성을 위해, 저자는 모든 option 자손의 포커스를 SHOULD 관리해야 하며, 포커스 관리에 따라야 합니다.

listbox 역할 요소는 aria-orientation 값이 암시적으로 vertical입니다.

특성:
특성
슈퍼클래스 역할:
관련 개념:
필수 소유 요소:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
역할의 암시적 값: aria-orientation의 기본값은 vertical입니다.

listitem role

목록 또는 디렉터리의 단일 항목입니다.

저자는 MUST listitem 역할의 요소list 역할의 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

특성:
특성
슈퍼클래스 역할: section
서브클래스 역할:
기본 개념: <li> [HTML]에서
필수 컨텍스트 역할:
지원 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

log role

새로운 정보가 의미 있는 순서로 추가되고, 오래된 정보는 사라질 수 있는 라이브 영역의 한 유형입니다. 관련 역할: marquee.

예시로는 채팅 기록, 메시지 히스토리, 게임 로그, 오류 로그 등이 있습니다. 다른 라이브 영역과 달리, 이 역할에서는 로그에 새 항목이 도착하는 것과 읽기 순서 사이에 관계가 있습니다. 로그는 의미 있는 순서를 가지며, 새 정보는 로그의 끝에만 추가되고 임의의 위치에 추가되지 않습니다.

log 역할 요소는 aria-live 값이 암시적으로 polite입니다.

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

main role

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

이것은 문서의 중심 주제와 직접적으로 관련되거나 그 주제를 확장하는 콘텐츠를 표시합니다. main 역할은 "주요 콘텐츠로 건너뛰기" 링크에 대한 비간섭적 대체 기능으로, 주요 콘텐츠(또는 다른 랜드마크)로 이동하는 내비게이션 옵션이 사용자 에이전트의 대화상자 또는 보조 기술에서 제공됩니다.

사용자 에이전트는 main 역할 요소를 내비게이션 랜드마크로 SHOULD 처리해야 합니다.

어떤 document 또는 application 내에서, 저자는 main 역할의 요소를 한 개만 SHOULD 표시해야 합니다.

참고

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

특성:
특성
슈퍼클래스 역할: landmark
상속된 상태 및 속성:
이름 출처: author

marquee role

필수적이지 않은 정보가 자주 변하는 라이브 영역의 한 유형입니다. 관련 역할: log.

marquee의 일반적인 사용 예시로는 증권 시세 표시기와 광고 배너가 있습니다. marqueelog의 주요 차이점은 로그는 일반적으로 중요한 콘텐츠 변화에 의미 있는 순서나 시퀀스가 있다는 점입니다.

marquee 역할 요소는 aria-live 값이 암시적으로 off입니다.

특성:
특성
슈퍼클래스 역할: section
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

math role

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

math 역할이 부여된 콘텐츠는 MathML [MathML3]와 같은 접근 가능한 형식으로 마크업해야 하며, 또는 TeX, LaTeX 등의 다른 텍스트 표현을 사용해 브라우저의 네이티브 구현이나 polyfill 라이브러리를 통해 접근 가능한 형식으로 변환될 수 있습니다.

수학식을 이미지로 사용하는 것은 바람직하지 않으나, 기존 콘텐츠 중에는 이미지를 통해 수학식을 표현한 경우가 많습니다. 저자는 SHOULD 수학식 이미지를 텍스트로 라벨링하여, 해당 수학식을 음성으로 읽을 때의 형태를 설명해야 합니다.

참고

브라우저가 MathML을 네이티브로 구현한다면, 일반 텍스트로 근사한 수학식보다 더 강력하고 접근성 높은 수학 경험을 제공할 수 있습니다. 일부 렌더링 엔진은 스크린 리더와 밀접하게 연동되어, 수식의 공간적 터치 탐색과 네메스 점자 형식의 점자 디스플레이 출력을 지원합니다. 이러한 수준의 연동은 수학식 이미지만으로는 지원되지 않으며, 저자가 텍스트 근사값을 제공해도 마찬가지입니다.

작성 시점에 일부 주요 브라우저는 MathML을 네이티브로 지원하지 않으며, JavaScript polyfill 라이브러리로 보완해야 합니다. 수학 콘텐츠를 작성할 때는 가능하면 네이티브 MathML을 사용하고 충분히 테스트하세요. 필요하다면 polyfill을 사용하거나, 텍스트 대체값이 포함된 이미지로 대체하세요.

MathML이 내장된 TeX 주석 예시

<!-- 참고: MathML을 지원하지 않는 사용자 에이전트에서 렌더링되도록 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과 같은 네이티브 수학 형식을 지원하지 않는 경우, 저자는 JavaScript를 사용해 콘텐츠를 브라우저가 표시할 수 있는 형식(예: 데이터 URI를 사용하는 HTML 이미지와 텍스트 대체값)으로 다운그레이드할 MAY 있습니다.

<img role="math" src="..." alt="x=⟮−b±√⟮b²−4ac⟯⟯÷2a">
특성:
특성
슈퍼클래스 역할: section
상속된 상태 및 속성:
이름 출처: author
자식 표현용: False

meter role

알려진 범위 내의 스칼라 측정값 또는 분수값을 나타내는 요소입니다. 관련 역할: progressbar.

저자는 MAY aria-valueminaria-valuemax를 설정하여 meter의 최소/최대값을 지정할 수 있습니다. 설정하지 않으면 암시적 값은 [HTML]의 <input[type="range"]>와 동일한 규칙을 따릅니다:

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

aria-valuenow의 값은 MUST NOT aria-valueminaria-valuemax 계산값의 범위를 벗어나면 안 됩니다.

저자는 SHOULD NOT meter 역할을 진행 상태 표시 용도로 사용하지 않아야 합니다. progressbar 역할이 그 용도에 적합합니다.

참고

현재 WAI-ARIA 속성에는 [HTML]의 <meter> 요소가 지원하는 low, optimum, high 속성이 없습니다. 이 속성들은 ARIA 1.3 버전에서 추가 여부를 검토할 예정입니다.

특성:
특성
슈퍼클래스 역할: range
관련 개념:
필수 상태 및 속성: aria-valuenow
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
자식 표현용: True
역할의 암시적 값: aria-valuemin의 기본값은 0입니다.
aria-valuemax의 기본값은 100입니다.

none role

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

참고

ARIA 1.1 none 역할 관련 참고사항

ARIA 1.1에서 워킹 그룹은 nonepresentation 역할의 동의어로 도입했습니다. 이는 "presentation" 또는 "presentational"이라는 용어의 정확한 의미에 대한 혼란을 해소하기 위함입니다. 많은 사람들이 role="presentation"aria-hidden="true"와 동일하다고 오해하지만, role="none"이 실제 의미를 더 명확하게 전달한다고 생각합니다.

note role

리소스의 주요 콘텐츠에 부수적이거나 보충적인 내용을 담는 구역입니다.

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

option role

listbox 내에서 선택 가능한 항목입니다.

작성자는 MUST option 역할이 부여된 요소가 listbox 또는 group 내에 포함되어 있거나 소유되어야 함을 보장해야 합니다. listbox와 연관되지 않은 옵션은 접근성 API에 올바르게 매핑되지 않을 수 있습니다.

option 역할이 부여된 요소는 암시적으로 aria-selected 값이 false로 설정됩니다.

특성:
특성
상위 역할: input
하위 역할:
기본 개념: <option> ([HTML])
관련 개념:
필수 컨텍스트 역할:
필수 상태 및 속성:
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True
하위 요소 표현 가능: True
역할의 암시적 값: aria-selected의 기본값은 false입니다.

paragraph role

문단 콘텐츠입니다.

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

presentation role

요소의 암시적 네이티브 역할 시맨틱이 접근성 API에 매핑되지 않습니다. 동의어는 none 입니다.

참고

ARIA 1.1 none 역할 관련 참고사항

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

구현체가 role="none"을 충분히 지원하기 전에는 웹 작성자가 presentation 역할만 사용하거나, none 역할의 대체로 role="none presentation"을 중복 사용해야 합니다.

이 역할은 페이지의 외형을 변경하지만 요소 타입이 내포하는 모든 기능적, 인터랙티브, 구조적 의미를 가지지 않는 경우나, WAI-ARIA를 지원하지 않는 구형 브라우저에 접근성 폴백을 제공하기 위해 사용됩니다.

사용 예시:

  • 내용이 완전히 장식적인 요소(예: 공간 이미지, 장식용 그래픽, 레이아웃 정렬용 요소);
  • img 역할을 가진 컨테이너 내의 이미지로, 전체 텍스트 대체가 aria-labelledby 및 (필요할 경우) aria-describedby로 명확히 제공되는 경우;
  • 추가적인 CSS 마크업 "훅"으로 사용되는 요소;
  • 레이아웃 테이블이나 그에 속한 행, 셀 등;

presentation 역할이 부여되고 포커스가 불가능한 요소에 대해서는, 사용자 에이전트는 해당 요소의 암시적 네이티브 시맨틱(역할 및 상태/속성)을 접근성 API에 노출 MUST NOT 해야 합니다. 하지만, 명시적 또는 상속된 presentation 역할이 없는 자식 및 콘텐츠는 노출 MUST 해야 합니다. 즉, presentation 역할은 해당 요소를 접근성 트리에서 역할이 없거나 제거된 것으로 처리하지만, 내부 콘텐츠는 트리에서 제거되지 않습니다.

예를 들어 접근성 API 기준으로 다음 마크업은 동일한 역할(없음)과 동일한 콘텐츠로 취급됩니다.

<!-- 1. [role="presentation"]은 암시적 'heading' 역할 시맨틱을 제거하지만 내용에는 영향을 주지 않습니다. -->
<h1 role="presentation"> Sample Content </h1>

<!-- 2. span에는 암시적 역할이 없으므로 내용만 노출됩니다. -->
<span> Sample Content </span>

<!-- 3. 스타일 및 기타 요인에 따라 이 역할 선언은 일부 구현에서 중복될 수 있습니다. -->
<span role="presentation"> Sample Content </span>

<!-- 4. 모든 경우에, 요소 내용은 접근성 API에 역할 시맨틱 없이 노출됩니다. -->
<!-- <> --> Sample Content <!-- </> -->

presentation 역할은 암시적 네이티브 시맨틱이 있는 요소에 사용됩니다. 즉, 해당 요소에 기본 접근성 API 역할이 있습니다. 일부 요소는 추가 하위 요소가 포함되어야만 완전해집니다. 예를 들어, HTML의 table 요소(table 역할)는 tr 자식(row 역할)을 필요로 하며, 그 하위로 th 또는 td 자식(cell, columnheader, rowheader 역할)이 필요합니다. 마찬가지로, 리스트에는 listitem 자식이 필요합니다. 이러한 필수 하위 요소는 WAI-ARIA에서 필수 소유 요소로 설명합니다.

암시적 또는 상속된 presentation 역할이 WAI-ARIA 역할의 암시적 시맨틱에 적용되어 있고, 해당 역할에 필수 소유 요소가 있다면, 사용자 에이전트는 명시적 역할이 없는 모든 소유 요소에 상속된 presentation 역할을 적용 MUST 해야 합니다. 또한, 호스트 언어 명세에 따라 필수 자식이 필요한 호스트 언어 요소에 명시적 또는 상속된 presentation 역할이 적용된 경우, 명시적 역할이 없는 필수 자식에게도 상속된 presentation 역할을 적용 MUST 해야 합니다.

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

명시적 또는 상속된 presentation 역할이 있고 포커스가 불가능한 요소에 대해서는, 사용자 에이전트는 해당 요소의 역할별 WAI-ARIA 상태 및 속성을 무시 MUST 해야 합니다. 예를 들어 HTMLul 또는 ol 요소에 presentation 역할을 부여하면, li의 암시적 네이티브 시맨틱이 제거됩니다. 이는 list 역할이 필수 소유 요소listitem을 필요로 하기 때문입니다. 마찬가지로 HTML table 요소의 thead/tbody/tfoot/tr/th/td 자식도 제거됩니다. 이는 HTML 명세에서 이들이 table의 필수 구조적 자식임을 명시하기 때문입니다.

참고

필수 소유 요소에 해당하는 암시적 네이티브 시맨틱만 제거됩니다. 중첩된 테이블이나 리스트 등 나머지 콘텐츠는 그대로 남아 있으나, 해당 요소에도 명시적으로 presentation 역할이 적용된 경우에는 제외됩니다.

예를 들어 접근성 API 기준으로 다음 마크업은 동일한 역할(없음)과 동일한 콘텐츠로 취급됩니다.

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

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

이러한 상황에 적용되는 필수 자식을 가진 WAI-ARIA 역할(예: radiogroup, listbox)도 있지만, 실제로는 테이블과 리스트가 가장 자주 presentation 상속이 적용되는 케이스입니다.

명시적 또는 상속된 presentation 역할이 있는 모든 요소에 대해, 사용자 에이전트는 해당 프레젠테이션 요소의 호스트 언어 라벨링 요소에도 상속된 presentation 역할을 적용 MUST 해야 합니다. 예를 들어, table 요소에 presentation 역할이 있으면 caption도 암시적 네이티브 시맨틱이 제거됩니다. caption은 프레젠테이션 테이블의 라벨일 뿐입니다.

작성자는 SHOULD NOT 이미지에 presentation 역할을 적용할 때 의미 있는 대체 텍스트를 제공해서는 안 됩니다(예: HTML에서는 alt="" 사용).

다음 코드 샘플에서는, img를 포함하는 컨테이너가 캡션 단락으로 적절히 라벨링됩니다. 이 예시에서 img 요소는 presentation으로 표시할 수 있습니다. 역할 및 텍스트 대체는 컨테이너 요소에서 제공됩니다.

<div role="img" aria-labelledby="caption">
  <img src="example.png" role="presentation" alt="">
  <p id="caption">이미지를 라벨링하는 시각적 텍스트 캡션.</p>
</div>

다음 코드 샘플에서는 앵커(HTML a 요소)가 treeitem 역할을 하고, 리스트 아이템(HTML li 요소)은 WAI-ARIA의 명시적 presentation 역할로 내장된 시맨틱을 덮어씁니다.

<ul role="tree">
  <li role="presentation">
	<a role="treeitem" aria-expanded="true">펼쳐진 트리 노드</a>
  </li></ul>

프레젠테이션 역할 충돌 해결

프레젠테이션 역할 충돌을 해결하는 방법은 여러 가지가 있습니다.

사용자 에이전트는 명시적 또는 상속된 프레젠테이션 역할이 있는 요소를 접근성 트리에 노출 MUST NOT 해야 하며, 다음은 예외입니다:

  • 요소가 포커스 가능하거나 인터랙티브한 경우, 사용자 에이전트는 presentation 역할을 무시하고 암시적 역할로 노출 MUST 해야 합니다. 이는 요소가 작동 가능함을 보장하기 위함입니다.
  • 필수 소유 요소가 명시적 프레젠테이션이 아닌 역할을 가진 경우, 사용자 에이전트는 상속된 프레젠테이션 역할을 무시하고 해당 요소를 명시적 역할로 노출 MUST 해야 합니다. 명시적 역할 노출로 인해 접근성 트리가 잘못 생성되면, 결과는 정의되지 않습니다.
  • 요소가 글로벌 WAI-ARIA 상태/속성을 가진 경우, 사용자 에이전트는 presentation 역할을 무시하고 암시적 역할로 노출 MUST 해야 합니다. 단, 요소가 역할별 상태/속성만 가지고 있다면, 프레젠테이션 역할이 상속된 경우와 명시적 프레젠테이션이 아닌 역할이 적용된 경우에만 노출 MUST NOT 해야 합니다.

예를 들어 aria-describedby는 글로벌 속성이므로 항상 적용됩니다. aria-level은 글로벌이 아니므로 요소가 프레젠테이션 상태가 아닐 때만 적용됩니다.

<!-- 1. [role="presentation"]은 글로벌 aria-describedby 속성 때문에 무시됩니다. -->
<h1 role="presentation" aria-describedby="comment-1"> Sample Content </h1>
<!-- 2. [role="presentation"]은 암시적 'heading'과 비글로벌 aria-level을 모두 제거합니다. -->
<h1 role="presentation" aria-level="2"> Sample Content </h1>
특성:
특성
상위 역할: structure
상속된 상태 및 속성:
금지된 상태 및 속성:
이름 출처: prohibited

progressbar role

작업 진행 상태를 표시하는 요소로, 시간이 오래 걸리는 작업에 사용됩니다.

progressbar는 사용자의 요청이 수신되었고, 애플리케이션이 요청된 작업 완료를 향해 진행 중임을 나타냅니다.

작성자는 MAY aria-valueminaria-valuemax를 설정하여 진행 표시기의 최소값과 최대값을 지정할 수 있습니다. 그렇지 않으면, 해당 값의 암시적 규칙은 [HTML]의 <input[type="range"]>과 동일합니다:

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

작성자는 값이 불확정(indeterminate)이지 않다면 aria-valuenow을 제공 SHOULD 해야 하며, 불확정일 경우 aria-valuenow 속성을 생략 SHOULD 해야 합니다. 작성자는 시각적 진행 표시가 업데이트될 때마다 해당 값을 업데이트 SHOULD 해야 합니다. progressbar가 특정 페이지 영역의 로딩 진행을 설명한다면, 작성자는 aria-describedby로 상태를 가리키고, 해당 영역에 aria-busy 속성을 true로 설정 SHOULD 해야 하며, 로딩이 완료될 때까지 유지해야 합니다. progressbar의 값은 항상 읽기 전용이므로 사용자가 직접 변경할 수 없습니다.

참고

보조 기술은 aria-valuenow 값을 일반적으로 aria-valueminaria-valuemax 값 사이의 백분율로 렌더링합니다. 단, aria-valuetext가 지정된 경우는 예외입니다.

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

radio role

동일한 역할을 가진 여러 요소 중에서 한 번에 하나만 선택할 수 있는 체크 가능한 입력입니다.

작성자는 SHOULD radio 역할이 부여된 요소들이 어떤 값에 영향을 미치는지 명확히 그룹화해야 합니다. 이는 radio 요소들을 radiogroup 역할을 가진 요소로 감싸서 달성합니다. 만약 radio 버튼들을 radiogroupDOM 자식으로 만들 수 없다면, 작성자는 radiogroup 요소에 aria-owns 속성을 사용하여 자식과의 관계를 표시 SHOULD 해야 합니다.

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

radiogroup role

radio 버튼들의 그룹입니다.

radiogroup은 한 번에 하나의 항목만 체크될 수 있는 select 목록의 일종입니다. 작성자는 한 그룹 내에서 한 radio 버튼만 체크될 수 있도록 SHOULD 해야 합니다. 그룹 내의 한 항목이 체크되면, 이전에 체크된 항목은 체크 해제되어(aria-checked 속성false가 됨)야 합니다.

특성:
특성
상위 역할: select
관련 개념: list
필수 소유 요소: radio
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

range role

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

참고

range는 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: structure
하위 역할:
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author

region role

특정 작성자 지정 목적에 관련된 콘텐츠를 포함하는 landmark로, 충분히 중요한 내용이 담겨 있어 사용자가 해당 구역으로 쉽게 이동하거나 페이지 요약에 포함되길 원할 수 있습니다. 이러한 페이지 요약은 사용자 에이전트나 보조 기술에 의해 동적으로 생성될 수 있습니다.

작성자는 SHOULD main, complementary, navigation 등 다른 landmark 역할로 정확히 설명되지 않는 목적의 콘텐츠 섹션에만 region 역할을 사용하는 것이 좋습니다.

작성자는 MUST region 역할을 가진 각 요소에 해당 구역의 목적을 간략히 설명하는 라벨을 제공해야 합니다. 작성자는 SHOULD 가시적인 라벨이 있을 경우 aria-labelledby로 참조해야 하며, 가능하다면 라벨을 제목(heading) 내부에 포함하는 것이 좋습니다. 제목은 표준 호스트 언어의 heading 요소이거나 heading 역할의 요소일 수 있습니다.

보조 기술SHOULD 사용자가 region 역할을 가진 요소로 빠르게 이동할 수 있도록 지원해야 합니다. 일반 사용자 에이전트MAY region 역할을 가진 요소로 빠르게 이동할 수 있도록 지원할 수 있습니다.

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

roletype role

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

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

참고

roletype는 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
하위 역할:
지원하는 상태 및 속성:
이름 출처:
  • n/a

row role

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

행은 cell 또는 gridcell 요소를 포함하며, table, grid, treegrid를 구성하는 역할을 합니다.

row 역할은 table, grid, treegrid에서 사용할 수 있지만, aria-expanded, aria-posinset, aria-setsize, aria-level의 의미는 인터랙티브 트리 그리드의 계층 구조에만 적용됩니다. 따라서 작성자는 MUST NOT table 또는 grid에 속한 row에 위의 4가지 속성을 적용하지 않아야 하며, 사용자 에이전트는 SHOULD NOT 이 4가지 속성을 보조 기술에 노출하지 않아야 합니다. 단, rowtreegrid에 속한 경우는 예외입니다.

작성자는 MUST rolerow요소table, grid, rowgroup, treegrid 역할의 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

참고: aria-disabled 사용에 대하여

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

특성:
특성
상위 역할:
기본 개념: <tr> ([HTML])
필수 컨텍스트 역할:
필수 소유 요소:
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

rowgroup role

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

rowgroup 역할은 소유row 요소 사이의 관계를 설정합니다. 이는 HTML table 요소thead, tfoot, tbody와 구조적으로 동일합니다.

작성자는 MUST rolerowgroup요소grid, table, treegrid 역할의 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

참고

rowgroup 역할은 부분적으로 HTML에서 역할 대칭성을 지원하기 위해 존재하며, HTML table 요소에 명시적으로 presentation 역할이 적용된 경우 프레젠테이션 상속의 전파를 허용합니다.

참고

이 역할은 행 그룹의 유형(예: thead vs. tbody)을 구분하지 않지만, WAI-ARIA 2.0에 대해 이슈가 제기된 바 있습니다.

특성:
특성
상위 역할: structure
기본 개념: <tbody>, <tfoot>, <thead> ([HTML])
필수 컨텍스트 역할:
필수 소유 요소: row
상속된 상태 및 속성:
이름 출처: author

rowheader role

행의 헤더 정보를 담고 있는 셀입니다.

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

작성자는 MUST rolerowheader요소row 역할의 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

aria-selected 상태를 rowheader에 적용해도, 사용자 에이전트가 해당 행의 모든 셀에 aria-selected 상태를 자동으로 전파해서는 MUST NOT 안 됩니다. 작성자는 필요에 따라 이와 같은 선택 전파를 직접 구현할 MAY 있습니다.

rowheader 역할은 인터랙티브 그리드와 비인터랙티브 테이블 모두에서 사용할 수 있지만, aria-expanded, aria-readonly, aria-required의 사용은 인터랙티브 요소에만 적용됩니다. 따라서 작성자는 SHOULD NOT table에 속한 rowheader에 위의 속성을 사용하지 않아야 하며, 사용자 에이전트는 SHOULD NOT rowheadergrid 또는 treegrid에 속하지 않는 한 보조 기술에 이 속성들을 노출하지 않아야 합니다.

참고: aria-disabled 사용에 대하여

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

특성:
특성
상위 역할:
기본 개념: <th[scope="row"]> ([HTML])
필수 컨텍스트 역할: row
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True

scrollbar role

콘텐츠가 표시되는 영역 내에서 스크롤을 제어하는 그래픽 오브젝트입니다. 콘텐츠가 영역 내에 모두 표시되는지 여부와 관계없이 사용할 수 있습니다.

scrollbar는 스크롤바의 크기와 thumb의 위치를 통해 현재 값과 가능한 값의 범위를 표현합니다. thumb의 위치는 스크롤 방향(가로/세로)에 대한 가시 영역 내 위치를 나타냅니다. 스크롤바의 방향은 스크롤바 자체 방향과, 스크롤바가 제어하는 뷰 영역에서의 스크롤 효과의 방향을 나타냅니다. 일반적으로 방향키(화살표 키 등)를 사용해 현재 값을 증가/감소시키는 것이 가능합니다.

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

작성자는 MAY aria-valueminaria-valuemax를 설정하여 thumb의 최소/최대 위치를 지정할 수 있습니다. 그렇지 않으면, 해당 값의 암시적 규칙은 [HTML]의 <input[type="range"]>과 동일합니다:

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

작성자는 MUST aria-valuenow 속성을 설정하여 thumb의 현재 위치를 표시해야 합니다. aria-valuenow가 없거나 예기치 않은 값일 경우, 브라우저는 MAY 상태 및 속성의 작성자 오류 처리 방법에 명시된 복구 기술을 구현할 수 있으며, 이는 [HTML]의 <input[type="range"]>과 동등합니다.

scrollbar 역할이 부여된 요소는 암시적으로 aria-orientation 값이 vertical입니다.

참고

보조 기술은 일반적으로 aria-valuenow 값을 aria-valueminaria-valuemax 값 사이의 백분율로 표시합니다. 단, aria-valuetext가 지정된 경우는 예외입니다. aria-valuemin, aria-valuemax, aria-valuenow 값을 이 계산에 적합하게 설정하는 것이 가장 좋습니다.

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

section role

문서 또는 애플리케이션에서 렌더링 가능한 구조적 컨테이너 단위입니다.

참고

section은 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: structure
하위 역할:
상속된 상태 및 속성:
이름 출처: n/a

sectionhead role

관련 섹션의 주제를 라벨링하거나 요약하는 구조입니다.

참고

sectionhead는 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: structure
하위 역할:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author

select role

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

참고

select는 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할:
하위 역할:
지원하는 상태 및 속성: aria-orientation
상속된 상태 및 속성:
이름 출처: author

separator role

섹션 콘텐츠나 메뉴 항목 그룹을 구분하고 구별하는 구분선입니다.

separator에는 두 가지 유형이 있습니다. 하나는 structure로, 눈에 보이는 경계만 제공하는 정적 separator이고, 다른 하나는 포커스가 가능하고 인터랙티브하며 이동 가능한 widget입니다. separator가 포커스가 불가한 경우, 보조 기술에는 정적 구조 요소로 노출됩니다. 예를 들어, 정적 separator는 메뉴 내 두 그룹의 항목을 시각적으로 나누거나, 페이지의 두 섹션 사이에 수평선을 제공하는 데 사용할 수 있습니다.

작성자는 MAY separator를 포커스 가능하도록 만들어 widget으로 만들 수 있습니다. 이 widget은 두 섹션 사이에 시각적 경계를 제공할 뿐 아니라, 사용자가 separator의 위치를 변경하여 섹션의 상대적 크기를 바꿀 수 있게 합니다. 가변 separator widget은 범위 내에서 연속적으로 이동할 수 있고, 고정 separator widget은 두 개의 위치만 지원합니다. 일반적으로 고정 separator widget은 섹션 중 하나를 확장/축소 상태로 토글하는 데 사용됩니다.

separator가 포커스가 가능하다면, 작성자는 MUST aria-valuenow 값을 separator의 현재 위치를 반영하는 숫자로 설정하고, 값이 변경될 때마다 업데이트해야 합니다. 또한 SHOULD aria-valuemin 값이 0이 아니면 제공하고, aria-valuemax 값이 100이 아니면 제공해야 합니다. 해당 속성이 없거나 숫자가 아니면 암시적 값은 다음과 같습니다:

  • aria-valuemin의 암시적 값은 0입니다.
  • aria-valuemax의 암시적 값은 100입니다.

한 애플리케이션에 포커스가 가능한 separator가 여러 개 있다면, 작성자는 각 separator에 접근 가능한 이름을 제공하는 것이 좋습니다.

separator 역할이 부여된 요소는 암시적으로 aria-orientation 값이 horizontal입니다.

특성:
특성
상위 역할:
관련 개념:
필수 상태 및 속성: aria-valuenow (포커스 가능할 때)
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
자식 표현 가능: True
역할의 암시적 값: aria-orientation의 기본값은 horizontal입니다.
aria-valuemin의 기본값은 0입니다.
aria-valuemax의 기본값은 100입니다.

slider role

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

슬라이더는 슬라이더의 크기와 thumb의 위치를 통해 현재 값과 가능한 값의 범위를 표현합니다. 일반적으로 방향키(화살표 키 등)를 사용해 값을 증가/감소시킬 수 있습니다.

작성자는 MAY aria-valueminaria-valuemax 속성을 설정할 수 있습니다. 그렇지 않으면 해당 값의 암시적 규칙은 [HTML]의 <input[type="range"]>과 동일합니다:

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

작성자는 MUST aria-valuenow 속성을 반드시 설정해야 합니다. aria-valuenow가 없거나 예기치 않은 값이면, 브라우저는 MAY 상태 및 속성의 작성자 오류 처리 방법에 명시된 복구 기술을 구현할 수 있으며, 이는 [HTML]의 <input[type="range"]>과 동등합니다.

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

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

spinbutton role

사용자가 이산적인 선택지 중에서 선택할 수 있도록 하는 range 형태의 폼입니다.

spinbutton은 일반적으로 증가/감소 버튼을 활성화하여 허용된 값 집합을 단계적으로 이동함으로써 표시 값을 변경할 수 있습니다. 일부 구현에서는 텍스트 필드에 값을 표시하며, 편집 및 입력이 가능하지만, 일반적으로 잘못된 값 입력을 방지하도록 제한합니다.

spinbuttonselect와 외관상 유사하지만, 명확한 옵션이 아니라 범위가 정해진 경우(특히 큰 범위일 때)에는 spinbutton을 사용하는 것이 좋습니다. 예를 들어, 1~1,000,000 범위의 값을 표현할 때 spinbutton은 동일 값을 가진 select widget보다 훨씬 더 나은 성능을 제공합니다.

작성자는 MAY 자식 또는 소유 요소가 있는 spinbutton을 만들 수 있지만, 해당 요소를 textbox 및/또는 두 개의 buttons로 제한 MUST 해야 합니다. 또는, 작성자는 MAY text input에 spinbutton 역할을 적용하고, 형제 버튼을 만들어 증감 기능을 지원할 수 있습니다.

키보드 접근성을 확보하려면, 모든 role 인스턴스에 대해 자식의 포커스를 관리 SHOULD 해야 합니다(자세한 내용은 Managing Focus 참고). spinbutton이 포커스를 받았을 때, 작성자는 SHOULD textbox 요소가 있으면 해당 요소에, 없으면 spinbutton 자체에 포커스를 두어야 합니다. 또한 SHOULD 키보드의 , 아래 화살표가 증감 기능을 수행하도록 하고, 증감 button 요소는 기본 탐색 링(예: HTML의 Tab 링)에 포함되지 않도록 해야 합니다.

작성자는 spinbutton에 값이 있을 경우 SHOULD aria-valuenow 속성을 설정해야 하며, 최소값이 있으면 SHOULD aria-valuemin을, 최대값이 있으면 SHOULD aria-valuemax을 설정해야 합니다.

특성:
특성
상위 역할:
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True
역할의 암시적 값: aria-valuemin의 기본값은 최소값이 없습니다.
aria-valuemax의 기본값은 최대값이 없습니다.
aria-valuenow의 기본값은 0

status role

Live region의 한 종류로, 사용자에게 조언 정보를 제공하지만 alert를 사용할 만큼 중요하지 않은 경우가 많으며, 반드시 status bar 형태로 제공되는 것은 아닙니다.

작성자는 SHOULD status 역할의 요소가 상태 변경으로 인해 포커스를 받지 않도록 해야 합니다.

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

보조 기술은 브라유(점자) 디스플레이의 일부 셀을 status 표시 용도로 예약할 MAY 있습니다.

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

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

strong role

중요하거나, 심각하거나, 긴급한 콘텐츠입니다. 관련 역할은 emphasis를 참고하세요.

strong 역할의 목적은 강한 중요성, 심각성 또는 긴급함을 전달하는 것입니다. 단순한 서체 변화 등 의미에 중요하지 않은 것은 전달하지 않습니다. 작성자는 SHOULD strong 역할의 부재가 콘텐츠의 의미를 바꾸는 경우에만 이 역할을 사용해야 합니다.

strong 역할은 스트레스나 강조를 전달하기 위한 것이 아니며, 이러한 목적에는 emphasis 역할이 더 적합합니다.

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

structure role

문서 구조 요소입니다.

문서 구조 역할은 동적 웹 콘텐츠의 접근성을 지원하며, 보조 기술이 활성 콘텐츠와 정적 문서 콘텐츠를 구분할 수 있도록 돕습니다. 구조적 역할 자체는 모두 접근성 API에 직접 매핑되지는 않지만, 위젯 역할을 생성하거나 보조 기술을 위한 콘텐츠 적응에 사용됩니다.

참고

structure는 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: roletype
하위 역할:
상속된 상태 및 속성:
이름 출처:
  • n/a

subscript role

하나 이상의 아래첨자 문자입니다. 관련 역할은 superscript를 참고하세요.

subscript 역할은 특정 의미를 가진 서체 관례를 마크업할 때만 사용해야 하며, 단순한 서체 표현 목적으로 사용하지 않습니다. 일반적으로, 작성자는 아래첨자가 없으면 콘텐츠 의미가 달라지는 경우에만 이 역할을 SHOULD 사용해야 합니다.

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

superscript role

하나 이상의 위첨자 문자입니다. 관련 역할은 superscript를 참고하세요.

superscript 역할은 특정 의미를 가진 서체 관례를 마크업할 때만 사용해야 하며, 단순한 서체 표현 목적에는 사용하지 않습니다. 일반적으로, 작성자는 위첨자가 없으면 콘텐츠 의미가 달라지는 경우에만 이 역할을 SHOULD 사용해야 합니다.

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

switch role

체크박스와 유사하지만 on/off 값을 나타내는 유형입니다. checked/unchecked 값과는 다릅니다. 관련 역할은 checkbox를 참고하세요.

switcharia-checked 속성은 입력이 켜짐(true) 또는 꺼짐(false) 상태임을 나타냅니다. mixed 값은 유효하지 않으며, 사용자 에이전트는 MUST mixed 값을 false와 동일하게 처리해야 합니다.

참고

switchcheckbox 및 토글 button과 거의 동일한 기능을 제공하지만, 보조 기술이 위젯을 화면상의 모습과 일치하게 표시할 수 있게 해줍니다.

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

tab role

사용자에게 표시될 탭 콘텐츠를 선택할 수 있는 그룹 라벨입니다.

tabpanel 또는 tabpanel 내 항목에 포커스가 있으면, 해당 tabtablist 내에서 현재 활성 탭입니다(Managing Focus 참조). tablist 요소는 일반적으로 연관된 여러 tab 요소를 포함하고 tabpanel 요소 근처, 보통 그 앞에 위치합니다. 탭 세트 디자인 패턴 구현에 대한 자세한 내용은 WAI-ARIA 작성자 실습를 참고하세요.

작성자는 MUST roletab요소tablist 역할의 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

작성자는 SHOULD 현재 활성 탭에 연관된 tabpanel이 사용자에게 인지 가능하도록 해야 합니다.

단일 선택 가능한 tablist의 경우, 작성자는 사용자가 해당 탭과 연관된 tabpanel을 선택할 때까지 다른 tabpanel 요소를 숨겨야 SHOULD 합니다. 다중 선택 가능한 tablist의 경우, 작성자는 SHOULD 각 가시적인 tabpanel에 대응하는 tabaria-expanded 속성true로 설정하고, 숨겨진 tabpanel에 대응하는 탭에는 aria-expandedfalse로 설정해야 합니다.

어느 경우든, 작성자는 SHOULD 선택된 탭에 aria-selected 속성이 true로 설정되고, 비활성 탭 요소는 aria-selected 속성이 false로 설정되며, 현재 선택된 탭이 시각적으로 선택됨을 표시해야 합니다. 현재 탭에 aria-selected 속성이 없으면, 사용자 에이전트는 플랫폼 접근성 API를 통해 보조 기술에 현재 포커스된 탭이 선택됨을 SHOULD 알려야 합니다.

특성:
특성
상위 역할:
필수 컨텍스트 역할: tablist
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
자식 표현 가능: True
역할의 암시적 값: aria-selected의 기본값은 false입니다.

table role

데이터가 행과 열로 배열된 section입니다. 관련 역할로 grid를 참고하세요.

table 역할은 인터랙티브하지 않은 표 컨테이너를 위한 것입니다. 표 컨테이너가 선택 상태를 유지하거나, 자체적으로 2차원 내비게이션을 제공하거나, 사용자가 내용을 재배치하거나 표시 방식을 조작할 수 있도록 하면, 작성자는 SHOULD grid 또는 treegrid를 대신 사용해야 합니다.

작성자는 SHOULD 가능한 경우, host 언어의 표 의미론을 우선 사용해야 하며, 예를 들어 [HTML]의 <table> 요소를 사용할 수 있습니다.

특성:
특성
상위 역할: section
하위 역할:
기본 개념: <table> ([HTML])
필수 소유 요소:
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
접근 가능한 이름 필수: True

tablist role

tab 요소 목록으로, 각각은 tabpanel 요소를 참조합니다.

키보드 접근성을 위해, 작성자는 모든 role 인스턴스에 대해 자식의 포커스를 관리 SHOULD 해야 하며(Managing Focus 참조).

단일 선택 가능한 tablist의 경우, 작성자는 사용자가 해당 탭과 연관된 tabpanel을 선택할 때까지 다른 tabpanel 요소를 숨겨야 SHOULD 합니다. 다중 선택 가능한 tablist의 경우, 작성자는 SHOULD 각 가시적인 tabpanelaria-expanded 속성true로 설정하고, 숨겨진 tabpanel에는 aria-expandedfalse로 설정해야 합니다.

tablist 요소는 일반적으로 여러 tabpanel 요소 근처, 보통 그 앞에 위치합니다. 탭 세트 디자인 패턴 구현에 대한 자세한 내용은 WAI-ARIA 작성자 실습를 참고하세요.

tablist 역할이 부여된 요소는 암시적으로 aria-orientation 값이 horizontal입니다.

특성:
특성
상위 역할:
필수 소유 요소: tab
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처: author
역할의 암시적 값: aria-orientation의 기본값은 horizontal입니다.

tabpanel role

tab과 연관된 리소스를 담는 컨테이너로, 각 tabtablist에 포함되어 있습니다.

작성자는 SHOULD tabpanel 요소를 연관된 tab과 연결해야 하며, tab에 aria-controls 속성으로 tabpanel을 참조하거나, tabpanel에 aria-labelledby 속성으로 tab을 참조할 수 있습니다.

tablist 요소는 여러 tabpanel 요소 근처, 보통 그 앞에 위치합니다. 탭 세트 디자인 패턴 구현에 대한 자세한 내용은 WAI-ARIA 작성자 실습를 참고하세요.

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

term role

정의가 제공된 단어나 구절입니다. 관련 역할로 definition을 참고하세요.

term 역할은 작성자가 정의(definition)를 제공했거나 사용자가 제공해야 하는 단어나 구절을 명시적으로 식별하는 데 사용됩니다.

작성자는 SHOULD NOT 링크와 같은 인터랙티브 요소에 term 역할을 사용해서는 안 됩니다. 그렇게 하면 보조 기술 사용자가 해당 요소와 상호작용하지 못할 수 있습니다.

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

textbox role

자유롭게 텍스트를 값으로 입력할 수 있는 입력 유형입니다.

aria-multiline 속성true이면, widget에서 입력 시 줄바꿈이 허용되어 HTML textarea와 같습니다. 그렇지 않으면 일반 텍스트박스입니다. 이 역할은 텍스트 입력 요소가 없는 언어, 또는 다른 시맨틱 요소를 텍스트 필드로 재사용하는 경우에 사용됩니다.

참고

대부분의 사용자 에이전트 구현에서, HTML의 단일행 텍스트 필드와 다중행 텍스트 필드에서 ENTER 또는 RETURN 키의 기본 동작이 다릅니다. 단일행 <input type="text"> 요소에 포커스가 있을 때는 보통 해당 키를 누르면 폼이 제출됩니다. 다중행 <textarea> 요소에 포커스가 있을 때는 해당 키가 줄바꿈을 삽입합니다. WAI-ARIAtextbox 역할은 aria-multiline 속성으로 두 유형을 구분하므로, 필드 설계 시 이 차이점을 유념해야 합니다.

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

time role

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

참고

현재 WAI-ARIA에는 [HTML]의 <time>에서 지원하는 datetime 속성에 대응하는 속성이 없습니다. 이 속성 추가는 ARIA 1.3에서 고려될 예정입니다.

작성자는 텍스트 내용을 유효한 날짜 또는 시간 관련 문자열로 제한하거나, 향후 datetime에 해당하는 속성을 time 역할이 부여된 요소에 적용해야 SHOULD 합니다.

time 역할 요소의 텍스트 내용으로 사용할 수 있는 유효한 날짜/시간 관련 문자열 예시:

  • 유효한 월 문자열: 2019-11
  • 유효한 날짜 문자열: 2019-11-18
  • 연도 없는 날짜 문자열: 11-18
  • 유효한 시간 문자열: 09:54:39
  • 유효한 floating 날짜 및 시간 문자열: 2019-11-18T14:54
  • 유효한 시간대 오프셋 문자열: -08:00
  • 유효한 글로벌 날짜 및 시간 문자열: 2019-11-18T14:54Z
  • 유효한 주(week) 문자열: 2019-W47
  • 4자리 이상의 ASCII 숫자, 그중 하나 이상은 U+0030 DIGIT ZERO(0)가 아님: 0001
  • 유효한 지속시간 문자열: 4h 18m 3s
특성:
특성
상위 역할: section
관련 개념:
상속된 상태 및 속성:
이름 출처: author

timer role

경과 시간 또는 종료까지 남은 시간을 표시하는 숫자 카운터가 포함된 live region 유형입니다.

timer 객체의 텍스트 콘텐츠는 현재 시간 값을 나타내며, 값이 변경될 때마다 업데이트됩니다. 타이머 값은 반드시 기계 판독 가능하지는 않지만, 작성자는 SHOULD 타이머가 일시정지되거나 종료 지점에 도달하지 않는 한, 일정한 간격으로 텍스트 내용을 업데이트해야 합니다.

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

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

toolbar role

자주 사용하는 기능 버튼 또는 컨트롤을 콤팩트한 시각적 형태로 모아둔 컬렉션입니다.

툴바는 종종 menubar에 있는 기능의 일부만을 가지고 있으며, 사용자가 해당 기능을 쉽게 사용할 수 있도록 설계되어 있습니다. 애플리케이션에 여러 개의 툴바가 있다면, 작성자는 MUST 각 툴바에 라벨을 제공해야 합니다.

작성자는 MAY role 인스턴스의 모든 자식 포커스를 Managing Focus에 따라 관리할 수 있습니다.

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

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

tooltip role

요소에 대한 설명을 표시하는 컨텍스트 팝업입니다.

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

참고

일반적인 tooltip 지연 시간은 1~5초입니다.

작성자는 SHOULD roletooltip인 요소가 툴팁이 표시되기 전에 또는 표시 시점에 aria-describedby를 통해 참조되도록 해야 합니다.

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

tree role

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

키보드 접근성을 위해, 작성자는 모든 role 인스턴스에 대해 자식의 포커스를 관리 SHOULD 해야 하며(Managing Focus 참조).

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

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

treegrid role

행을 tree와 동일하게 확장/축소할 수 있는 grid입니다.

aria-readonlyroletreegrid요소에 설정된 경우, 사용자 에이전트는 해당 값을 treegrid에 소유된 모든 gridcell 요소에 전파하고 접근성 API에 노출 MUST 해야 합니다. 작성자는 개별 gridcell 요소에 대해 aria-readonly 전파 값을 재정의할 MAY 있습니다.

포커스 가능한 gridcellaria-readonly 속성이 적용되면, 해당 gridcell에 포함된 콘텐츠가 편집 가능한지 여부를 나타냅니다. aria-readonly 속성은 treegrid 자체의 내비게이션 또는 조작 기능의 사용 가능 여부를 의미하지는 않습니다.

콘텐츠 편집 기능을 제공하는 treegrid에서 포커스 가능한 gridcell 요소의 콘텐츠가 편집 불가라면, 작성자는 해당 gridcell 요소에 aria-readonlytrue로 설정할 MAY 있습니다. 하지만 treegridaria-readonly를 지원하지 않는 요소(예: link 등) 집합을 제공하는 경우에는 작성자가 값을 지정하지 않아도 됩니다.

키보드 접근성을 위해, 작성자는 모든 role 인스턴스에 대해 자식의 포커스를 관리 SHOULD 해야 합니다(Managing Focus 참조).

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

treeitem role

tree의 옵션 항목입니다. 이는 하위 treeitem 그룹이 있을 경우 확장/축소할 수 있는 요소입니다.

확장/축소 가능한 treeitem 요소 집합은 group role 요소에 포함됩니다.

작성자는 MUST roletreeitem요소group 또는 tree 역할의 요소에 포함되거나 소유되어야 함을 보장해야 합니다.

특성:
특성
상위 역할:
필수 컨텍스트 역할:
지원하는 상태 및 속성:
상속된 상태 및 속성:
이름 출처:
  • contents
  • author
접근 가능한 이름 필수: True

widget role

그래픽 사용자 인터페이스(GUI)의 인터랙티브 구성요소입니다.

위젯은 사용자가 상호작용할 수 있는 독립적인 사용자 인터페이스 객체입니다. 위젯 역할접근성 API의 표준 기능에 매핑됩니다. 사용자가 widget의 비추상 하위 역할이 할당된 요소를 탐색할 때, 표준 키보드 이벤트를 차단하는 보조 기술SHOULD 애플리케이션 탐색 모드로 전환하여 키보드 이벤트를 웹 애플리케이션에 전달해야 합니다. 이는 특정 보조 기술이 일반 탐색 모드에서 웹 애플리케이션 상호작용에 더 적합한 모드로 전환하도록 하는 힌트입니다. 일부 사용자 에이전트는 탐색 모드에서 방향키(위, 아래 등)를 문서 탐색에 사용하므로, 웹 애플리케이션에서 해당 키 사용이 제한될 수 있습니다.

참고

widget은 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: roletype
하위 역할:
상속된 상태 및 속성:
이름 출처:
  • n/a

window role

브라우저 또는 애플리케이션 창입니다.

요소에 이 역할을 지정하면, 실제 운영체제의 네이티브 창이든, 문서의 일부를 창처럼 스타일링한 섹션이든 관계없이 GUI 맥락에서 창과 같은 동작을 갖게 됩니다.

참고

이 역할의 설명에서 "애플리케이션"이라는 용어는 application 역할을 의미하지 않으며, 해당 역할은 특정 보조 기술 동작을 지정합니다.

참고

window는 온톨로지에서 사용하는 추상 역할입니다. 작성자는 이 역할을 콘텐츠에 사용해서는 안 됩니다.

특성:
특성
추상 역할 여부: True
상위 역할: roletype
하위 역할:
지원하는 상태 및 속성: aria-modal
상속된 상태 및 속성:
이름 출처: author

6. 지원되는 상태 및 속성

6.1 상태와 속성의 구분

"상태"(states)와 "속성"(properties)은 유사한 특징을 나타냅니다. 둘 다 특정 object에 대한 정보를 제공하며, role의 본질을 정의하는 일부를 구성합니다. 이 문서에서 상태와 속성은 모두 aria-접두사가 붙은 마크업 attribute로 다뤄집니다. 하지만 의미의 미묘한 차이를 명확히 하기 위해 개념적으로 구분하여 유지합니다. 주요 차이점 중 하나는 속성(예: aria-labelledby)의 이 애플리케이션 수명주기 내내 바뀔 가능성이 상태(예: aria-checked)의 값보다 낮다는 점입니다. 상태 값은 사용자 상호작용으로 인해 자주 변경될 수 있습니다. 단, 변경 빈도의 차이가 규칙은 아니며, aria-valuetext와 같이 자주 변경되는 속성도 있습니다. 웹 콘텐츠 작성자 대부분에게 상태와 속성의 구분은 큰 의미가 없으므로, 본 명세에서는 "상태"와 "속성"을 가급적 "attribute"라고 통칭합니다. 더 자세한 내용은 stateproperty 정의를 참고하십시오.

6.2 상태 및 속성의 특징

상태와 속성은 다음 절에서 설명된 특징을 가집니다.

이 명세 또는 다른 언어의 기능 중 해당 state 또는 property에 상응하는 것에 대한 참고 정보입니다. 완전히 일치하지 않을 수 있으나, 해당 상태나 속성의 의도를 이해하는 데 도움이 됩니다.

6.2.2 사용되는 역할

해당 state 또는 property를 사용하는 role에 관한 참고 정보입니다. 이 정보는 상태 또는 속성의 적절한 사용처를 이해하는 데 도움을 줍니다. 명시된 역할 외에서 해당 상태 또는 속성을 사용할 경우, 정의되지 않습니다.

6.2.3 역할로 상속

상위 역할로부터 해당 state 또는 property를 상속받는 role에 대한 참고 정보입니다.

6.2.4

해당 state 또는 property의 값 타입입니다. 값은 다음 중 하나일 수 있습니다:

true/false
true 또는 false 값을 나타냅니다. 특별히 명시되지 않은 한, 이 값 타입의 기본값은 false입니다.
tristate
true, false, mixed, undefined 값을 나타냅니다. 특별히 명시되지 않은 한, 이 값 타입의 기본값은 undefined입니다.
true/false/undefined
true, false, 또는 undefined(해당 없음) 값을 나타냅니다. 특별히 명시되지 않은 한, 이 값 타입의 기본값은 undefined입니다. 예를 들어, aria-expandedfalse로 설정된 요소는 현재 확장되어 있지 않습니다. aria-expandedundefined면 확장 가능한 요소가 아닙니다.
ID reference
같은 문서 내의 다른 element의 ID를 참조합니다.
ID reference list
하나 이상의 ID 참조 목록입니다.
integer
소수 부분이 없는 숫자 값입니다.
number
임의의 실수 값입니다.
string
제한 없는 값 타입입니다.
token
허용된 값 집합 중 하나입니다. 기본값은 각 attribute의 Values 표에 명시되어 있으며, Attribute Values 절에서 확인할 수 있습니다.
token list
하나 이상의 토큰 목록입니다.

이들은 상태 및 속성에 대한 일반적인 타입이며, 구체적인 표현 방법은 정의하지 않습니다. 이러한 값이 host 언어에서 어떻게 표현되고 처리되는지에 대한 자세한 내용은 상태 및 속성 attribute 처리를 참고하십시오.

6.3 ARIA 속성

6.3.1 다중 값 속성 값

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

6.3.2 ARIA 속성의 IDL 반영

모든 ARIA 속성은 IDL에서 nullable DOMString 속성으로 반영됩니다. 이는 true/false 타입과 모든 기타 ARIA 속성을 포함합니다.

ARIA 값 표의 기본값은 반드시 IDL에 값 누락 시 기본값이나 잘못된 값 기본값으로 반영되어서는 안 됩니다. 값을 가져올 때, ARIA 속성이 없으면 null을 반환합니다. ARIA 속성은 get 시 유효성 검증되지 않습니다. ARIA 값이 유효하지 않은 경우, get 시 설정된 값을 리터럴 문자열로 반환하며, 잘못된 값 기본값을 반환하지 않습니다.

6.3.3 운영 체제 접근성 API의 다중 값 ARIA 속성 매핑

IDL 반영과 달리, 운영 체제 접근성 API의 ARIA 속성 매핑에서는 기본값이 있을 수 있습니다. ARIA 값 표의 기본값은 운영 체제 접근성 API5.2.3 지원 상태 및 속성Core Accessibility API Mappings 1.1에 설명된 대로 노출됩니다.

6.3.4 ARIA nullable DOMString 속성

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

HTML에서 ARIA nullable DOMString 속성에 아래 알고리즘을 사용해야 합니다:

값을 가져올 때, 해당 내용 속성이 존재하지 않으면 IDL 속성은 null을 반환해야 합니다. 그렇지 않으면, IDL 속성은 투명하고 대소문자를 보존하는 방식으로 값을 가져옵니다. 값을 설정할 때, 새 값이 null이면 내용 속성을 제거해야 하며, 그렇지 않으면 내용 속성을 지정된 새 값으로 투명하고 대소문자를 보존하는 방식으로 설정해야 합니다.

참고

참고: ARIA 1.2 기준으로, IDL을 통해 노출되는 모든 ARIA 속성은 nullable DOMStrings로 정의되어 있습니다. 이는 모든 주요 렌더링 엔진의 현행 구현과 일치합니다. 이 명세 변경은 실제 구현 변경 없이 웹 엔진의 현행 표준을 반영하는 것입니다. 그러나 향후 초안에서 ARIA 워킹 그룹은 여러 ARIA 속성을 non-nullable DOMStrings로 변경하고 구현을 요청할 계획입니다. 제안된 변경은 ARIA를 HTML열거형 속성 사용과 일치시킬 것입니다.

6.3.4.1 속성 사용 예시

이 섹션은 비규범적입니다.

6.4 번역 가능한 상태 및 속성

HTML 현행 표준은 다른 명세에서 번역 가능한 속성을 정의할 수 있다고 명시합니다. 보조 기술 사용자에게 이해될 수 있도록, 다음 상태속성의 값은 번역 가능한 속성이며, 페이지가 현지화될 때 반드시 번역되어야 합니다:

6.5 전역 상태 및 속성

일부 상태속성은 호스트 언어 요소역할이 적용되었는지 여부와 관계없이 모두 적용됩니다. 다음 전역 상태 및 속성은 역할과 기본 마크업 요소 모두에서 지원됩니다(별도로 금지되지 않는 한). 특정 역할이 전역 상태 또는 속성의 사용을 금지하는 경우, 그 상태 또는 속성은 해당 역할을 정의하는 섹션의 특성 표에 금지됨으로 표시됩니다.

6.6 WAI-ARIA 상태 및 속성 분류

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

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

6.6.1 위젯 속성

이 섹션은 GUI 시스템이나 풍부한 인터넷 애플리케이션에서 사용자 입력을 받고 사용자 동작을 처리하는 일반적인 사용자 인터페이스 요소에 특화된 속성을 포함합니다. 이러한 속성은 위젯 역할을 지원하는 데 사용됩니다.

위젯 속성은 사용자 에이전트에 의해 플랫폼 접근성 API 상태로 매핑되어 보조 기술에서 접근하거나, DOM에서 직접 접근할 수 있습니다. 사용자 에이전트는 상태가 변경될 때 DOM 속성 변경 이벤트 또는 플랫폼 접근성 API 이벤트를 통해 보조 기술에 알릴 수 있는 방법을 반드시 제공해야 합니다.

6.6.2 라이브 리전 속성

이 섹션은 풍부한 인터넷 애플리케이션에서 라이브 리전에 특화된 속성을 포함합니다. 이러한 속성은 모든 요소에 적용할 수 있습니다. 이 속성의 목적은 요소가 포커스를 갖지 않아도 콘텐츠가 변경될 수 있음을 나타내고, 보조 기술에 해당 콘텐츠 업데이트를 어떻게 처리해야 하는지 정보를 제공하는 것입니다. 일부 역할은 해당 역할에 특화된 aria-live 속성의 기본값을 지정합니다. 라이브 리전의 예로는 실시간으로 주가가 업데이트되는 티커 섹션이 있습니다.

6.6.3 드래그 앤 드롭 속성

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

6.6.4 관계 속성

이 섹션은 요소 간의 관계 또는 연관성을 문서 구조에서 쉽게 파악할 수 없을 때 나타내는 속성을 나열합니다.

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

아래는 풍부한 인터넷 애플리케이션 작성자가 사용할 WAI-ARIA 상태속성의 알파벳 목록입니다. 각 WAI-ARIA 상태 및 속성의 상세 정의는 이 간략 목록 다음에 나옵니다.

aria-activedescendant
DOM 포커스가 composite 위젯, combobox, textbox, group, 또는 application에 있을 때 현재 활성화된 요소를 식별합니다.
aria-atomic
보조 기술aria-relevant 속성에 의해 정의된 변경 알림에 따라 변경된 영역 전체 또는 일부만을 제시할지 여부를 나타냅니다.
aria-autocomplete
텍스트 입력이 combobox, searchbox, 또는 textbox에 대해 사용자의 의도된 값 예측을 하나 이상 표시하도록 트리거될 수 있는지 여부와, 예측이 이루어질 때 어떻게 표시될지 지정합니다.
aria-busy
요소가 수정 중임을 나타내며, 보조 기술이 수정이 완료될 때까지 사용자에게 노출하는 것을 권장할 수 있음을 뜻합니다.
aria-checked
체크박스, 라디오 버튼 등 위젯의 현재 "체크됨" 상태를 나타냅니다. 관련 속성: aria-pressed, aria-selected.
aria-colcount
table, grid, 또는 treegrid의 전체 열 수를 정의합니다. 관련 속성: aria-colindex.
aria-colindex
table, grid, 또는 treegrid 내에서 요소의 열 인덱스 또는 위치를 정의합니다. 관련 속성: aria-colcount, aria-colspan.
aria-colspan
table, grid, 또는 treegrid 내의 셀 또는 gridcell이 병합되는 열의 개수를 정의합니다. 관련 속성: aria-colindex, aria-rowspan.
aria-controls
현재 요소가 제어하는 요소(들)의 내용을 식별합니다. 관련 속성: aria-owns.
aria-current
컨테이너 또는 관련 요소 집합 내에서 현재 항목을 나타내는 요소를 뜻합니다.
aria-describedby
오브젝트를 설명하는 요소(들)를 식별합니다. 관련 속성: aria-labelledby.
aria-details
오브젝트에 대한 상세하고 확장된 설명을 제공하는 요소를 식별합니다. 관련 속성: aria-describedby.
aria-disabled
요소인지 가능하지만 비활성화되어 편집이 불가하거나 기타 작동 가능하지 않음을 나타냅니다. 관련 속성: aria-hidden, aria-readonly.
aria-dropeffect
[ARIA 1.1에서 폐지됨] 드래그된 오브젝트가 드롭 대상에 놓일 때 수행 가능한 기능을 나타냅니다.
aria-errormessage
오브젝트에 대한 오류 메시지를 제공하는 요소를 식별합니다. 관련 속성: aria-invalid, aria-describedby.
aria-expanded
이 요소가 소유하거나 제어하는 그룹화된 요소가 확장(펼침) 상태인지, 축소(닫힘) 상태인지를 나타냅니다.
aria-flowto
콘텐츠의 대체 읽기 순서에서 다음 요소(들)를 식별하며, 사용자가 원하는 경우 보조 기술이 문서 소스 순서 대신 읽기 순서를 재정의할 수 있도록 합니다.
aria-grabbed
[ARIA 1.1에서 폐지됨] 드래그 앤 드롭 작업에서 요소의 "grabbed" 상태를 나타냅니다.
aria-haspopup
요소가 트리거할 수 있는 메뉴, 다이얼로그 등 대화형 팝업 요소의 가용성 및 유형을 나타냅니다.
aria-hidden
요소가 접근성 API에 노출되는지 여부를 나타냅니다. 관련 속성: aria-disabled.
aria-invalid
입력된 값이 애플리케이션에서 기대하는 형식에 맞지 않음을 나타냅니다. 관련 속성: aria-errormessage.
aria-keyshortcuts
작성자가 요소를 활성화하거나 포커스를 줄 수 있도록 구현한 키보드 단축키를 나타냅니다.
aria-label
현재 요소를 라벨링하는 문자열 값을 정의합니다. 관련 속성: aria-labelledby.
aria-labelledby
현재 요소에 라벨을 제공하는 요소(들)를 식별합니다. 관련 속성: aria-describedby.
aria-level
구조 내에서 요소의 계층 수준을 정의합니다.
aria-live
요소가 업데이트될 예정임을 나타내며, 사용자 에이전트, 보조 기술, 사용자가 라이브 리전에서 기대할 수 있는 업데이트 유형을 설명합니다.
aria-modal
요소가 표시될 때 모달인지 여부를 나타냅니다.
aria-multiline
텍스트 박스가 다중 행 입력을 허용하는지, 단일 행만 허용하는지를 나타냅니다.
aria-multiselectable
사용자가 현재 선택 가능한 하위 항목에서 둘 이상의 항목을 선택할 수 있음을 나타냅니다.
aria-orientation
요소의 방향이 수평(horizontal), 수직(vertical), 또는 알 수 없음/모호함(unknown/ambiguous)인지를 나타냅니다.
aria-owns
DOM 계층을 사용할 수 없는 경우, DOM 요소 간의 시각적, 기능적, 또는 맥락적 부모/자식 관계를 정의하기 위해 요소(들)를 식별합니다. 관련 속성: aria-controls.
aria-placeholder
컨트롤에 값이 없을 때 데이터 입력에 도움이 되는 짧은 힌트(단어 또는 짧은 문구)를 정의합니다. 힌트는 샘플 값 또는 예상 형식에 대한 간단한 설명일 수 있습니다.
aria-posinset
현재 리스트아이템 또는 트리아이템 집합 내에서 요소의 번호 또는 위치를 정의합니다. 집합의 모든 요소가 DOM에 있으면 필수 아님. 관련 속성: aria-setsize.
aria-pressed
토글 버튼의 현재 "눌림" 상태를 나타냅니다. 관련 속성: aria-checked, aria-selected.
aria-readonly
요소가 편집은 불가하지만 그 외는 작동 가능함을 나타냅니다. 관련 속성: aria-disabled.
aria-relevant
라이브 리전 내 접근성 트리가 수정될 때 사용자 에이전트가 트리거할 알림 유형을 나타냅니다. 관련 속성: aria-atomic.
aria-required
폼 제출 전에 요소에 사용자 입력이 필요함을 나타냅니다.
aria-roledescription
요소역할에 대해 사람이 읽을 수 있도록 작성자가 현지화한 설명을 정의합니다.
aria-rowcount
table, grid, 또는 treegrid의 전체 행 수를 정의합니다. 관련 속성: aria-rowindex.
aria-rowindex
table, grid, 또는 treegrid 내에서 요소의 행 인덱스 또는 위치를 정의합니다. 관련 속성: aria-rowcount, aria-rowspan.
aria-rowspan
table, grid, 또는 treegrid 내의 셀 또는 gridcell이 병합되는 행의 개수를 정의합니다. 관련 속성: aria-rowindex, aria-colspan.
aria-selected
다양한 위젯의 현재 "선택됨" 상태를 나타냅니다. 관련 속성: aria-checked, aria-pressed.
aria-setsize
현재 리스트아이템 또는 트리아이템 집합의 항목 수를 정의합니다. 집합의 모든 요소가 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의 값이 소유된 요소를 참조한다. 소유된 요소란 DOM 포커스가 있는 요소의 하위이거나 aria-owns 속성으로 논리적 하위임을 나타내는 요소입니다.
  2. DOM 포커스가 combobox, textbox 또는 searchbox이며, aria-controls 속성으로 aria-activedescendant를 지원하는 요소를 참조하고, aria-activedescendant의 값이 해당 제어되는 요소의 소유된 요소를 참조하는 경우입니다. 예를 들어, combobox에서 포커스는 combobox에 남아 있지만, combobox 요소의 aria-activedescendant 값이 combobox가 제어하는 팝업 listbox의 하위 요소를 참조하는 경우입니다.

작성자는 현재 활성화된 하위 요소가 포커스될 때 반드시 화면에 보이거나(또는 스크롤하여 보여지도록) 권장해야 합니다.

특성:
특성
관련 개념:
사용되는 역할:
상속되는 역할:
값: ID 참조

aria-atomic property

보조 기술aria-relevant 속성에 의해 정의된 변경 알림에 따라 변경된 영역 전체 또는 일부만을 제시할지 여부를 나타냅니다.

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

라이브 리전의 콘텐츠가 변경되면, 사용자 에이전트는 권장 변경된 요소와 그 조상들을 따라 올라가며 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가 동적으로 사용자의 텍스트 입력을 보조할 때 사용하는 상호작용 모델의 유형을 설명합니다. 인라인 모델(aria-autocomplete="inline")은 텍스트 입력 내에 예측값을 표시하고, 리스트 모델(aria-autocomplete="list")은 텍스트 입력 옆에 팝업 형태의 값 목록을 표시합니다. 두 모델을 동시에 제공하는 것도 가능합니다(aria-autocomplete="both").

aria-autocomplete 속성은 입력 요소의 예측 동작만을 설명하는 데 한정됩니다. 작성자는 입력 요소가 사용자 입력과 무관한 하나 이상의 제안을 제공할 경우 aria-autocomplete 값을 지정하지 않거나 none으로 설정하는 것이 권장됩니다. 예를 들어, aria-autocompletenone인 콤보박스는 최근 5개 검색어를 필터링 없이 목록으로 보여주는 검색 필드입니다. aria-autocomplete를 지원하는 역할을 가진 요소의 기본값은 none입니다.

인라인 제안이 있을 때 입력 필드 내에서 입력 커서 뒤에 예측 텍스트가 동적으로 나타나며, 사용자가 필드에서 포커스를 벗어나면 제안 값이 입력값으로 채택됩니다. aria-autocompleteinline 또는 both로 설정된 경우, 작성자는 자동 제안 부분의 텍스트가 선택된 텍스트로 제공되도록 권장해야 합니다. 이렇게 하면 보조 기술은 사용자의 실제 입력과 자동 제안을 구별할 수 있고, 제안이 원하지 않는 값일 경우 사용자가 쉽게 삭제하거나 다른 값을 입력할 수 있습니다.

aria-autocompletelist 또는 both로 설정된 경우, 작성자는 반드시 아래 두 조건을 모두 충족해야 합니다:

  1. aria-controls에 제안 값을 담은 요소를 참조하는 값이 지정되어 있어야 합니다.
  2. aria-haspopup에 제안 값 컬렉션을 담은 요소의 역할과 일치하는 값이 지정되어 있어야 합니다.

리스트 모델의 일부 구현에서는 사용자가 아래쪽 화살표로 포커스를 옮기거나 제안을 클릭하여 선택해야 합니다. 이러한 구현에서는 작성자가 제안 컬렉션 컨테이너가 aria-activedescendant를 지원하면 해당 속성을 사용하거나, 아니면 DOM 포커스를 제안에 직접 옮길 수 있습니다. 다른 구현에서는 제안 중 하나를 자동으로 선택해 필드 포커스를 벗어나면 해당 값이 채택됩니다(예: Tab 또는 다른 필드 클릭). aria-autocompletelist 또는 both이고, 입력 중 자동으로 제안이 선택된다면 다음 조건을 모두 만족해야 합니다:

  1. 제안 컬렉션이 aria-activedescendant를 지원하는 역할을 가진 요소에 표시되어야 합니다.
  2. 입력 필드에 설정된 aria-activedescendant 값이 선택된 제안 요소를 동적으로 참조하도록 조정되어야 하며, aria-activedescendant 정의에 따라야 합니다.
  3. 제안이 표시되는 동안 DOM 포커스는 텍스트 입력에 계속 남아 있어야 합니다.

aria-autocomplete 속성은 제안의 존재를 나타내기 위한 것이 아니므로, 작성자는 절대 제안이 있을 때 동적으로 값을 변경해서는 안 됩니다. list 또는 both 값일 때는, 제안 컬렉션 요소가 표시되는지 aria-expanded 상태를 활용해 권장합니다.

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

aria-busy state

요소가 수정 중임을 나타내며, 보조 기술이 수정이 완료될 때까지 사용자에게 노출하는 것을 권장할 수 있음을 뜻합니다.

aria-busy의 기본값은 모든 요소에 대해 false입니다. 요소의 aria-busytrue로 설정되면, 보조 기술은 해당 요소에 속한 콘텐츠의 변경 사항을 무시하고 aria-busyfalse로 돌아올 때까지 변경 기간 동안 이루어진 모든 변경을 하나의 원자적 업데이트로 처리할 수 있습니다.

이미 일부 또는 전체가 렌더링된 컨테이너 요소 내에서 여러 추가, 수정, 삭제가 필요할 경우, 작성자는 첫 변경 전에 컨테이너 요소에 aria-busytrue로 설정하고, 마지막 변경이 완료되면 false로 설정하는 것이 허용됩니다. 예를 들어, 라이브 리전에 대한 여러 변경이 하나의 음성 단위로 읽혀야 하는 경우, 작성자는 변경 중에는 aria-busytrue로 설정하고, 변경이 완료되어 읽을 준비가 되면 false로 설정할 수 있습니다.

role이 feed인 요소가 busy로 표시된 경우, 보조 기술은 busy 기간 동안 해당 feed 내부에서 발생하는 변경 사항의 렌더링을 지연할 수 있습니다. 단, 사용자가 읽고 있는 article 내부에서 사용자가 직접 유발한 변경은 예외입니다.

렌더링된 widget에 대한 변경 중 필수 소유 요소가 스크립트 실행 중 누락되는 상태가 발생한다면, 작성자는 widget의 업데이트 과정에서 반드시 aria-busytrue로 설정해야 합니다. 예를 들어, 렌더링된 트리 그리드에서 여러 불연속 가지에 동시 업데이트가 필요한 경우, 전체 트리 요소를 한 번에 교체하는 대신, 각 가지를 수정하는 동안 트리를 busy로 표시할 수 있습니다.

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

aria-checked state

체크박스, 라디오 버튼 등 위젯의 현재 "체크됨" 상태를 나타냅니다. 관련 속성: aria-pressed, aria-selected.

aria-checked 속성요소가 체크됨(true), 체크되지 않음(false), 또는 체크된 값과 체크되지 않은 값이 혼합된 그룹(mixed) 중 어느 상태인지를 나타냅니다. 대부분의 입력은 truefalse만 지원하지만, mixed 값은 checkboxmenuitemcheckbox와 같은 삼중 상태 입력에서 지원됩니다.

mixed 값은 radio, menuitemradio, switch 또는 이들을 상속하는 요소에서는 지원되지 않으며, 사용자 에이전트는 해당 역할에 대해 mixed 값을 false와 동일하게 처리해야 합니다.

삼중 상태 입력의 mixed 값 사용 예시는 WAI-ARIA 작성 지침에서 확인할 수 있습니다.

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

aria-colcount property

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

모든 열이 DOM에 존재하는 경우, 속성을 따로 설정할 필요가 없습니다. 사용자 에이전트가 자동으로 전체 열 수를 계산할 수 있기 때문입니다. 그러나 특정 시점에 일부 열만 DOM에 존재한다면, 전체 테이블의 열 수를 명시적으로 나타내기 위해 이 속성이 필요합니다.

작성자는 aria-colcount 값을 전체 테이블의 열 수와 동일한 정수로 반드시 설정해야 합니다. 전체 열 수를 알 수 없는 경우, 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-colcount, aria-colspan.

모든 열이 DOM에 존재하는 경우, 속성을 따로 설정할 필요가 없습니다. 사용자 에이전트가 각 셀이나 gridcell의 열 인덱스를 자동으로 계산할 수 있기 때문입니다. 그러나 특정 시점에 일부 열만 DOM에 존재한다면, 전체 테이블 기준 각 셀이나 gridcell의 열을 명확히 나타내기 위해 이 속성이 필요합니다.

작성자는 aria-colindex을 1 이상의 정수로, 같은 행 내의 이전 요소의 aria-colindex 값보다 크고 전체 테이블 열 수 이하로 반드시 설정해야 합니다. 여러 열에 걸치는 셀이나 gridcell에 대해서는 반드시 span의 시작값으로 설정해야 합니다.

DOM에 존재하는 열 집합이 연속적이고, 해당 집합 내에서 여러 행 또는 열에 걸치는 셀이 없다면, 작성자는 허용 각 행에 aria-colindex를 두고 집합의 첫 열 인덱스를 값으로 설정할 수 있습니다. 그렇지 않은 경우, 작성자는 권장 각 행의 모든 자식 또는 소유된 요소에 aria-colindex를 지정해야 합니다.

아래 예시는 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-colspan property

table, grid, treegrid 내에서 셀 또는 gridcell이 병합하는 열의 개수를 정의합니다. 관련 속성: aria-colindex, aria-rowspan.

속성은 네이티브 테이블에 포함되지 않은 셀과 gridcell을 위한 것입니다. 네이티브 테이블에서 셀이나 gridcell의 열 병합을 정의할 때는 권장 호스트 언어의 속성을 사용하고 aria-colspan를 사용하지 않아야 합니다. 호스트 언어에 동등한 속성이 제공되는 요소에 aria-colspan를 사용한다면, 사용자 에이전트aria-colspan 값을 무시하고 호스트 언어 속성의 값을 보조 기술에 노출해야 합니다.

작성자는 aria-colspan 을 1 이상의 정수로, 같은 행에서 다음 셀 또는 gridcell과 겹치지 않도록 반드시 설정해야 합니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: 정수(integer)

aria-controls property

현재 요소가 제어하는 요소(들)의 내용을 식별합니다. 관련 속성: aria-owns.

예시:

  • 목차 트리뷰가 인접한 문서 영역의 내용을 제어할 수 있습니다.
  • 체크박스 그룹이 테이블 또는 그래프에서 어떤 상품 가격이 실시간 추적될지 제어할 수 있습니다.
  • 탭이 연결된 탭 패널의 표시를 제어합니다.
특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: ID 참조 리스트

aria-current state

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

aria-current 속성은 토큰 타입입니다. 허용 값 목록에 포함되지 않은 값은 권장 보조 기술에서 true로 처리되어야 합니다. 속성이 없거나 값이 빈 문자열 또는 undefined라면 기본값 false가 적용되며, aria-current 상태는 사용자 에이전트나 보조 기술에 노출되면 안 됩니다.

aria-current 속성은 관련 요소 집합 내에서 현재 항목을 시각적으로 스타일링하여 표시할 때 사용합니다. 예시:

  • 페이지 집합 내에서 현재 표시된 페이지를 나타내는 링크에 page 토큰을 사용합니다.
  • 과정 단계 표시기 내에서 현재 단계를 나타내는 링크에 step 토큰을 사용합니다.
  • 플로우 차트의 현재 위치를 시각적으로 강조할 때 location 토큰을 사용합니다.
  • 캘린더 내에서 현재 날짜를 나타낼 때 date 토큰을 사용합니다.
  • 시간표 내에서 현재 시간을 나타낼 때 time 토큰을 사용합니다.

작성자는 권장 요소 집합 내에서 하나의 요소만 aria-current로 표시해야 합니다.

작성자는 권장하지 않음 위젯에서 aria-selected와 의미가 동일한 경우 aria-current 속성을 대체로 사용해서는 안 됩니다. 예를 들어, tablist에서는 tabaria-selected를 사용해 현재 표시되는 tabpanel을 나타냅니다.

참고

aria-selected를 지원하는 위젯의 일부 사용 사례에서는 current와 selected가 다른 의미를 가지며, 같은 요소 집합 내에서 모두 사용할 수 있습니다. 예를 들어, 내비게이션 tree에서 aria-current="page"로 현재 표시 중인 페이지를, aria-selected="true"로 사용자가 treeitem을 활성화할 때 표시될 페이지를 나타낼 수 있습니다. 또한 같은 트리에서 "삭제" 및 "이동" 등 옵션이 포함된 컨텍스트 메뉴를 통해 하나 이상의 선택된 페이지(treeitem)에 대해 작업을 지원할 수도 있습니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: 토큰(token)
값:
설명
page 페이지 집합 내에서 현재 페이지를 나타냅니다.
step 과정 내에서 현재 단계를 나타냅니다.
location 환경 또는 컨텍스트 내에서 현재 위치를 나타냅니다.
date 날짜 집합 내에서 현재 날짜를 나타냅니다.
time 시간 집합 내에서 현재 시간을 나타냅니다.
true 요소 집합 내에서 현재 항목을 나타냅니다.
false (기본값) 요소 집합 내에서 현재 항목이 아님을 나타냅니다.

aria-describedby property

오브젝트를 설명하는 요소(들)를 식별합니다. 관련 속성: aria-labelledby.

aria-labelledby 속성은 aria-describedby와 유사하게 다른 요소를 참조하여 텍스트 대안을 계산하지만, label은 간결해야 하며 description은 더 상세한 정보를 제공합니다.

aria-describedby가 참조하는 요소 또는 요소 집합이 전체 설명이 됩니다. 여러 요소에 대한 ID 참조를 포함하거나, 요소 집합(예: 여러 문단)을 ID로 참조한 요소로 감싸서 사용할 수 있습니다.

특성:
특성
관련 개념:
사용되는 역할: 기본 마크업의 모든 요소
값: ID 참조 리스트

aria-details property

요소객체에 대해 상세하고 확장된 설명을 제공함을 식별합니다. 관련 항목: aria-describedby.

aria-details 특성은 aria-describedby가 보통 제공하는 정보보다 더 상세한 정보를 제공하는 단일 요소를 참조합니다. 이 특성은 보조 기술이 확장 설명이 있음을 사용자에게 알리고, 해당 설명으로 이동할 수 있게 해줍니다. 작성자는 권장되는 방법으로 aria-details로 참조된 요소가 모든 사용자에게 보이도록 해야 합니다.

aria-describedby로 참조된 요소와 달리, aria-details로 참조된 요소는 접근 가능한 이름 계산 또는 접근 가능한 설명 계산에 사용되지 않습니다. 따라서 aria-details로 참조된 요소의 내용은 보조 기술 사용자에게 표시될 때 문자열로 평탄화되지 않습니다. 정보가 문자열로 변환되면 정보 손실이 발생하거나 확장 설명을 이해하기 어렵게 되는 경우 aria-details가 특히 유용합니다.

일부 사용자 에이전트에서는 접근성 API에서 설명 정보에 대한 여러 참조 관계가 지원되지 않을 수 있습니다. 이러한 경우, 한 요소에 aria-describedbyaria-details가 모두 제공되면 aria-details가 우선합니다.

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>
  <a href="http://foo.com/pt.html" id="det">피타고라스 정리 적용 예시</a>를 참고하세요.
</p>
특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: ID 참조

aria-disabled state

요소인지 가능하지만 비활성화되어 있어 편집하거나 작동시킬 수 없음을 나타냅니다. 관련 항목: aria-hiddenaria-readonly.

예를 들어, 라디오 그룹 내 관련 없는 옵션은 비활성화될 수 있습니다. 비활성화된 요소는 탭 순서에서 포커스를 받지 않을 수 있습니다. 일부 비활성화된 요소의 경우, 애플리케이션에서 하위 요소로의 탐색을 지원하지 않을 수 있습니다. aria-disabled 속성 설정과 함께, 작성자는 권장되는 방법으로 해당 항목이 비활성화된 것임을 외관(회색 처리 등)으로 표시해야 합니다.

비활성화 상태는 현재 요소와 aria-disabled 속성이 적용된 요소의 모든 포커스 가능한 하위 요소에 적용됩니다.

참고

aria-disabled와 적절한 스크립팅을 통해 link 역할의 요소를 성공적으로 비활성화할 수 있지만, 호스트 언어의 동등 요소를 완전히 비활성화하는 것은 문제를 일으킬 수 있습니다. 작성자는 aria-disabled를 호스트 언어에서 단독으로 비활성화할 수 없는 요소에는 사용하지 않는 것이 좋습니다.

참고: columnheader, rowheader, row에서의 사용

aria-disabled는 현재 columnheader, rowheader, row에서 지원되지만, 향후 버전에서는 grid 또는 treegrid 맥락 이외에는 이 세 가지 역할의 요소에 사용이 금지될 예정입니다.

참고

이 상태는 ARIA 1.2에서 전역 상태로서 폐지되고, 앞으로는 명시적으로 지원되는 역할에서만 사용될 수 있습니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 요소가 활성화되어 있습니다.
true 요소와 모든 포커스 가능한 하위 요소가 비활성화되며, 사용자가 값을 변경할 수 없습니다.

aria-dropeffect property

[ARIA 1.1에서 폐지됨] 드래그된 객체가 드롭 대상에 놓일 때 수행할 수 있는 기능을 나타냅니다.

참고

aria-dropeffect 속성은 향후 WAI-ARIA 버전에서 새로운 기능으로 대체될 예정입니다. 따라서 작성자는 aria-dropeffect폐지됨으로 간주해야 합니다.

속성은 보조 기술이 사용자에게 드래그 옵션(팝업 메뉴 제공 여부 포함)을 전달할 수 있게 합니다. 일반적으로 드롭 효과 기능은 객체가 드래그 작업을 위해 잡혀진 후에만 제공되며, 사용 가능한 드롭 효과는 드래그되는 객체에 따라 달라집니다.

하나의 요소에서 둘 이상의 드롭 효과가 지원될 수 있습니다. 따라서 이 속성의 값은 지원되는 효과를 나타내는 공백으로 구분된 토큰 집합이거나, 지원되는 작업이 없으면 none입니다. aria-dropeffect 속성 설정과 함께, 작성자는 잠재적인 드롭 대상을 시각적으로 표시하는 것이 권장됩니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: 토큰 목록
값:
설명
copy 원본 객체의 복사본이 대상에 드롭됩니다.
execute 드롭 대상에서 지원하는 함수가 드래그 원본을 입력으로 실행됩니다.
link 드롭 대상 객체에 드래그된 객체의 참조 또는 바로가기가 생성됩니다.
move 원본 객체가 현재 위치에서 제거되어 대상에 드롭됩니다.
none (기본값) 수행 가능한 작업이 없으며, 이 객체에 드롭을 시도하면 드래그 작업이 취소됩니다. 다른 토큰 값과 함께 사용하면 무시됩니다. 예: 'none copy'는 'copy'와 동일합니다.
popup 팝업 메뉴나 대화상자가 나타나 사용자가 드래그 작업(copy, move, link, execute 등)과 기타 드래그 기능(예: 취소)을 선택할 수 있습니다.

aria-errormessage property

요소객체에 대한 오류 메시지를 제공함을 식별합니다. 관련 항목: aria-invalid, aria-describedby.

aria-errormessage 속성은 오류 메시지 텍스트를 포함하는 다른 요소를 참조합니다. 작성자는 반드시 aria-invalidaria-errormessage를 함께 사용해야 합니다.

객체의 값이 유효하지 않을 때, aria-invalidtrue로 설정되며, 이는 aria-errormessage로 참조된 요소의 메시지가 관련 있음을 나타냅니다.

객체가 유효한 상태일 때는 aria-invalidfalse로 설정되거나 aria-invalid 속성이 없습니다. 작성자는 선택적으로 현재 유효한 객체에 aria-errormessage를 사용할 수 있지만, 이 경우 aria-errormessage가 참조하는 요소는 숨김이어야 하며, 해당 메시지는 관련이 없습니다.

aria-errormessage가 관련 있는 경우, 작성자는 반드시 사용자가 오류 메시지에 접근하고 확인할 수 있도록 내용을 숨기지 않아야 합니다. 반대로 aria-errormessage가 관련 없을 때는 반드시 내용을 숨김으로 하거나 aria-errormessage 속성 또는 값을 제거해야 합니다.

사용자 에이전트는 반드시 aria-invalid 값이 false인 객체에 대해 aria-errormessage를 노출하지 않아야 합니다.

작성자는 선택적으로 새로 렌더링된 오류 메시지에 라이브 리전을 적용하여 aria-live 속성을 사용하거나 라이브 리전 역할(예: alert)을 사용할 수 있습니다. 라이브 리전은 사용자가 잘못된 값을 입력한 후 오류 메시지를 표시할 때 적절합니다.

일반적인 메시지는 무엇이 잘못되었는지와 요구사항을 설명합니다. 예를 들어, 오류 메시지는 잘못된 시간: 시간은 오전 9시에서 오후 5시 사이여야 합니다.가 될 수 있습니다. 아래 예시는 초기 유효 상태와 이후의 유효하지 않은 상태에 대한 마크업을 보여줍니다. aria-invalidaria-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에서 전역 상태로 폐지되고, 앞으로는 명시적으로 지원되는 역할에서만 사용할 수 있습니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: ID 참조

aria-expanded state

이 요소가 소유하거나 제어하는 그룹화 요소가 펼쳐져 있는지 접혀져 있는지 나타냅니다.

aria-expanded 속성은 다른 요소의 콘텐츠 표시 여부를 토글하는 포커스 가능 인터랙티브 요소에 적용됩니다. 예를 들어, 부모 treeitem에 적용되어 자식 트리 브랜치가 표시되는지 나타낼 수 있습니다. 마찬가지로 페이지 콘텐츠의 일부 섹션 표시 여부를 제어하는 button에도 적용될 수 있습니다.

펼침/접힘이 가능한 그룹 컨테이너가 aria-expanded 속성을 가진 요소에 소유되어 있지 않은 경우, 작성자는 권장되는 방법으로 해당 컨테이너를 aria-controls 속성으로 참조하여 제어 관계를 명확히 해야 합니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: true/false/undefined
값:
설명
false 이 요소가 소유하거나 제어하는 그룹화 요소가 접혀 있습니다.
true 이 요소가 소유하거나 제어하는 그룹화 요소가 펼쳐져 있습니다.
undefined (기본값) 이 요소는 펼침 가능한 그룹화 요소를 소유하거나 제어하지 않습니다.

aria-flowto property

콘텐츠의 대체 읽기 순서에서 다음 요소(들)를 식별하며, 사용자의 선택에 따라 보조 기술이 문서 소스 순서의 기본 읽기 순서를 무시할 수 있게 해줍니다.

aria-flowto에 단일 ID 참조가 있을 경우, 보조 기술이 사용자의 요청에 따라 일반 문서 읽기 순서를 생략하고 대상 객체로 이동할 수 있습니다. 하지만 aria-flowto에 여러 ID 참조가 제공된 경우, 보조 기술은 권장되는 방법으로 참조된 요소들을 경로 선택지로 제시해야 합니다.

하나 이상의 ID 참조가 있는 경우, 사용자 에이전트 또는 보조 기술은 권장되는 방법으로 사용자가 대상 요소들 중 원하는 곳으로 이동할 수 있는 옵션을 제공해야 합니다. 경로 이름은 aria-flowto 속성의 대상 요소의 이름에 의해 결정될 수 있습니다. 접근성 API는 명명된 경로 관계를 제공할 수 있습니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: ID 참조 목록

aria-grabbed state

[ARIA 1.1에서 폐지됨] 드래그 앤 드롭 작업에서 요소의 "잡힘(grabbed)" 상태를 나타냅니다.

참고

aria-grabbed 상태는 향후 WAI-ARIA 버전에서 새로운 기능으로 대체될 예정입니다. 따라서 작성자는 aria-grabbed폐지됨으로 간주해야 합니다.

aria-grabbedtrue로 설정하면 요소가 드래그 대상으로 선택되었음을 나타냅니다. aria-grabbedfalse로 설정하면 해당 요소는 드래그 앤 드롭 작업에서 잡을 수 있지만 현재 잡히진 않았음을 의미합니다. aria-grabbed가 지정되지 않았거나 undefined(기본값)로 설정된 경우, 해당 요소는 잡을 수 없습니다.

aria-grabbedtrue로 설정된 경우, 작성자는 권장되는 방법으로 모든 잠재적 드롭 대상의 aria-dropeffect 속성을 업데이트해야 합니다. 요소가 잡히지 않은 경우(false 또는 undefined로 설정되었거나 속성이 제거된 경우) 작성자는 권장되는 방법으로 관련 드롭 대상의 aria-dropeffect 속성을 none으로 되돌려야 합니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: true/false/undefined
값:
설명
false 요소가 드래그를 지원함을 나타냅니다.
true 요소가 드래그를 위해 "잡힘" 상태임을 나타냅니다.
undefined (기본값) 요소가 드래그를 지원하지 않음을 나타냅니다.

aria-haspopup property

메뉴나 대화상자와 같은 인터랙티브 팝업 요소의 존재와 유형을 나타내며, 요소에 의해 트리거될 수 있습니다.

팝업 요소는 일반적으로 다른 콘텐츠 위에 표시되는 블록 형태로 나타납니다. 작성자는 반드시 팝업 콘텐츠를 담는 요소의 역할이 menu, listbox, tree, grid, dialog 중 하나여야 하며, aria-haspopup의 값이 팝업 컨테이너의 역할과 일치해야 합니다.

팝업 요소가 키보드 접근성을 가지려면 작성자는 권장되는 방법으로 팝업을 트리거하는 요소가 포커스 가능해야 하며, 키보드로 팝업을 여는 방법이 있어야 하며, 팝업 요소가 모든 하위 요소의 포커스를 포커스 관리에서 설명한 대로 관리해야 합니다.

aria-haspopup 속성은 토큰 타입입니다. 사용자 에이전트반드시 허용된 값 목록에 포함되지 않은 값(빈 문자열 포함)을 false 값을 제공한 것처럼 처리해야 합니다. ARIA 1.0 콘텐츠와의 호환성을 위해, 사용자 에이전트는 반드시 aria-haspopup 값이 true인 경우 menu와 동일하게 처리해야 합니다.

보조 기술노출하지 않아야 합니다 aria-haspopup의 값이 false인 경우에는 이 속성을 노출하지 않아야 합니다.

참고

tooltip은 여기서 팝업으로 간주되지 않습니다.

참고

aria-haspopup는 해당 요소에 팝업을 트리거할 비주얼 인디케이터가 있을 때 가장 적합합니다. 예를 들어, 아래쪽 삼각형, 쉐브론, 또는 점 3개(ellipsis) 등으로 스타일링된 컨트롤은 팝업이 표시될 것이란 비주얼 인디케이터로 표준화되어 있습니다. 만약 기능적 차이가 시각적 스타일로 구분되어 표시된다면, 해당 기능적 차이는 보조 기술 사용자에게도 전달되어야 합니다. 요소에 팝업 트리거에 대한 시각적 표시가 없다면 aria-haspopup 사용이 필요한지 신중하게 고려해야 하며 불필요하게 사용하지 않는 것이 좋습니다.

참고

이 속성은 ARIA 1.2에서 전역 속성으로 폐지되고, 앞으로는 명시적으로 지원되는 역할에서만 사용될 수 있습니다.

특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: 토큰
값:
설명
false (기본값) 요소에 팝업이 없음을 나타냅니다.
true 팝업이 menu임을 나타냅니다.
menu 팝업이 menu임을 나타냅니다.
listbox 팝업이 listbox임을 나타냅니다.
tree 팝업이 tree임을 나타냅니다.
grid 팝업이 grid임을 나타냅니다.
dialog 팝업이 dialog임을 나타냅니다.

aria-hidden state

요소가 접근성 API에 노출되는지 여부를 나타냅니다. 관련 항목: aria-disabled.

사용자 에이전트는 요소가 렌더링되는지에 따라 숨김 상태를 결정하며, 렌더링은 보통 CSS로 제어됩니다. 예를 들어 display 속성이 none이면 요소가 렌더링되지 않습니다. 요소나 그 조상 중 하나라도 렌더링되지 않거나 aria-hidden 속성이 true로 설정된 경우 해당 요소는 숨김으로 간주됩니다.

작성자는 신중하게 aria-hidden을 사용하여 시각적으로 렌더된 콘텐츠를 보조 기술에서 오직 숨길 수 있습니다. 단, 콘텐츠를 숨기는 행위가 보조 기술 사용자 경험을 개선하기 위해 중복 또는 불필요한 콘텐츠를 제거하는 목적이어야 합니다. 화면 판독기에서 가시적 콘텐츠를 숨기기 위해 aria-hidden을 사용하는 경우, 작성자는 반드시 동일하거나 동등한 의미와 기능이 보조 기술에 노출되도록 해야 합니다.

참고

작성자는 시각적으로 렌더된 콘텐츠를 보조 기술에서 숨길 때 매우 신중해야 하며, 다양한 장애 유형을 고려해야 합니다. 예를 들어, 시력이 있는 운동 장애인은 음성 제어 보조 기술을 사용해 시각적 인터페이스에 접근할 수 있습니다. 작성자가 "결제하기로 이동"이라는 시각적 링크 텍스트를 숨기고 접근성 API에 유사하지만 동일하지 않은 링크 텍스트 "지금 결제하기"를 노출하면, 사용자는 그들이 인식하는 인터페이스에 음성 제어로 접근하지 못할 수 있습니다. 이와 유사한 문제는 화면 판독기 사용자에게도 발생할 수 있습니다. 예를 들어, 시력이 있는 전화 상담원이 시각 장애인 화면 판독기 사용자에게 "결제하기로 이동" 링크를 클릭하라고 하면, 해당 사용자는 "결제하기로 이동" 항목 검색으로 찾을 수 없을 수 있습니다.

참고

작성 시점 기준으로, aria-hidden="false" 는 브라우저에서 일관되게 동작하지 않습니다. 향후 구현이 개선된다면, 이 접근 방식에 의존하기 전에 신중히 테스트해야 합니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: true/false/undefined
값:
설명
false 요소가 접근성 API에 렌더링된 것처럼 노출됩니다.
true 요소가 접근성 API에서 숨겨집니다.
undefined (기본값) 요소의 숨김 상태는 사용자 에이전트가 렌더링 여부에 따라 결정합니다.

aria-invalid state

입력된 값이 애플리케이션에서 예상하는 형식에 부합하지 않음을 나타냅니다. 관련 항목: aria-errormessage.

값이 유효하지 않거나 범위를 벗어난 것으로 계산되면, 애플리케이션 작성자는 권장되는 방법으로 이 속성true로 설정해야 합니다. 사용자 에이전트권장되는 방법으로 오류를 사용자에게 알려야 합니다. 애플리케이션 작성자는 권장되는 방법으로 수정 제안이 있을 경우 이를 제공해야 합니다.

사용자가 aria-requiredtrue인 필드와 관련된 데이터를 제출하려고 할 때, 작성자는 선택적으로 aria-invalid 속성을 사용해 오류가 있음을 알릴 수 있습니다. 그러나 사용자가 아직 폼 제출을 시도하지 않았다면, 작성자는 권장하지 않습니다 aria-invalid 속성을 필수 위젯에 설정하는 것을 단순히 사용자가 아직 데이터를 입력하지 않았다는 이유로 하지 않아야 합니다.

향후 확장성을 위해 aria-invalid 속성은 토큰 타입입니다. 허용되는 목록에 없는 값은 사용자 에이전트가 true 값이 제공된 것처럼 반드시 처리해야 합니다. 속성이 없거나 값이 false이거나 빈 문자열일 경우, 기본값 false가 적용됩니다.

참고

이 상태는 ARIA 1.2에서 전역 상태로 폐지되며, 앞으로는 명시적으로 지원되는 역할에서만 사용할 수 있습니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: 토큰
값:
설명
grammar 문법 오류가 감지되었습니다.
false (기본값) 값에 오류가 감지되지 않았습니다.
spelling 맞춤법 오류가 감지되었습니다.
true 사용자가 입력한 값이 검증에 실패했습니다.

aria-keyshortcuts property

작성자가 요소를 활성화하거나 포커스를 주기 위해 구현한 키보드 단축키를 나타냅니다.

aria-keyshortcuts 속성 값은 명령 또는 텍스트박스 위젯을 활성화할 때 누를 수 있는 키보드 단축키의 공백으로 구분된 목록입니다. 단축키에 정의된 키들은 실제로 눌리는 물리적 키를 나타내며, 생성되는 실제 문자를 나타내는 것이 아닙니다. 각 키보드 단축키는 하나 이상의 토큰(플러스 기호 "+"로 구분)으로 구성되며, 동시에 눌려야 하는 0개 이상의 수정 키와 정확히 하나의 비수정 키로 이루어집니다.

작성자는 반드시 UI Events KeyboardEvent key Values 명세에 따라 수정 키를 정확히 지정해야 합니다. 예시: "Alt", "Control", "Shift", "Meta", "AltGraph". Meta는 애플 컴퓨터의 Command 키, Alt는 Option 키에 해당합니다.

비수정 키의 유효한 이름은 "A", "B", "1", "2", "$", 플러스 기호는 "Plus", 스페이스바는 "Space", 또는 UI Events KeyboardEvent key Values 명세에 정의된 다른 비수정 키 이름입니다. 예: "Enter", "Tab", "ArrowRight", "PageDown", "Escape", "F1". "Space"는 스페이스바를 의미하며, 이는 UI Events KeyboardEvent key Values 명세의 예외입니다. 스페이스 키는 ' '로 인코딩되어 공백 문자로 처리되기 때문입니다.

작성자는 반드시 키보드 단축키에 수정 키가 포함될 경우 수정 키가 먼저 오도록 해야 합니다. 반드시 필요한 비수정 키는 마지막에 오도록 해야 합니다. 수정 키의 순서는 중요하지 않으므로 "Alt+Shift+T"와 "Shift+Alt+T"는 동일하지만, "T+Shift+Alt"는 유효하지 않습니다. 모든 수정 키가 먼저 오지 않은 경우나 "Alt"만 있는 경우는 올바르지 않습니다.

알파벳 키를 지정할 때 대소문자 변형은 동일하게 취급됩니다: "a"와 "A"는 동일합니다.

키보드 단축키를 구현할 때, 지원하려는 키보드를 고려하여 예기치 않은 결과를 방지해야 합니다. 키보드 디자인은 사용 기기와 지원 언어에 따라 매우 다양합니다. 예를 들어, 많은 수정 키는 일반 구두점, 숫자 문자, 쌍방향 키보드의 언어 전환, 기타 여러 기능을 만들기 위해 다른 키와 함께 사용됩니다.

많은 키보드에서, 작성자는 ASCII 문자 외의 키 사용을 피함으로써 충돌을 방지할 수 있습니다. 숫자 문자나 일반 구두점은 보통 수정 키가 필요하기 때문입니다. 여기서 입력한 키보드 단축키는 생성되는 키와 동일하지 않을 수 있습니다. 예를 들어, 프랑스어 키보드에서는 숫자 문자를 입력하려면 Control 키를 눌러야 하므로 "Control+2"와 같은 키보드 단축키는 모호할 수 있습니다.

문자가 수정 키로 결정되는 경우, 작성자는 반드시 해당 문자를 생성하는 실제 키를 지정해야 하며, 결과 문자가 아니라 실제 눌리는 키를 지정해야 합니다. 이 규칙은 보조 기술이 정확히 어떤 키를 눌러야 하는지 전달할 수 있도록 도와줍니다. 예를 들어, 미국 영어 키보드에서는 퍼센트 기호 "%"를 Shift+5로 입력할 수 있습니다. 올바른 단축키 지정 방법은 "Shift+5"입니다. "%" 또는 "Shift+%"는 잘못입니다. 그러나 일부 국제 키보드에서는 퍼센트 기호가 수정되지 않은 키일 수 있으므로, 해당 키보드에서는 "%" 및 "Shift+%"가 올바를 수 있습니다.

호스트 언어에서 지정이 불가능하거나 문자열이 종료될 수 있는 키를 지정해야 하는 경우, 작성자는 반드시 호스트 언어의 문자열 이스케이프 시퀀스를 사용해야 합니다. 예: 큰따옴표는 HTML에서 "Shift+&#39;"로 인코딩할 수 있습니다.

유효한 키보드 단축키 예시:

  • "A"
  • "Shift+Space"
  • "Control+Alt+."
  • "Control+Shift+&#39;"
  • "Alt+Shift+P Control+F"
  • "Meta+C Meta+Shift+C"

사용자 에이전트는 반드시 하지 않아야 합니다 aria-keyshortcuts 속성에 반응하여 키보드 동작을 변경하는 것을. 작성자는 반드시 스크립트로 키보드 이벤트를 처리하여 aria-keyshortcuts를 처리해야 합니다. aria-keyshortcuts 속성은 이러한 단축키의 존재를 노출하여 보조 기술이 사용자에게 정보를 전달할 수 있도록 합니다.

작성자는 권장되는 방법으로 모든 사용자가 키보드 단축키를 발견할 수 있도록 툴팁 등의 방법을 제공해야 합니다. 작성자는 반드시 aria-keyshortcuts가 비활성화된 요소에는 사용할 수 없도록 해야 합니다.

작성자는 권장되는 방법으로 운영체제, 사용자 에이전트, 보조 기술의 기능을 방해하는 단축키 구현을 피해야 합니다. 이를 위해 어떤 키를 할당할지, 사용자가 사용할 수 있는 컨텍스트와 조건을 신중히 고려해야 합니다. 자세한 내용은 WAI-ARIA 작성 지침의 키보드 단축키 섹션을 참고하세요.

특성:
관련 개념
관련 개념:
사용되는 역할: 기본 마크업의 모든 요소
값: 문자열

aria-label property

현재 요소를 라벨링하는 문자열 값을 정의합니다. 관련 항목: aria-labelledby.

aria-label의 목적은 aria-labelledby와 동일합니다. 객체의 인식 가능한 이름을 사용자에게 제공합니다. 라벨의 가장 일반적인 접근성 API 매핑은 접근 가능한 이름 속성입니다.

라벨 텍스트가 DOM에 존재하는 경우(즉, 일반적으로 표시되는 텍스트 콘텐츠), 작성자는 권장되는 방법으로 aria-labelledby를 사용해야 하며, 사용하지 않아야 합니다 aria-label를. 요소의 이름을 DOM에서 프로그래밍적으로 결정할 수 없는 경우, 또는 DOM 콘텐츠를 참조하는 것이 원하는 사용자 경험이 아닌 경우가 있을 수 있습니다. 대부분의 호스트 언어는 요소에 이름을 지정할 수 있는 속성을 제공합니다(예: [HTML]의 title 속성). 하지만 이는 브라우저 툴팁을 제공할 수 있습니다. DOM 콘텐츠나 툴팁이 바람직하지 않은 경우, 작성자는 선택적으로 aria-label을 사용해 접근 가능한 이름을 설정할 수 있습니다. 접근 가능한 이름 및 설명 계산에서 요구하는 대로, 사용자 에이전트는 접근 가능한 이름 속성을 계산할 때 aria-labelledbyaria-label보다 우선적으로 처리합니다.

특성:
관련 개념
관련 개념:
사용되는 역할: 다음 역할을 제외한 기본 마크업의 모든 요소: caption, code, deletion, emphasis, generic, insertion, paragraph, presentation, strong, subscript, superscript
값: 문자열

aria-labelledby property

현재 요소에 라벨을 제공하는 요소(들)를 식별합니다. 관련 항목: aria-describedby.

aria-labelledby의 목적은 aria-label과 동일합니다. 객체의 인식 가능한 이름을 사용자에게 제공합니다. 라벨의 가장 일반적인 접근성 API 매핑은 접근 가능한 이름 속성입니다.

인터페이스 상에서 화면에 보이는 라벨을 가질 수 없는 경우, 작성자는 권장되는 방법으로 aria-label을 사용해야 하며, 사용하지 않아야 합니다 aria-labelledby. 접근 가능한 이름 및 설명 계산에서 요구하는 대로, 사용자 에이전트는 접근 가능한 이름 속성을 계산할 때 aria-labelledbyaria-label보다 우선적으로 처리합니다.

aria-labelledby 속성은 aria-describedby와 유사하게 다른 요소를 참조하여 텍스트 대안을 계산하지만, 라벨은 간결해야 하고 설명은 더 자세한 정보를 제공하는 데 사용됩니다.

참고

이 속성의 미국 영어 표준 철자는 "labeledby"이지만, 접근성 API가 "labelledby"라는 철자를 이미 사용하기 때문에, 개발자의 혼란을 최소화하고 관례를 맞추기 위해 이렇게 표기되었습니다.

특성:
특성
관련 개념:
사용되는 역할: 다음 역할을 제외한 기본 마크업의 모든 요소: caption, code, deletion, emphasis, generic, insertion, paragraph, presentation, strong, subscript, superscript
값: ID 참조 목록

aria-level property

요소가 구조 내에서 가지는 계층 수준을 정의합니다.

트리 내부의 트리 아이템, 문서 내의 헤딩, 중첩된 그리드, 중첩된 탭리스트, 기타 컨테이너 내부에 나타날 수 있는 구조적 항목 등에서 사용될 수 있습니다. aria-level의 값은 1 이상인 정수입니다.

깊이가 깊어질수록 레벨이 증가합니다. DOM 상의 조상 관계가 레벨을 정확히 나타내지 않는 경우, 작성자는 권장되는 방법으로 aria-level 속성을 명시적으로 정의해야 합니다.

이 속성은 집합의 방향 내에서 리프 노드 역할을 하는 요소에 적용됩니다. 예를 들어 treeitem 역할의 요소에 적용되며, group 역할의 요소에는 적용되지 않습니다. 즉, 집합 내 여러 요소가 이 속성에 대해 동일한 값을 가질 수 있습니다. 컨테이너에 단일 값을 제공하는 것이 덜 반복적일 수 있지만, 리프 노드에만 제한하는 것은 보조 기술이 속성을 일관되게 사용할 수 있게 합니다.

DOM 상의 조상 관계가 레벨을 정확히 나타내는 경우, 사용자 에이전트가 문서 구조에서 항목의 레벨을 계산할 수 있습니다. 이 속성은 문서 구조나 aria-owns 속성에서 계산할 수 없는 경우 레벨을 명시적으로 나타내는 데 사용할 수 있습니다. 사용자 에이전트의 자동 레벨 계산 지원은 다를 수 있으므로, 작성자는 권장되는 방법으로 사용자 에이전트 및 보조 기술에서 이 속성이 필요한지 테스트해야 합니다. 사용자 에이전트가 레벨을 계산하도록 하려면, 작성자는 이 속성을 생략해야 합니다.

참고

treegrid의 경우 aria-levelrow 역할의 요소에서 지원되며, gridcell 역할의 요소에서는 지원되지 않습니다. 처음에는 treeitem 요소에 적용하는 것과 일관성이 없어 보일 수 있지만, 실제로 rowgrid의 수직 방향에서 리프 노드 역할을 하고, gridcell은 각 row의 수평 방향에서 리프 노드 역할을 합니다. 레벨은 행 내 셀 집합에는 지원되지 않으므로 aria-level 속성은 row 역할의 요소에 적용됩니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: 정수

aria-live property

요소가 업데이트될 것이며, 사용자 에이전트, 보조 기술, 사용자에게 라이브 리전에서 어떤 유형의 업데이트가 기대되는지 설명합니다.

속성은 중요도의 정도로 표현됩니다. polite로 지정된 영역에서 보조 기술은 업데이트를 사용자에게 알리지만 일반적으로 현재 작업을 방해하지 않으며, 업데이트의 우선순위가 낮습니다. assertive로 지정되면 보조 기술이 즉시 사용자에게 알리며, 이전 업데이트의 음성 큐를 잠재적으로 비울 수 있습니다.

정중함 수준은 본질적으로 업데이트의 우선순서를 위한 메커니즘이며, 사용자 에이전트나 보조 기술에 대한 강력한 권고입니다. 값은 사용자 에이전트, 보조 기술, 또는 사용자에 의해 재정의될 수 있습니다. 예를 들어, 보조 기술이 키 입력 또는 마우스 클릭에 반응하여 변경이 발생한 것을 감지할 수 있다면, aria-live 속성의 값과 관계없이 즉시 변경 내용을 안내할 수 있습니다.

사용자마다 필요가 다르므로, 각 사용자가 보조 기술의 라이브 리전 반응을 일반적으로 정의된 기준에서 조정할 수 있습니다. 보조 기술은 사용자가 큐와 인터럽션을 조절할 수 있도록 정밀도를 높이거나 낮추는 기능을 구현할 수 있습니다.

속성이 업데이트를 보내야 하는 객체에 설정되어 있지 않은 경우, 정중함 수준은 aria-live 속성을 설정한 가장 가까운 조상 요소의 값입니다.

aria-live 속성은 라이브 리전의 변경 사항 표시 순서를 결정하는 주요 기준입니다. 구현에서는 aria-live 속성이 조상 체인에 설정되지 않은 경우 각 역할의 기본 정중함 수준도 고려합니다(예: log의 변경은 기본적으로 polite입니다). assertive 항목은 즉시 안내되고, 그 뒤에 polite 항목이 안내됩니다. 사용자 에이전트나 보조 기술은 선택적으로 assertive 변경 사항이 발생할 때 큐에 쌓인 변경 사항을 모두 비울 수 있습니다. (예: assertive 영역 변경으로 큐에 있던 모든 변경이 제거될 수 있음)

라이브 리전이 polite로 지정되면, 보조 기술은 권장되는 방법으로 현재 문장을 끝내거나 사용자가 입력을 멈출 때 등 적절한 시점에 업데이트를 안내해야 합니다. assertive로 지정된 경우, 보조 기술은 권장되는 방법으로 즉시 안내해야 합니다. 인터럽션은 사용자를 혼란스럽게 하거나 현재 작업을 완료하지 못하게 할 수 있으므로, 작성자는 사용하지 않아야 합니다 assertive 값을, 꼭 중단이 필요한 경우를 제외하고는 사용하지 않아야 합니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: 토큰
값:
설명
assertive 해당 영역의 업데이트가 가장 높은 우선순위를 가지며 즉시 사용자에게 안내되어야 함을 나타냅니다.
off (기본값) 해당 영역의 업데이트는 사용자가 그 영역에 포커스를 두고 있을 때만 안내되어야 함을 나타냅니다.
polite 해당 영역의 업데이트는 현재 문장 안내가 끝나거나 사용자가 입력을 멈췄을 때 등 적절한 시점에 안내되어야 함을 나타냅니다.

aria-modal property

표시될 때 요소가 모달인지 여부를 나타냅니다.

aria-modal 속성은 "모달" 요소가 존재할 경우 페이지의 다른 콘텐츠 사용을 제한함을 나타냅니다. 예를 들어, 모달 다이얼로그가 표시될 때 사용자의 상호작용은 다이얼로그의 내용으로 제한되며, 다이얼로그 포커스가 해제되거나 더 이상 표시되지 않을 때까지 그렇습니다.

모달 요소가 표시될 때, 보조 기술은 권장되는 방법으로 해당 요소로 이동해야 하며, 포커스가 명시적으로 다른 곳에 설정된 경우는 제외됩니다. 보조 기술은 선택적으로 모달 요소의 콘텐츠로 탐색을 제한할 수 있습니다. 만약 포커스가 모달 요소 외부의 요소로 이동하면, 보조 기술은 탐색을 제한하지 않아야 합니다.

모달 요소가 표시될 때, 작성자는 반드시 인터페이스가 모달 요소의 하위 요소만으로 제어될 수 있도록 해야 합니다. 즉, 모달 다이얼로그에 닫기 버튼이 있다면, 해당 버튼은 다이얼로그의 하위 요소여야 합니다. 모달 요소가 표시될 때, 작성자는 권장되는 방법으로 나머지 모든 콘텐츠를 비활성(inert, HTML의 "inert subtrees" 등)으로 표시해야 하며, 호스트 언어에서 해당 기능이 제공될 경우 이를 활용해야 합니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: 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로 설정해야 합니다. 선택이 불가능한 하위 항목에는 aria-selected 속성을 사용하지 않아야 합니다.

참고

목록과 트리는 사용자가 한 번에 둘 이상의 항목을 선택할 수 있도록 허용하는 역할의 예시입니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 하나의 항목만 선택할 수 있습니다.
true 위젯에서 동시에 둘 이상의 항목을 선택할 수 있습니다.

aria-orientation property

요소의 방향이 수평인지, 수직인지, 아니면 알 수 없거나 애매한지 나타냅니다.

참고

ARIA 1.1에서 aria-orientation의 기본값이 horizontal에서 undefined로 변경되었습니다. 일부 역할에서는 암시적 기본값이 정의되어 있습니다(예: slider는 기본적으로 수평, scrollbar는 기본적으로 수직). 그러나 기본 방향이 애매한 역할(예: radiogroup)에서는 여전히 undefined로 남아 있습니다.

특성:
특성
사용되는 역할:
상속되는 역할:
값: 토큰
값:
설명
horizontal 요소가 수평 방향입니다.
undefined (기본값) 요소의 방향을 알 수 없거나 애매합니다.
vertical 요소가 수직 방향입니다.

aria-owns property

요소(들)를 식별하여 DOM 요소 간에 시각적, 기능적, 또는 컨텍스트적 부모/자식 관계를 정의합니다. DOM 계층 구조로 관계를 표현할 수 없는 경우에 사용합니다. 관련 항목: aria-controls.

aria-owns 속성의 값은 문서 내 하나 이상의 요소를 ID로 참조하는 공백으로 구분된 ID 참조 목록입니다. aria-owns를 추가하는 이유는 DOM에서 추론할 수 없는 부모/자식 컨텍스트 관계를 보조 기술에 노출하기 위함입니다.

요소가 aria-ownsDOM 자식 요소를 둘 다 가지고 있다면, 부모/자식 관계에서 자식 요소의 순서는 DOM 자식이 먼저, 그 다음 aria-owns로 참조된 요소들입니다. DOM 자식이 먼저가 아니길 의도한다면, aria-owns에 원하는 순서대로 DOM 자식을 나열해야 합니다. 작성자는 사용하지 않아야 합니다 aria-ownsDOM 계층 구조의 대체로. 관계가 DOM에 표현되어 있다면 aria-owns를 사용하지 마세요. 작성자는 반드시 한 요소의 ID가 동시에 둘 이상의 다른 요소의 aria-owns 속성에 지정되지 않도록 해야 합니다. 즉, 한 요소는 명시적 소유자를 하나만 가질 수 있습니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: ID 참조 목록

aria-placeholder property

컨트롤에 값이 없을 때 사용자 입력을 돕기 위한 짧은 힌트(단어 또는 짧은 문구)를 정의합니다. 힌트는 예시 값이나 기대하는 형식에 대한 간단한 설명일 수 있습니다.

작성자는 사용하지 않아야 합니다 aria-placeholder를 라벨 대신 사용하는 것. 두 목적은 다릅니다: 라벨은 어떤 정보를 입력해야 하는지 나타내고, 플레이스홀더 텍스트는 기대 값에 대한 힌트입니다. 관련 항목: aria-labelledby, aria-label.

작성자는 권장되는 방법으로 컨트롤의 value가 빈 문자열일 때 항상 힌트 텍스트를 사용자에게 표시해야 합니다. 이는 컨트롤이 처음 포커스를 받을 때, 그리고 사용자가 이전에 입력한 값을 제거할 때를 포함합니다.

참고

관련 placeholder 속성([HTML])과 마찬가지로, 표시되는 라벨 대신 플레이스홀더 텍스트를 사용하는 것은 고령 사용자, 인지/운동/미세운동/시각 장애를 가진 사용자를 포함한 다양한 사용자에게 컨트롤의 접근성과 사용성을 저하시킬 수 있습니다. 컨트롤의 라벨이 제공하는 힌트는 항상 표시되는 반면, placeholder 속성에 있는 짧은 힌트는 사용자가 값을 입력하기 전까지만 표시됩니다. 또한 플레이스홀더 텍스트가 미리 채워진 값으로 오해될 수 있고, 일반적으로 구현된 플레이스홀더 텍스트의 기본 색상은 대비가 부족하며, 별도의 표시되는 라벨이 없으면 컨트롤에 포커스를 설정하는 영역이 작아집니다.

참고

아래 예제들은 HTML 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>
특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: 문자열

aria-posinset property

현재 리스트 항목 또는 트리 항목 집합에서 요소의 순번 또는 위치를 정의합니다. 집합의 모든 요소가 DOM에 있을 경우 필수는 아닙니다. 관련 항목: aria-setsize.

집합의 모든 항목이 문서 구조에 존재하면, 속성을 설정할 필요가 없습니다. 사용자 에이전트가 각 항목의 집합 크기와 위치를 자동으로 계산할 수 있기 때문입니다. 그러나 한 번에 집합의 일부만 문서 구조에 존재하는 경우에는 이 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"> 사과 </li>
  <li role="option" aria-setsize="16" aria-posinset="6"> 바나나 </li>
  <li role="option" aria-setsize="16" aria-posinset="7"> 캔탈루프 </li>
  <li role="option" aria-setsize="16" aria-posinset="8"> 대추야자 </li>
</ul>

작성자는 반드시 aria-posinset 값을 1 이상의 정수로 설정해야 하며, 집합의 크기가 알려진 경우 집합 크기 이하로 설정해야 합니다. 작성자는 권장되는 방법으로 aria-setsize를 사용해야 합니다.

aria-posinsetmenuitem, menuitemcheckbox, 또는 menuitemradio에 노출할 때, 작성자는 권장되는 방법으로 menu 내 항목 총 개수에 대해 separator를 제외하고 aria-posinset 값을 설정해야 합니다.

특성:
사용되는 역할
사용되는 역할:
상속되는 역할:
값: 정수

aria-pressed state

토글 버튼의 현재 "눌림" 상태를 나타냅니다. 관련 항목: aria-checked, aria-selected.

토글 버튼은 값을 변경하려면 전체 누름-해제 사이클이 필요합니다. 한 번 활성화하면 값이 true로 변경되고, 다시 활성화하면 값이 false로 돌아갑니다. 값이 mixed라면 버튼이 제어하는 여러 항목의 값이 모두 동일하지 않음을 의미합니다. 속성이 없으면 버튼은 토글 버튼이 아닙니다.

aria-pressed 속성은 aria-checked 속성과 유사하지만 동일하지는 않습니다. 운영체제는 버튼에는 pressed, 체크박스에는 checked를 지원합니다.

특성:
사용되는 역할
사용되는 역할:
값: 3상(tristate)
값:
설명
false 요소가 눌림을 지원하지만 현재 눌려 있지 않습니다.
mixed 3상 토글 버튼의 혼합 모드 값을 의미합니다.
true 요소가 눌림 상태입니다.
undefined (기본값) 요소가 눌림을 지원하지 않습니다.

aria-readonly property

요소가 편집 불가능하지만, 그 외에는 작동 가능함을 나타냅니다. 관련 항목: aria-disabled.

이 속성은 사용자가 위젯의 값을 읽을 수 있지만, 값을 설정할 수는 없다는 의미입니다. 읽기 전용 요소는 사용자에게 의미가 있으며, 애플리케이션 작성자는 탐색을 제한하지 않아야 합니다 요소나 그 포커스 가능한 하위 요소로. 값 복사와 같은 다른 동작도 지원됩니다. 이는 비활성화된 요소와는 다르며, 비활성화 요소는 하위 요소로의 사용자 탐색을 허용하지 않을 수 있습니다.

예시:

  • 상수를 나타내는 폼 요소
  • 스프레드시트 그리드의 행 또는 열 헤더
  • 쇼핑카트 합계와 같은 계산 결과
특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 사용자가 요소의 값을 설정할 수 있습니다.
true 사용자가 요소의 값을 변경할 수 없습니다.

aria-relevant property

접근성 트리 내의 라이브 리전이 수정될 때 사용자 에이전트가 어떤 알림을 트리거할지 나타냅니다. 관련 항목: aria-atomic.

속성은 다음 중 하나 이상의 공백으로 구분된 목록으로 표현됩니다: additions, removals, text; 또는 하나의 전체 값 all.

이는 단순히 표시 목적이 아닌 의미 있는 변화를 설명하는 데 사용됩니다. 예를 들어, 로그 상단에서 노드를 제거하는 것은 단순히 다른 항목을 위한 공간 확보일 뿐 의미가 없습니다. 반면, 친구 목록에서 친구 이름이 제거된 것은 해당 친구가 더 이상 온라인이 아님을 나타내며, 이는 의미 있는 이벤트입니다. 이 경우 aria-relevantall로 설정됩니다. aria-relevant 속성이 제공되지 않으면 기본값 additions text가 사용되며, 이는 텍스트 변경과 노드 추가가 의미 있지만, 노드 제거는 의미 없음을 나타냅니다.

참고

aria-relevant 값 중 removals 또는 all은 신중하게 사용해야 합니다. 보조 기술은 제거가 중요한 변화(예: 채팅방에서 친구가 나가는 경우)일 때만 콘텐츠 제거를 안내해야 합니다.

참고

텍스트 제거는 지정된 값이 'removals' 또는 'all'일 때만 의미가 있습니다. 예를 들어, 라이브 리전에서 'foo'에서 'bar'로 텍스트가 바뀔 때, 기본 aria-relevant 값으로는 'bar' 추가만 안내되고, 'foo' 제거는 안내되지 않습니다.

aria-relevant는 라이브 리전의 선택적 속성입니다. 이는 보조 기술에 대한 제안일 뿐, 보조 기술이 모든 관련 유형의 변경을 안내할 필요는 없습니다.

aria-relevant가 정의되지 않은 경우, 요소의 값은 가장 가까운 조상에서 정의된 값을 상속받습니다. 값은 토큰 목록이지만, 상속된 값은 추가적이지 않습니다; 자손 요소에 제공된 값이 조상 요소 값 전체를 덮어씁니다.

텍스트 변경이 relevant로 지정된 경우, 사용자 에이전트는 반드시 라이브 리전의 접근 가능한 이름 및 설명 계산에 영향을 주는 모든 자손 노드 변경을 모니터링해야 합니다(nameFrom: contents). 예를 들어, 포함된 이미지의 alt 속성이 변경되면 텍스트 변경이 트리거됩니다. 반면, 라이브 리전 외부 노드의 텍스트가 변경되어도 해당 노드가 라이브 리전에 포함된 요소에 aria-labelledby로 참조되어 있더라도 변경은 트리거되지 않습니다.

특성:
사용되는 역할
사용되는 역할: 기본 마크업의 모든 요소
값: 토큰 목록
값:
설명
additions 요소 노드가 라이브 리전 내 접근성 트리에 추가됩니다.
additions text (기본값) "additions text" 값 조합과 동일합니다.
all "additions removals text" 모든 값 조합과 동일합니다.
removals 라이브 리전 내 접근성 트리에서 텍스트 콘텐츠, 텍스트 대안, 또는 요소 노드가 제거됩니다.
text 텍스트 콘텐츠 또는 텍스트 대안이 라이브 리전의 접근성 트리 내 임의 자손에 추가됩니다.

aria-required property

폼 제출 전에 요소에 사용자 입력이 필요함을 나타냅니다.

예를 들어, 사용자가 주소 입력란을 채워야 할 때 작성자는 해당 필드의 aria-required 속성을 true로 설정해야 합니다.

참고

요소가 필수임은 일반적으로 시각적으로 표시됩니다(위젯 뒤에 부호나 기호 등). aria-required 속성을 사용하면 작성자가 보조 기술에 해당 요소가 필수임을 명시적으로 전달할 수 있습니다.

동일한 기능의 네이티브 속성이 없는 경우, 호스트 언어는 권장되는 방법으로 작성자가 사용자 입력이나 선택이 필요한 호스트 언어 폼 요소에 aria-required 속성을 사용할 수 있도록 해야 합니다.

특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: true/false
값:
설명
false (기본값) 폼 제출에 사용자 입력이 필요하지 않습니다.
true 폼 제출 전에 사용자가 요소에 입력을 제공해야 합니다.

aria-roledescription property

요소역할에 대한 사람 읽기 가능한, 작성자 지역화 설명을 정의합니다.

일부 보조 기술(예: 스크린 리더)은 요소의 역할을 사용자 경험의 일부로 제공합니다. 이런 보조 기술은 보통 역할 이름을 지역화하며, 커스터마이즈할 수도 있습니다. 이러한 보조 기술의 사용자들은 "영역", "버튼", "슬라이더"와 같은 역할 이름의 안내에 의존하여 해당 요소의 목적 및, 위젯일 경우 상호작용 방법을 이해합니다.

aria-roledescription 속성은 작성자가 보조 기술이 역할 이름을 지역화하고 표현하는 방식을 오버라이드할 수 있게 해줍니다. 따라서 aria-roledescription를 부적절하게 사용하면 사용자가 요소를 이해하거나 상호작용하는 능력을 저해할 수 있습니다. 작성자는 권장되는 방법으로 aria-roledescription를 비인터랙티브 컨테이너 역할(group 또는 region 등)의 목적을 명확히 하거나, widget의 목적을 더 구체적으로 설명하는 데 제한적으로 사용해야 합니다.

aria-roledescription를 사용할 때, 작성자는 권장되는 방법으로 다음을 보장해야 합니다:

  1. aria-roledescription를 적용한 요소에 유효한 WAI-ARIA 역할 또는 암시적 WAI-ARIA 역할 의미가 있어야 합니다.
  2. aria-roledescription의 값이 비어 있거나 공백 문자만 포함해서는 안 됩니다.

아래 조건 중 하나라도 해당하면 사용자 에이전트는 반드시 aria-roledescription를 노출하지 않아야 합니다:

  1. aria-roledescription를 적용한 요소에 유효한 WAI-ARIA 역할이 없거나 암시적 WAI-ARIA 역할 의미가 없을 때
  2. aria-roledescription를 적용한 요소에 명시적 또는 암시적 WAI-ARIA 역할이 있고, aria-roledescription금지된 경우
  3. aria-roledescription의 값이 비어 있거나 공백 문자만 포함하는 경우

보조 기술권장되는 방법으로 요소의 역할을 안내할 때 aria-roledescription 값을 사용해야 하지만, 역할에 따른 기타 기능은 변경하지 않아야 합니다. 예를 들어, 다음 region 또는 button으로 탐색하는 기능을 제공하는 보조 기술은 aria-roledescription가 있어도 해당 기능으로 탐색할 수 있어야 합니다.

아래 두 예시는 웹 기반 프레젠테이션 애플리케이션에서 비인터랙티브 컨테이너가 "슬라이드"임을 나타내기 위해 aria-roledescription를 사용하는 방법을 보여줍니다.

<div role="region" aria-roledescription="슬라이드" id="slide42" aria-labelledby="slide42heading">
<h1 id="slide42heading">분기별 보고서</h1>
<!-- 슬라이드의 나머지 내용 -->
</div>
<section aria-roledescription="슬라이드" id="slide42" aria-labelledby="slide42heading">
<h1 id="slide42heading">분기별 보고서</h1>
<!-- 슬라이드의 나머지 내용 -->
</section>

이전 예시에서 스크린 리더 사용자는 "분기별 보고서, 슬라이드"라는 안내를 들을 수 있으며, "분기별 보고서, 영역" 또는 "분기별 보고서, 그룹"보다 더 명확합니다.

특성:
특성
사용되는 역할: 기본 마크업의 모든 요소
값: 문자열

aria-rowcount property

table, grid, treegrid 내 전체 행 개수를 정의합니다. 관련 항목: aria-rowindex.

모든 행이 DOM에 존재하면, 속성을 설정할 필요가 없습니다. 사용자 에이전트가 전체 행 개수를 자동 계산할 수 있기 때문입니다. 그러나 한 번에 일부 행만 DOM에 있을 경우, 전체 테이블의 행 개수를 명확히 안내하기 위해 이 속성이 필요합니다.

작성자는 반드시 aria-rowcount 값을 전체 테이블의 행 개수와 같은 정수로 설정해야 합니다. 전체 행 개수를 알 수 없으면, 반드시 aria-rowcount 값을 -1로 설정해 사용자 에이전트가 계산하지 않도록 해야 합니다.

아래 예시는 2000행을 가진 그리드에서 첫 번째 행과 100~102행만 사용자에게 표시되는 상황을 보여줍니다.

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader">이름</span>
      <span role="columnheader"></span>
      <span role="columnheader">회사</span>
      <span role="columnheader">전화번호</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 property

table, grid, treegrid 내 전체 행 중에서 요소의 행 인덱스 또는 위치를 정의합니다. 관련 항목: aria-rowcount, aria-rowspan.

모든 행이 DOM에 존재하면, 속성을 설정할 필요가 없습니다. 사용자 에이전트가 각 행의 인덱스를 자동 계산할 수 있기 때문입니다. 그러나 한 번에 일부 행만 존재하면, 전체 테이블 내 각 행의 위치를 명확히 안내하기 위해 이 속성이 필요합니다.

작성자는 반드시 aria-rowindex 값을 1 이상의 정수로, 이전 행의 aria-rowindex 값보다 크고 전체 행 수 이하로 설정해야 합니다. 여러 행에 걸쳐있는 셀 또는 gridcell의 경우, 반드시 aria-rowindex 값을 span의 시작 위치로 설정해야 합니다.

작성자는 권장되는 방법으로 각 행에 aria-rowindex를 지정해야 하며, 선택적으로 각 행의 모든 자식 또는 소유 요소에도 aria-rowindex를 지정할 수 있습니다.

아래 예시는 2000행을 가진 그리드에서 첫 번째 행과 100~102행만 사용자에게 표시되는 상황을 보여줍니다.

<div role="grid" aria-rowcount="2000">
  <div role="rowgroup">
    <div role="row" aria-rowindex="1">
      <span role="columnheader">이름</span>
      <span role="columnheader"></span>
      <span role="columnheader">회사</span>
      <span role="columnheader">전화번호</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">이름</span>
      <span role="columnheader" aria-rowindex="1"></span>
      <span role="columnheader" aria-rowindex="1">회사</span>
      <span role="columnheader" aria-rowindex="1">전화번호</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>
특성:
특성
사용되는 역할:
상속되는 역할:
값: 정수

aria-rowspan property

table, grid, treegrid 내 셀이나 gridcell이 차지하는 행의 수를 정의합니다. 관련 항목: aria-rowindex, aria-colspan.

속성은 네이티브 테이블에 포함되지 않은 셀 및 gridcell에 사용됩니다. 네이티브 테이블에서 셀이나 gridcell의 행 병합을 정의할 때는 작성자가 현행 표준 언어의 속성을 사용해야 하며, aria-rowspan를 사용하지 않아야 합니다. aria-rowspan가 현행 표준 언어에서 동등 속성이 제공되는 요소에 사용된 경우, 사용자 에이전트반드시 aria-rowspan 값을 무시하고 현행 표준 언어 속성 값을 보조 기술에 노출해야 합니다.

작성자는 반드시 aria-rowspan 값을 0 이상, 해당 셀이나 gridcell이 동일 열의 다음 셀이나 gridcell과 겹치지 않을 수 이하의 정수로 설정해야 합니다. 0으로 설정하면 셀이나 gridcell이 행 그룹 내 남은 모든 행을 차지함을 의미합니다.

특성:
사용되는 역할
사용되는 역할:
상속되는 역할:
값: 정수

aria-selected state

다양한 위젯의 현재 "선택됨" 상태를 나타냅니다. 관련 항목: aria-checked, aria-pressed.

속성은 단일 선택 및 다중 선택 위젯에 사용됩니다:

  1. 현재 포커스된 항목이 선택되지 않은 단일 선택 컨테이너. 선택은 일반적으로 포커스를 따라가며 사용자 에이전트에 의해 관리됩니다.
  2. 다중 선택 컨테이너. 작성자는 권장되는 방법으로 aria-multiselectable 속성이 true로 설정된 컨테이너의 선택 가능한 하위 항목에 대해 aria-selected 값을 true 또는 false로 지정해야 합니다.

aria-selected의 명시적 설정은 포커스 기반 암시적 선택보다 우선합니다. 위젯 내 어떤 DOM 요소도 명시적으로 선택됨으로 표시되어 있지 않으면, 보조 기술은 선택적으로 키보드 포커스(포커스 관리)를 따라 암시적 선택을 안내할 수 있습니다. 위젯 내 어떤 DOM 요소가 명시적으로 선택됨으로 표시되어 있으면, 사용자 에이전트는 암시적 선택을 안내하지 않아야 합니다.

특성:
사용되는 역할
사용되는 역할:
상속되는 역할:
값: true/false/undefined
값:
설명
false 선택 가능한 요소가 선택되지 않음.
true 선택 가능한 요소가 선택됨.
undefined (기본값) 요소가 선택 불가능함.

aria-setsize property

현재 리스트 항목 또는 트리 항목 집합의 항목 수를 정의합니다. 집합의 모든 요소가 DOM에 있을 경우 필수는 아닙니다. 관련 항목: aria-posinset.

property는 집합의 구성원에 표시되며, 집합을 모으는 컨테이너에 표시되지 않습니다. 예를 들어 "X번째 항목, 전체 Y개 중" 같은 안내를 위해 보조 기술은 X는 aria-posinset 속성을, Y는 aria-setsize 속성을 사용합니다.

집합의 모든 항목이 문서 구조에 존재하면, 이 속성을 설정할 필요가 없습니다. 사용자 에이전트가 각 항목의 집합 크기와 위치를 자동으로 계산할 수 있기 때문입니다. 그러나 한 번에 집합의 일부만 문서 구조에 존재하는 경우(문서 크기 절감 목적 등)에는 집합 크기를 명확히 안내하기 위해 이 속성이 필요합니다.

작성자는 반드시 aria-setsize 값을 집합의 항목 개수와 같은 정수로 설정해야 합니다. 전체 항목 개수를 알 수 없으면 권장되는 방법으로 aria-setsize 값을 -1로 설정합니다.

aria-setsizemenuitem, menuitemcheckbox, menuitemradio에 노출할 때, 작성자는 권장되는 방법으로 separator를 제외한 menu 내 총 항목 수에 따라 aria-setsize 값을 설정해야 합니다.

아래 예시는 16개 집합 중 5~8번 항목을 보여줍니다.

<h2 id="label_fruit"> 사용 가능한 과일 </h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="16" aria-posinset="5"> 사과 </li>
  <li role="option" aria-setsize="16" aria-posinset="6"> 바나나 </li>
  <li role="option" aria-setsize="16" aria-posinset="7"> 캔탈루프 </li>
  <li role="option" aria-setsize="16" aria-posinset="8"> 대추야자 </li>
</ul>

아래 예시는 전체 크기를 알 수 없는 집합에서 5~8번 항목을 보여줍니다.

<h2 id="label_fruit"> 사용 가능한 과일 </h2>
<ul role="listbox" aria-labelledby="label_fruit">
  <li role="option" aria-setsize="-1" aria-posinset="5"> 사과 </li>
  <li role="option" aria-setsize="-1" aria-posinset="6"> 바나나 </li>
  <li role="option" aria-setsize="-1" aria-posinset="7"> 캔탈루프 </li>
  <li role="option" aria-setsize="-1" aria-posinset="8"> 대추야자 </li>
</ul>
특성:
사용되는 역할
사용되는 역할:
상속되는 역할:
값: 정수

aria-sort property

테이블 또는 그리드의 항목이 오름차순 또는 내림차순으로 정렬되어 있는지 나타냅니다.

작성자는 권장되는 방법으로 이 property를 테이블 헤더 또는 그리드 헤더에만 적용해야 합니다. 속성이 제공되지 않으면 정의된 정렬 순서가 없습니다. 각 테이블 또는 그리드마다, 작성자는 권장되는 방법으로 한 번에 하나의 헤더에만 aria-sort를 적용해야 합니다.

특성:
사용되는 역할
사용되는 역할:
값: 토큰
값:
설명
ascending 이 열 기준으로 항목이 오름차순으로 정렬됨.
descending 이 열 기준으로 항목이 내림차순으로 정렬됨.
none (기본값) 열에 적용된 정렬이 정의되어 있지 않음.
other 오름차순 또는 내림차순 이외의 정렬 알고리즘이 적용됨.

aria-valuemax property

범위 위젯의 최대 허용 값을 정의합니다.

작성자는 반드시 aria-valuemax 값이 aria-valuemin 값 이상이어야 함을 보장해야 합니다. aria-valuenow에 최대값과 최소값이 알려져 있으면, 작성자는 권장되는 방법으로 aria-valuemaxaria-valuemin 속성을 제공해야 합니다.

참고

범위 위젯은 주어진 값에서 시작해 최대값(이 property로 정의됨)에 도달할 때까지 값을 증가시킬 수 있습니다. 최소값과 최대값을 선언하면 보조 기술이 범위의 크기를 사용자에게 안내할 수 있습니다.

특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: 숫자

aria-valuemin property

범위 위젯의 최소 허용 값을 정의합니다.

작성자는 반드시 aria-valuemin 값이 aria-valuemax 값 이하임을 보장해야 합니다. aria-valuenow에 최대값과 최소값이 알려져 있으면, 작성자는 권장되는 방법으로 aria-valuemaxaria-valuemin 속성을 제공해야 합니다.

참고

범위 위젯은 주어진 값에서 시작해 최소값(이 property로 정의됨)에 도달할 때까지 값을 감소시킬 수 있습니다. 최소값과 최대값을 선언하면 보조 기술이 범위의 크기를 사용자에게 안내할 수 있습니다.

특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: 숫자

aria-valuenow property

범위 위젯의 현재 값을 정의합니다. 관련 항목: aria-valuetext.

이 속성은 슬라이더나 진행 표시줄 등 범위 위젯에 사용됩니다.

현재 값을 알 수 없는 경우(예: 진행 상태를 알 수 없는 progressbar), 작성자는 사용하지 않아야 합니다 aria-valuenow 속성을. aria-valuenow 속성이 없으면 현재 값에 대한 정보가 암시되지 않습니다. aria-valuenow에 최대값과 최소값이 알려져 있으면, 작성자는 권장되는 방법으로 aria-valuemaxaria-valuemin 속성을 제공해야 합니다.

aria-valuenow의 값은 소수입니다. 범위가 숫자 집합이면 aria-valuenow는 그 값 중 하나입니다. 예를 들어 범위가 [0, 1]이면, 유효한 aria-valuenow는 0.5입니다. -2.5 또는 1.1 등 범위를 벗어난 값은 유효하지 않습니다.

progressbar 요소 및 scrollbar 요소의 경우, 보조 기술은 권장되는 방법으로 값을 퍼센트로 안내해야 하며, aria-valueminaria-valuemax가 모두 정의되어 있으면 범위 내 위치로 계산하고, 그렇지 않으면 실제 값과 함께 퍼센트 표시를 안내합니다. sliderspinbutton 역할의 요소는 보조 기술이 실제 값을 안내해야 합니다.

렌더링 값이 숫자로 정확히 표현될 수 없으면, 작성자는 권장되는 방법으로 aria-valuetext 속성을 aria-valuenow와 함께 사용하여 사용자 친화적으로 현재 값을 안내해야 합니다. 예를 들어, 슬라이더가 작음, 중간, 같은 값을 렌더링한다면, aria-valuetext의 값은 작음, 중간, 중 하나가 됩니다.

참고

aria-valuetext가 지정된 경우, 보조 기술은 aria-valuenow 값 대신 이를 안내합니다.

특성:
관련 개념
관련 개념:
사용되는 역할:
상속되는 역할:
값: 숫자

aria-valuetext property

범위 위젯aria-valuenow 값에 대한 사람이 읽을 수 있는 텍스트 대안을 정의합니다.

이 속성은 슬라이더나 진행 표시줄 등 범위 위젯에 사용됩니다.

aria-valuetext 속성이 설정되면, 작성자는 권장되는 방법으로 aria-valuenow 속성도 설정해야 합니다. 단, 해당 값이 알려지지 않은 경우(예: 진행 상태를 알 수 없는 progressbar)는 제외합니다.

작성자는 권장되는 방법으로 렌더링 값이 의미 있게 숫자로 표현될 수 없는 경우에만 aria-valuetext 속성을 설정해야 합니다. 예를 들어, 슬라이더가 작음, 중간, 같은 값을 렌더링한다면, aria-valuenow 값은 1~3 사이의 정수이고, aria-valuetext 값은 작음, 중간, 중 하나가 됩니다. aria-valuetext 속성이 없으면, 보조 기술은 현재 값 안내에 aria-valuenow만 사용합니다.

aria-valuetext가 지정된 경우, 보조 기술은 권장되는 방법으로 aria-valuenow 값 대신 이를 안내해야 합니다.

특성:
사용되는 역할
사용되는 역할:
상속되는 역할:
값: 문자열

7. 접근성 트리

접근성 트리DOM 트리는 병렬 구조입니다. 접근성 트리에는 사용자 에이전트의 UI 객체와 문서의 객체가 포함됩니다. 접근 가능한 객체는 접근성 DOM 요소 중 보조 기술에 노출되어야 하는 요소(접근성 이벤트를 발생시키거나 속성, 관계 또는 노출이 필요한 기능이 있는 경우)에 대해 생성됩니다.

7.1 접근성 트리에서 요소 제외하기

다음 요소들은 접근성 API에 노출되지 않으며, 사용자 에이전트는 반드시 이들을 접근성 트리에 포함하지 않아야 합니다:

위의 규칙에 따라 이미 접근성 트리에서 제외되지 않은 경우, 사용자 에이전트는 권장하지 않습니다 다음 요소를 접근성 트리에 포함하는 것을:

7.2 접근성 트리에 요소 포함하기

접근성 트리에서 요소 제외하기의 규칙에 따라 제외되거나 숨김으로 표시되지 않은 경우, 사용자 에이전트는 반드시 다음 기준 중 하나라도 만족하면 접근 가능한 객체접근성 트리에 제공해야 합니다(DOM 요소 기준):

8. 호스트 언어에서의 구현

역할, 상태, 속성들은 이 명세에서 완전한 웹 언어나 형식을 구성하지 않습니다. 호스트 언어 내에서 사용되도록 설계되었습니다. 본 섹션은 WAI-ARIA가 호스트 언어와 원활하게 통합될 수 있도록 호스트 언어에서 어떻게 구현되어야 하는지 논의합니다.

비록 마크업 언어들이 표면적으로는 비슷해 보이지만, 언어 정의 인프라를 공유하지 않습니다. 다양한 언어 구축 접근 방식을 수용하기 위해 요구사항은 일반적이면서 모듈화에 특화되어 있습니다. 명세 작성 방식의 차이를 허용하되, WAI-ARIA 정보가 작성자에게 일관되게 보이고 스크립트로 DOM에서 다뤄지는 방식을 유지하는 것이 목적입니다.

WAI-ARIA 역할, 상태, 속성은 속성으로 요소에 구현됩니다. 역할은 호스트 언어가 제공하는 role 속성 값의 토큰 중에 이름을 넣어 적용합니다. 상태와 속성은 각각 별도의 속성을 가지며, 각 상태/속성마다 정의된 값 형식을 사용합니다. 속성 이름은 해당 상태/속성의 aria- 접두어가 붙은 이름입니다.

8.1 Role 속성

호스트 언어는 다음과 같은 특징을 가진 속성을 제공해야 합니다:

8.2 상태 및 속성 속성

호스트 언어는 다음과 같은 특징을 가진 속성반드시 허용해야 합니다:

네임스페이스를 지원하는 호스트 언어는 XML 네임스페이스 [XML-NAMES] 사용할 수 있음. 이 경우 WAI-ARIA 상태 및 속성 속성의 네임스페이스는 반드시 http://www.w3.org/ns/wai-aria/이어야 함. 호스트 언어가 명시적으로 지원하지 않아도 네임스페이스를 지원한다면, 작성자는 권장되는 방법으로 해당 네임스페이스를 사용할 수 있음. 네임스페이스 접두사는 본 명세에서 정의하지 않으나 일반적으로 "aria"가 기대됨.

참고

WAI-ARIA 상태 및 속성 속성은 모두 "aria-"로 시작하는 명명 규칙을 가집니다. 이 접두사는 네임스페이스 접두사가 아니라, 상태/속성 이름의 일부입니다. 따라서 네임스페이스 사용 시 속성 전체 이름은 "aria:aria-foo"와 같이 됩니다.

일부 호스트 언어는 네임스페이스를 사용하지 않습니다. 이는 네임스페이스를 지원하지 않거나, WAI-ARIA를 핵심 기능에 포함하고자 할 때 그렇습니다. 이런 경우 속성 이름에 접두사 콜론이 없으며, 네임스페이스 용어로는 미지정 속성 이름입니다. ECMAScript의 DOM 인터페이스 getAttributeNS에서 빈 문자열("")은 이 상황을 나타내며, getAttribute("aria-busy"), getAttributeNS("", "aria-busy") 모두 DOM의 같은 aria-busy 속성을 접근합니다.

참고

본 섹션 요구사항에 따라 일부 사용자 에이전트는 네임스페이스 있는 WAI-ARIA 상태/속성을 인식하고, 일부는 없는 상태/속성을, 또는 둘 다 인식할 수 있습니다. 사용자는 자신이 사용하는 호스트 언어에서 어떤 형태가 지원되는지 인지해야 합니다. 네임스페이스가 필수임을 명확히 밝히지 않으면, 네임스페이스 없이 사용하는 것이 좋습니다. 네임스페이스를 지원하더라도, 사용자 에이전트는 일반적으로 네임스페이스가 붙은 WAI-ARIA 상태/속성을 접근성 API에 노출하지 않습니다. 현행 표준 HTMLXHTML 구현은 이 네임스페이스를 지원하지 않습니다.

8.3 포커스 내비게이션

호스트 언어는 모든 인터랙티브 요소를 포커스 가능하게 만들 수 있도록 지원해야 하며, 렌더링 또는 이벤트 수신이 가능한 모든 요소를 포함합니다. 호스트 언어는 웹 작성자가 이러한 포커스 가능 인터랙티브 요소를 기본 탭 내비게이션 순서에 나타낼지 여부를 정의할 수 있는 기능을 반드시 제공해야 합니다. HTMLtabindex 속성이 그 예입니다.

8.4 암시적 WAI-ARIA 의미론

WAI-ARIA는 호스트 언어에 객체에 대한 네이티브 의미가 부족할 때 객체의 의미 정보를 제공하도록 설계되었습니다. 하지만 WAI-ARIA는 많은 호스트 언어에 추가 의미도 제공합니다. 또한 호스트 언어는 시간이 지나면서 WAI-ARIA 기능에 대응하는 새로운 네이티브 기능을 제공할 수 있습니다. 따라서 WAI-ARIA 의미가 호스트 언어 의미와 중복되는 상황이 많습니다.

이러한 호스트 언어 기능은 "암시적 WAI-ARIA 의미론"을 가진 것으로 볼 수 있습니다. 암시적 WAI-ARIA 의미가 있는 기능의 사용자 에이전트 처리 방식은 WAI-ARIA 기능 처리와 유사합니다. 어휘적 차이로 인해 완전히 동일하지는 않지만, 일반적으로 사용자 에이전트는 접근성 API에 동일한 정보를 노출합니다. 암시적 WAI-ARIA 의미가 있는 기능은 구조적 요구사항(예: 필수 소유 요소, 필수 상태 및 속성 등)을 만족하며, 명시적 WAI-ARIA 의미를 추가로 제공할 필요가 없습니다. 암시적 WAI-ARIA 역할이 있는 요소에는 해당 역할이 지원하는 WAI-ARIA 상태 및 속성을 명시적 역할 지정 없이 사용할 수 있습니다.

예를 들어, 이미 기능이 있는 요소(예: 체크박스, 라디오 버튼)는 호스트 언어의 네이티브 의미를 사용해야 합니다. WAI-ARIA 마크업은 네이티브 의미를 확장(예: aria-required로 필수임 표시)하거나, 요소의 표준 기능과 다른 용도로 의미를 변경할 때만 사용합니다.

암시적 WAI-ARIA 의미는 다음 섹션의 호스트 언어 의미와의 충돌 처리 절차에 영향을 줍니다. 따라서 암시적 WAI-ARIA 의미는 호스트 언어 명세 또는 Core Accessibility API Mappings와 같은 규범 명세에 정의되어야 합니다.

8.5 호스트 언어 의미와의 충돌

WAI-ARIA 역할, 상태, 속성은 네이티브 호스트 언어 요소에 해당 의미가 없는 경우 의미 정보를 추가하기 위한 것이며, 일반적으로 네이티브 의미가 없는 요소에 사용됩니다. 비슷하지만 동일하지 않은 의미를 가진 요소(예: 중첩 리스트로 트리 구조 표현)에도 사용할 수 있습니다. 이 방법은 WAI-ARIA를 구현하지 않는 구형 브라우저에 대한 폴백 전략이나, 네이티브 요소의 스타일/스크립트 부담을 줄이기 위해 사용될 수 있습니다. 아래 예외를 제외하면, 사용자 에이전트는 반드시 접근성 API에 노출할 때 호스트 언어 의미 대신 WAI-ARIA 의미를 사용해야 합니다.

WAI-ARIA가 네이티브 의미를 덮어쓰는 것이 기대되는 일반적인 상황 외에도, WAI-ARIA로 덮어쓰기가 적절하지 않은 요소도 있습니다. 이는 동일한 호스트 언어 의미가 존재해 WAI-ARIA가 불필요하거나, WAI-ARIA 의미가 호스트 언어 의미와 직접 충돌하는 경우입니다. 동일 역할 의미와 값을 가진 호스트 언어 기능이 있고, 작성자가 호스트 언어 기능을 사용하지 않을 특별한 이유가 없다면, 작성자는 권장되는 방법으로 호스트 언어 기능을 사용해야 합니다.

호스트 언어에는 WAI-ARIA 역할에 해당하는 암시적 의미가 있을 수 있습니다. WAI-ARIA 역할이 제공되면, 사용자 에이전트는 반드시 네이티브 의미 대신 WAI-ARIA 역할 의미를 사용해야 하며, 이 역할이 속성 사용을 금지하는 경우는 예외입니다. 역할 값은 상태/속성 값처럼 충돌하지 않으며(예: HTML 'checked' 속성과 'aria-checked' 속성 값 충돌), 작성자는 역할을 제공할 합당한 이유가 있을 때만 비정규 요소에 WAI-ARIA 역할을 지정해야 합니다.

WAI-ARIA 상태 및 속성이 호스트 언어 기능에 암시적 WAI-ARIA 의미를 갖는 경우, WAI-ARIA 기능과 호스트 언어 기능이 모두 제공되고 값이 동기화되지 않으면, 사용자 에이전트와 보조 기술은 어떤 값을 사용해야 할지 알 수 없습니다. 따라서 충돌 방지를 위해, 호스트 언어는 각 요소별로 WAI-ARIA 속성 사용이 네이티브 속성과 충돌하는 경우를 명확히 선언해야 합니다. 호스트 언어가 직접 의미 충돌을 선언하면, 사용자 에이전트는 반드시 WAI-ARIA 속성을 무시하고 호스트 언어 속성을 사용해야 합니다.

호스트 언어는 선택적으로 WAI-ARIA로 덮어쓸 수 없는 기능("강한 네이티브 의미")을 문서화할 수 있습니다. 이는 암시적 WAI-ARIA 의미가 있는 기능이거나, WAI-ARIA로 의미를 바꾸면 처리 방식이 불확실해지는 경우입니다. 검증 도구는 선택적으로 강한 네이티브 의미가 있는 요소에 WAI-ARIA 역할이 사용되면 오류 또는 경고를 표시할 수 있지만, 앞서 설명한 대로 사용자 에이전트는 네이티브 의미가 영구적으로 표시용이 아닌 한 WAI-ARIA 역할 의미를 사용해 접근성 API에 노출해야 합니다.

호스트 언어가 WAI-ARIA로 네이티브 기능을 덮어쓰는 예외를 만들 수 있는 것은 오류 방지 및 본질적 처리 문제를 피하기 위함입니다. 작성자 오류는 호스트 언어와 WAI-ARIA가 비슷하지만 동일하지 않은 기능을 제공할 때 어떤 값을 변경하는 것이 접근성 API에 어떻게 반영되는지 불명확한 경우 발생할 수 있습니다. 본질적 처리는 렌더링/접근성 API 노출을 넘어 WAI-ARIA로 변경하기 어렵거나 예측할 수 없는 결과를 초래하는 경우입니다. 이런 상황에서는 호스트 언어가 WAI-ARIA 사용을 제한하는 것이 타당합니다. 단, 호스트 언어가 모든 ARIA 사용을 임의로 금지할 수 있도록 하는 것은 아니며, ARIA 사용 제한은 콘텐츠 처리가 효과적으로 이루어져야 하는 경우에만 적용해야 합니다.

특정 ARIA 기능은 접근성 API의 완전한 모델 구축에 필수적입니다. 이런 기능은 네이티브 의미와 충돌하지 않으므로(보완 가능), 호스트 언어는 반드시 하지 않아야 합니다 다음 ARIA 기능의 사용을 금지하는 강한 네이티브 의미를 선언하는 것:

8.6 상태 및 속성 속성 처리

상태 및 속성 속성은 호스트 언어에 포함되므로 값 형식 표현 구문은 호스트 언어가 결정합니다. 에 정의된 각 값 형식에 대해 호스트 언어의 적절한 값 형식을 사용합니다. WAI-ARIA 값 형식과 다양한 호스트 언어 값 형식의 권장 매핑은 WAI-ARIA 값 형식과 언어 매핑에 나와 있습니다. 이는 새로운 호스트 언어 지원을 위해 비규범적 매핑입니다.

리스트 값 형식(ID 참조 목록, 토큰 목록)은 하나 이상의 값을 제공할 수 있습니다. 값은 호스트 언어가 인식하는 구분 문자(공백, 쉼표 등)로 구분됩니다. 일부 언어는 특정 구분 문자만 요구하고, 다른 언어는 여러 구분 문자를 허용할 수 있습니다.

글로벌 상태 및 속성은 호스트 언어의 모든 요소에서 지원합니다. 단, 작성자는 반드시 글로벌이 아닌 상태/속성을 해당 상태/속성을 지원하는 역할에만 사용해야 하며, 명시적 WAI-ARIA 역할 또는 호스트 언어의 암시적 WAI-ARIA 의미가 해당 역할과 일치해야 합니다. role 속성을 요소에 추가하면, 해당 요소의 의미와 동작(ARIA 상태/속성 지원 포함)은 역할 동작에 따라 보강 또는 덮어써집니다. 사용자 에이전트는 반드시 역할이 지원하지 않는 글로벌이 아닌 상태/속성을 무시해야 하며, 이는 명시적 역할 또는 호스트 언어의 암시적 WAI-ARIA 의미가 해당 역할에 일치하는 경우에만 적용합니다. 예를 들어, aria-valuetext 속성은 progressbar에 사용할 수 있습니다.

WAI-ARIA 역할은 "지원됨" 또는 "필수"로 지정된 상태/속성을 가집니다. 예를 들어 combobox 역할이 aria-autocomplete 속성을 지원함으로 지정된 경우, 해당 combobox가 자동 완성을 구현할 수도 있고 하지 않을 수도 있습니다. 반면, combobox 역할은 확장 가능함을 나타내기 위해 aria-expanded 상태가 필수입니다. combobox는 listbox 등 팝업 요소를 제어하며, 열린 상태면 확장됨, 닫힌 상태면 축소됨입니다.

ARIA 역할이 사용될 때, 지원됨 상태/속성이 DOM에 없으면 기본값대로 처리합니다. 예를 들어 combobox 역할에서 aria-autocomplete 속성이 없으면 aria-autocomplete="none"과 같아 combobox가 자동 완성을 제공하지 않음을 뜻합니다.

반면, 필수 상태/속성이 없으면 작성자 오류입니다. 필수 속성이 누락된 경우, 해당 역할의 암시적 중립값(기본값과 다를 수 있음)이 적용됩니다. 예를 들어 aria-expanded의 기본값은 undefined이지만, combobox 역할에서는 확장/축소 성격을 나타내야 하므로 암시적 값은 false입니다. 각 역할별 특성표에는 "역할의 암시적 값" 항목이 있어, 상태/속성이 누락될 때 사용할 값을 명시합니다.

암시적 WAI-ARIA 의미가 있는 요소는 해당 역할이 지원하는 모든 WAI-ARIA 상태/속성을 지원합니다. 따라서 작성자는 선택적으로 역할 없이 상태/속성을 지정할 수 있습니다. 역할은 암시적 WAI-ARIA 역할을 변경할 때만 필요합니다.

상태/속성이 DOM에 있지만 값이 빈 문자열("")인 경우가 있습니다. 작성자는 선택적으로 지원되는(필수 아닌) 상태/속성에는 빈 문자열("")을 지정할 수 있습니다. 사용자 에이전트는 권장되는 방법으로 값이 ""인 속성을 속성 없음과 동일하게 처리해야 합니다. 지원되는 상태/속성에는 기본값이 적용되고, 필수 속성이면 작성자 오류이며 역할의 암시적 값이 사용됩니다.

8.6.1 ID 참조 오류 처리

사용자 에이전트는 문서 내 다른 요소의 ID와 일치하지 않는 ID 참조를 권장되는 방법으로 무시해야 합니다.

ID가 고유하도록 하는 것은 웹 작성자의 책임입니다. 동일한 ID를 가진 요소가 둘 이상 있으면, 사용자 에이전트는 권장되는 방법으로 해당 ID를 가진 첫 번째 요소를 사용해야 합니다. 동작은 getElementById와 동일합니다.

하나의 WAI-ARIA 관계에서 동일한 요소가 여러 번 지정된 경우, 사용자 에이전트는 권장되는 방법으로 동일한 요소에 대한 여러 포인터를 반환해야 합니다.

aria-activedescendant는 단일 ID 참조만 가리키도록 정의되어 있습니다. aria-activedescendant 값이 기존 ID 참조와 정확히 일치하지 않으면 작성자 오류이며 DOM의 어떤 요소와도 일치하지 않습니다.

8.7 CSS 선택자

참고

이 섹션은 향후 버전에서 제거될 수 있습니다.

속성 선택자에 대한 지원은 WAI-ARIA 속성을 반드시 포함해야 합니다. 예를 들어, .fooMenuItem[aria-haspopup="true"]는 클래스가 fooMenuItem인 모든 요소WAI-ARIA 속성 aria-haspopup 값이 true인 요소를 선택합니다. WAI-ARIA 속성의 동적 변경에 대해 프레젠테이션은 반드시 업데이트되어야 합니다. 이를 통해 작성자는 WAI-ARIA 의미에 맞게 스타일을 맞출 수 있습니다.

9. 작성자 오류 처리

9.1 역할

사용자 에이전트는 WAI-ARIA 역할의 유효성 검사를 수행하는 것이 기대됩니다.

역할 정의 섹션에서 명시한 대로, 콘텐츠에서 추상 역할을 사용하는 것은 작성자 오류로 간주됩니다. 사용자 에이전트는 반드시 하지 않아야 합니다 추상 역할을 접근성 API의 표준 역할 매핑을 통해 노출하는 것을.

role 속성에 비추상 WAI-ARIA 역할 이름과 일치하는 토큰이 없다면, 사용자 에이전트는 반드시 해당 요소에 역할이 제공되지 않은 것처럼 처리해야 합니다. 예를 들어, <table role="foo"><table>과 동일하게 노출되어야 하고, <input type="text" role="structure"><input type="text">와 동일하게 노출되어야 합니다.

9.2 상태 및 속성

일반적으로 사용자 에이전트WAI-ARIA 속성에 대해 많은 유효성 검사를 하지 않습니다. 사용자 에이전트는 선택적으로 요청 시 약간의 유효성 검사(예: 유효한 IDWAI-ARIA 관계에 지정되어 있는지, aria-posinset이 1과 aria-setsize 사이에 있는지 등)를 할 수 있습니다. 사용자 에이전트는 다음과 같은 논리적 유효성 검사는 책임지지 않습니다:

  1. 관계에서 순환 참조(예: 두 요소가 서로를 소유하는 경우).
  2. DOM 트리 구조와 관련된 올바른 사용(예: 한 요소가 둘 이상의 요소에 소유되는 경우).
  3. WAI-ARIA 역할을 지정한 요소가 해당 역할의 동작을 올바르게 구현하는지(예: checkbox 역할을 가진 요소가 실제로 체크박스처럼 동작하는지 사용자 에이전트가 검증하지 않음).
  4. 필수 자식/부모 역할 관계를 올바르게 준수하지 않거나, 필수 부모가 아닌 위치에 나타나는 요소.
  5. aria-activedescendant가 실제로 컨테이너 위젯의 소유 요소를 가리키는지 여부.
  6. 집합의 일부 요소에만 aria-setsizearia-posinset이 지정되었을 때, 암시적 값 결정.

작성자가 소수 또는 정수 값 형식에 숫자가 아닌 값을 지정한 경우, 사용자 에이전트는 권장되는 방법으로 다음을 수행해야 합니다:

WAI-ARIA 속성에 알 수 없거나 허용되지 않은 값이 있는 경우, 사용자 에이전트는 플랫폼 접근성 API에 다음과 같이 노출해야 합니다:

참고

UIA에서는, 사용자 에이전트가 해당 속성을 "unsupported"로 남겨둘 수 있습니다.

사용자 에이전트는 반드시 하지 않아야 합니다 해결되지 않은 ID를 참조하는 WAI-ARIA 속성을 노출하는 것을. 예시:

사용자 에이전트는 반드시 하지 않아야 합니다 aria-roledescription을 노출하는 것을, 다음과 같은 경우:

특정 역할에 필수 WAI-ARIA 속성이 누락된 경우, 사용자 에이전트는 권장되는 방법으로 다음 표의 값을 제공된 것처럼 처리해야 합니다.

필수 속성 누락 시 대체 값
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 없거나 숫자가 아닌 경우, (aria-valuemax - aria-valuemin) / 2. 값이 aria-valuemin보다 작으면 aria-valuemin 값. 값이 aria-valuemax보다 크면 aria-valuemax 값.
separator (포커스 가능할 경우) aria-valuenow 없거나 숫자가 아닌 경우, (aria-valuemax - aria-valuemin) / 2. 값이 aria-valuemin보다 작으면 aria-valuemin 값. 값이 aria-valuemax보다 크면 aria-valuemax 값.
slider aria-valuenow 없거나 숫자가 아닌 경우, (aria-valuemax - aria-valuemin) / 2. 값이 aria-valuemin보다 작으면 aria-valuemin 값. 값이 aria-valuemax보다 크면 aria-valuemax 값.
switch aria-checked false
meter aria-valuenow 암시적 또는 명시적으로 설정된 aria-valuemin 값과 일치하는 값.
참고

필수 아닌 상태 및 속성의 암시적 값은 각 역할별 특성표에 표시됩니다. 이 표에는 포함되지 않습니다.

10. IDL 인터페이스

호환되는 사용자 에이전트는 반드시 아래 IDL 인터페이스를 구현해야 합니다.

10.1 인터페이스 믹스인 ARIAMixin

WebIDLinterface mixin ARIAMixin {
	attribute DOMString? role;
	
	attribute DOMString? ariaAtomic;
	attribute DOMString? ariaAutoComplete;
	attribute DOMString? ariaBusy;
	attribute DOMString? ariaChecked;
	attribute DOMString? ariaColCount;
	attribute DOMString? ariaColIndex;
	
	attribute DOMString? ariaColSpan;
	
	attribute DOMString? ariaCurrent;
	
	
	
	attribute DOMString? ariaDisabled;
	
	attribute DOMString? ariaExpanded;
	
	attribute DOMString? ariaHasPopup;
	attribute DOMString? ariaHidden;
	attribute DOMString? ariaInvalid;
	attribute DOMString? ariaKeyShortcuts;
	attribute DOMString? ariaLabel;
	
	attribute DOMString? ariaLevel;
	attribute DOMString? ariaLive;
	attribute DOMString? ariaModal;
	attribute DOMString? ariaMultiLine;
	attribute DOMString? ariaMultiSelectable;
	attribute DOMString? ariaOrientation;
	
	attribute DOMString? ariaPlaceholder;
	attribute DOMString? ariaPosInSet;
	attribute DOMString? ariaPressed;
	attribute DOMString? ariaReadOnly;
	
	attribute DOMString? ariaRequired;
	attribute DOMString? ariaRoleDescription;
	attribute DOMString? ariaRowCount;
	attribute DOMString? ariaRowIndex;
	
	attribute DOMString? ariaRowSpan;
	attribute DOMString? ariaSelected;
	attribute DOMString? ariaSetSize;
	attribute DOMString? ariaSort;
	attribute DOMString? ariaValueMax;
	attribute DOMString? ariaValueMin;
	attribute DOMString? ariaValueNow;
	attribute DOMString? ariaValueText;
};

ARIAMixin을 포함한 인터페이스는 아래 알고리즘을 제공해야 합니다:

ARIAMixin에 정의된 모든 IDL 속성 idlAttribute에 대해 get 시 아래 단계를 수행해야 합니다:

  1. contentAttribute를 ARIA Attribute Correspondence 테이블에서 idlAttribute로 조회하여 결정합니다.

  2. this, idlAttribute, contentAttributeARIAMixin getter 단계를 실행한 결과를 반환합니다.

set 시에도 마찬가지로 아래 단계를 수행해야 합니다:

  1. contentAttribute를 ARIA Attribute Correspondence 테이블에서 idlAttribute로 조회하여 결정합니다.

  2. this, idlAttribute, contentAttribute, 주어진 값을 인자로 ARIAMixin setter 단계를 실행합니다.

참고

이 매우 일반적인 프레임워크는 Element, ElementInternals와 같은 다양한 호스트 인터페이스가 이 IDL 속성들에 대해 서로 다른 동작을 제공할 수 있도록 하기 위한 것입니다. 대안은 각 호스트 인터페이스가 IDL 속성을 독립적으로 중복 정의하는 것이지만, 이 방법은 동기화 오류 위험이 높습니다.

10.2 ARIA 속성 대응관계

다음 테이블은 ARIAMixin이 사용하는 IDL 속성명과 콘텐츠 속성명의 대응관계를 제공합니다.

IDL 속성 반영되는 ARIA 콘텐츠 속성
role role
ariaAtomic aria-atomic
ariaAutoComplete aria-autocomplete
ariaBusy aria-busy
ariaChecked aria-checked
ariaColCount aria-colcount
ariaColIndex aria-colindex
ariaColSpan aria-colspan
ariaCurrent aria-current
ariaDisabled aria-disabled
ariaExpanded aria-expanded
ariaHasPopup aria-haspopup
ariaHidden aria-hidden
ariaInvalid aria-invalid
ariaKeyShortcuts aria-keyshortcuts
ariaLabel aria-label
ariaLevel aria-level
ariaLive aria-live
ariaModal aria-modal
ariaMultiLine aria-multiline
ariaMultiSelectable aria-multiselectable
ariaOrientation aria-orientation
ariaPlaceholder aria-placeholder
ariaPosInSet aria-posinset
ariaPressed aria-pressed
ariaReadOnly aria-readonly
ariaRequired aria-required
ariaRoleDescription aria-roledescription
ariaRowCount aria-rowcount
ariaRowIndex aria-rowindex
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 속성의 명명 및 대소문자 구분에 적용되었습니다.

  • 여러 단어 조합(예: described by)을 참조하는 속성명은 각 단어 경계마다 대문자로 camelCase 처리됩니다. 예: aria-describedbyariaDescribedBy로 D와 B가 대문자.
  • 하이픈이 들어가는 개념(예: multi-selectable)은 하이픈 경계마다 대문자로 camelCase 처리됩니다. 예: aria-multiselectableariaMultiSelectable로 M과 S가 대문자.
  • 믿을 수 있는 사전에서 하이픈이 있는/없는 두 형태가 모두 있는 경우(예: multi-line, multiline) 하이픈 형태로 camelCase 처리. 예: aria-multilineariaMultiLine로 M과 L이 대문자.
  • 복합어가 하나의 단어로만 표기되는 경우(예: placeholder), 첫 글자만 대문자. 즉, aria-placeholderariaPlaceholder로 P만 대문자.
  • 현재 ARIA 속성 중 약어 기반은 없지만, 미래에 추가된다면 DOM 관례(ID → Id 등)를 따름.

10.2.2 IDL 속성명 예외 및 참고

이 섹션은 비규범적입니다.

특정 속성명에 대한 참고 또는 예외는 여기에 표기됩니다.

  • ariaPosInSet: aria-posinset는 집합 내 항목의 위치(두 단어: "in set")를 의미하며, 집합 시작점으로부터의 "inset"이 아닙니다. 따라서 IDL 속성명은 ariaPosInSet로 P, I, 두 번째 S가 대문자이고, ariaPosInset이 아님에 유의.

10.3 ARIAMixinElement에 혼합 적용

사용자 에이전트는 반드시 ElementARIAMixin을 포함해야 합니다:

WebIDLElement includes ARIAMixin;

Element의 경우:

참고

실제로, Elementrole IDL 속성은 role 콘텐츠 속성을 반영합니다. ariaValueMin IDL 속성은 aria-valuemin 콘텐츠 속성을 반영합니다. 등등.

10.4 IDL 속성 사용 예시

이 섹션은 비규범적입니다.

ARIA IDL 속성 반영의 주요 목적은 JavaScript에서 값 조작을 쉽게 하는 것입니다. 아래 예시는 사용 방법을 보여줍니다.

11. 프라이버시 및 보안 고려사항

이 섹션은 비규범적입니다.

이 명세는 새로운 보안 고려사항을 도입하지 않습니다.

웹 플랫폼 디자인 원칙에 따라, 이 명세는 보조 기술 사용 여부를 판단할 수 있는 프로그래밍 인터페이스를 제공하지 않습니다. 하지만 이 명세는 보조 기술 사용자에게 일반 사용자와 다른 정보를 제공할 수 있게 해줍니다. 이는 ARIA 명세의 다양한 기능을 통해 가능하며, 웹 기술 스택의 다른 부분들과 마찬가지로 가능합니다. 이러한 콘텐츠 불일치가 악용되어 보조 기술 사용자에 대한 능동적 핑거프린팅에 사용될 수 있습니다.

A. WAI-ARIA 값 타입과 언어 매핑

이 섹션은 비규범적입니다.

참고

아래 표의 HTML 열은 참고용입니다. HTML에서 WAI-ARIA 상태와 속성 사용에 대한 지침은 허용된 ARIA 역할, 상태, 속성 ([HTML-ARIA])에서 제공됩니다.

참고

HTML에서 true/false 값 매핑은 키워드 및 열거형 속성으로 truefalse 값을 허용하며, HTML 불리언 값 타입을 사용하지 않습니다.

아래 표는 WAI-ARIA 상태 및 속성 타입과 [HTML], XML 스키마 데이터타입 [XMLSCHEMA11-2], [SVG2] 및 SGML의 속성 타입 간 권장 매핑을 제공합니다.

아래에 나열되지 않은 언어에도 적합한 값 타입이 정의되어 있을 수 있습니다. 없다면, 일반적인 XML 언어에는 XML 스키마 데이터타입을 권장합니다. DTD를 사용하는 문서는 자동 검증이 불가하며 WAI-ARIA 속성에 추가 처리 과정이 필요합니다.

WAI-ARIA 타입 HTML XML 스키마
true/false 키워드 및 열거형 속성 - 허용 값: "true", "false" boolean
true/false/undefined 키워드 및 열거형 속성 - 허용 값: true, false, undefined NMTOKEN 열거 제약으로 true, false, undefined 허용
tristate 키워드 및 열거형 속성 - 허용 값: "true", "false", "mixed" NMTOKEN 열거 제약으로 "true", "false", "mixed" 허용
number 부동소수점 숫자 decimal
integer 음수가 아닌 정수 integer
token 키워드 및 열거형 속성 NMTOKEN 열거 제약으로 정의된 값 허용
token list 공백으로 구분된 토큰 NMTOKENS 열거 제약으로 정의된 값 허용
ID reference 다른 요소의 id 속성 IDREF
ID reference list 다른 요소의 하나 이상의 id 속성 값, 공백으로 구분된 토큰으로 표현 IDREFS
string 값 제약 없음 string

B. WAI-ARIA 1.1 권고안 이후의 주요 변경사항

C. 감사의 글

이 섹션은 비규범적입니다.

다음 분들이 이 문서의 개발에 기여하셨습니다.

C.1 발행 시점에 ARIA WG에서 활동한 참가자

C.2 기타 ARIA 기여자, 의견 제공자, 이전 활동 참가자

C.3 지원 기관

이 출판물은 미국 연방정부 교육부, 장애·자립생활·재활연구소(NIDILRR)에서 부분적으로 지원받았으며, 최초 계약번호 ED-OSE-10-C-0067, 이후 HHSP23301500054C, 현재 HHS75P00120P00168 하에 진행되었습니다. 이 출판물의 내용은 반드시 미국 교육부의 견해나 정책을 반영하는 것은 아니며, 상품명·상표·기관명이 언급되어도 미국 정부의 보증을 의미하지 않습니다.

D. 참고 문헌

D.1 규범 참고문헌

[ACCNAME-1.2]
접근 가능한 이름 및 설명 계산 1.2. Bryan Garaventa; Joanmarie Diggs; Michael Cooper. W3C. 2019년 7월 11일. W3C 초안. URL: https://www.w3.org/TR/accname-1.2/
[CORE-AAM]
핵심 접근성 API 매핑 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]
핵심 접근성 API 매핑 1.2. Valerie Young; Alexander Surkov; Michael Cooper. W3C. 2023년 5월 18일. W3C 후보 권고안. URL: https://www.w3.org/TR/core-aam-1.2/
[CSS3-SELECTORS]
Selector 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 현행 표준. Anne van Kesteren. WHATWG. 현행 표준. URL: https://dom.spec.whatwg.org/
[HTML]
HTML 현행 표준. Anne van Kesteren; Domenic Denicola; Ian Hickson; Philip Jägenstedt; Simon Pieters. WHATWG. 현행 표준. URL: https://html.spec.whatwg.org/multipage/
[MathML3]
수학 마크업 언어 (MathML) 버전 3.0 2판. David Carlisle; Patrick D F Ion; Robert R Miner. W3C. 2014년 4월 10일. W3C 권고안. URL: https://www.w3.org/TR/MathML3/
[RFC2119]
RFC 요구 수준에서 사용되는 키워드. 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 후보 권고안. URL: https://www.w3.org/TR/SVG2/
[uievents-key]
UI Events KeyboardEvent key Values. Travis Leithead; Gary Kacmarcik. W3C. 2023년 5월 30일. W3C 후보 권고안. URL: https://www.w3.org/TR/uievents-key/
[webidl]
Web IDL 현행 표준. Edgar Chen; Timothy Gu. WHATWG. 현행 표준. URL: https://webidl.spec.whatwg.org/
[XML-NAMES]
XML 네임스페이스 1.0 (3판). 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. GNOME 프로젝트. URL: https://developer-old.gnome.org/libatspi/stable/
[ATK]
ATK - 접근성 툴킷. GNOME 프로젝트. URL: https://developer.gnome.org/atk/stable/
[AXAPI]
macOS용 NSAccessibility 프로토콜. Apple, Inc. URL: https://developer.apple.com/documentation/appkit/nsaccessibility
[HTML-ARIA]
HTML의 ARIA. Steve Faulkner; Scott O'Hara; Patrick Lauke. W3C. 2023년 5월 31일. W3C 권고안. URL: https://www.w3.org/TR/html-aria/
[IAccessible2]
IAccessible2. 리눅스 재단. 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]
IAccessibleEx 인터페이스. Microsoft Corporation. URL: https://docs.microsoft.com/en-us/windows/win32/winauto/iaccessibleex
[wai-aria-1.1]
접근성 풍부 인터넷 애플리케이션(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 작성 지침 1.2. Matthew King; JaEun Jemma Ku; James Nurthen; Zoë Bijl; Michael Cooper. W3C. 2022년 5월 19일. W3C 워킹 그룹 노트. URL: https://www.w3.org/TR/wai-aria-practices-1.2/
[WCAG21]
웹 콘텐츠 접근성 지침(WCAG) 2.1. Andrew Kirkpatrick; Joshue O'Connor; Alastair Campbell; Michael Cooper. W3C. 2018년 6월 5일. W3C 권고안. URL: https://www.w3.org/TR/WCAG21/
[XMLSCHEMA11-2]
W3C XML 스키마 정의 언어(XSD) 1.1 2부: 데이터타입. 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/