WAI-ARIA의 목적
마크업에 역할, 속성, 상태 정보를 추가하여 스크린기기 및 보조 기기에서 접근성 및 상호 운용성을 향상시키고 보다 나은 사용자 경험을 제공하기 위함이다.
ARIA의 기능 - 역할(Role)
- 특정 요소(Element)에 역할을 정의하는것
역할(Role) 작성 규칙
HTML5 섹션 관련 요소와 ARIA Role
HTML5섹션을 div로 마크업할 때, div 요소에 역할(role)을 정의해준다.
Landmark Role | HTML5 섹션 관련 요소 |
---|---|
div role=”banner” | header |
div role=”navigation” | nav |
div role=”main” | main |
div role=”complementary” | aside |
role=”form” | form |
role=”contentinfo” | footer |
div role=”alertdialog” | 대화상자, 팝업 |
role=”button” | 버튼 |
ARIA의 기능 - 속성(Properties), 상태(States)
- 요소(Element)가 기본적으로 갖고 있는 특징이나 상황
- ‘aria - *’ 접두어를 가진다.
속성(Properties) 작성 규칙
속성(Properties) | 의미 |
---|---|
input aria-required=”true” | 필수 항목 속성 |
input aria-label=”그룹제목” | 그룹 제목 속성(그룹에 대한 제목정의) |
input aria-labeledby=”참조그룹ID” | label for과 비슷한 역할의 속성 |
input aria-describedby=”reference” | 추가 설명 속성(경고텍스트) |
aria-hidden=”true” | 읽지않음 |
상태(State) 작성 규칙
상태(State) | 의미 |
---|---|
aria-expanded=”true” | 확장되어 있는 상태의 탭패널 |
aria-invalid=”true” | 오류가 발생한 상태의 입력상자 |
ARIA 사용시 주의할점
- ARIA Role과 HTML5를 중복해서 사용하지 않는다.
- HTML Element의 기능 변경이 제한된다.
ex) h1 role=”button” - 원래의 의도를 바꿔쓴 잘못된 예 - 키보드 접근이 보장되어야 한다.
ex) div role=”button” tabindex=”0” - div 태그로만 구성된 코드를 개선하기 위해 사용한다.
웹접근성 미준수 개선방법
1.로그인 화면에서 경고텍스트를 읽지 않는 경우
1 | <label for="user-id">아이디</label> |
2. CSS IR기법을 이용한 태그 또는 빈 태그일 경우
1 | <a href="#"><span role="img" aria-label="대체텍스트-Connect via Facebook"></span></a> |