웹 접근성 마크를 취득해야하거나 지침가이드를 따라야하는 프로젝트가 아닌이상 접근성 개선작업이나 관련된 제작 업무를 해본 경험이 없었다. 하지만 기본적으로 숙지해놓고 있어야하는 웹접근성에
대해 무지할수없어 정리를 해보았다.
아직도 알아야 할 내용들이 많지만 , 오늘은 WAI-ARIA 에 대해 알아보도록 하겠다.
Web Accessibility Initiative – Accessible Rich Internet Applications
WAI는 W3C에서 웹 접근성을 담당하는 기관으로
ARIA는 RIA 환경의 웹 접근성에 대한 표준 기술 규격을 의미한다.
( RIA : 정적인 HTML, 단순한 자바스크립트 환경의 웹이 아닌 동적인 자바스크립트와 Ajax와 같은 기술을 사용한 환경에서 수준 높은 UX(User eXperience)를 제공하는 웹 애플리케이션 )
RIA(Rich Internet Applications)는 화려하고 편리한 웹 애플리케이션이지만 스크린리더와 같은 보조기술을 사용하는 장애인들이 접근하기에 취약한 부분이다.
스크린리더 및 보조기기 등에서 접근성 및 상호 운용성을 향상 시키기 위한 목적으로 나왔으며,
웹애플리케이션 역할(Role), 속성(Property) 정보를 추가하여 개선 할 수 있도록 제공하고 있다.
WAI-ARIA 를 이용해서 개발자가 의도한 유저 인터페이스 행동이나 구조적인 정보를
스크린 리더와 같은 보조 기술에 전달하여 시각/인지 장애인들에게 일반 사용자들과 동일한 정보를 제공하여 웹페이지 탐색을 돕는 UX를 제공한다.
<!-- X -->
<h1 role="button">바로가기</h1>
<!-- △ -->
<h1><span role="button">바로가기</span></h1>
<!-- ○ -->
<h1><button>바로가기</button></h1>
<button>
, <input>
요소들처럼 키보드 지원이 되는 요소를 <div>
와 WAI-ARIA로 작업해야 한다면, 동일하게 작업할 것<!-- html5 -->
<button>버튼<button>
<!-- div + WAI-ARIA -->
<div role="button" tabindex="0">버튼</div>
WAI-ARIA 지원 브라우저 현황 (출처 : https://caniuse.com/?search=wai-aria)
WAI-ARIA를 구성하는 역할, 속성, 상태 기능은 HTML 요소에 보충하여 사용되는데,
여기서 role에 대해 알아보겠다.
대체로 이미지나 텍스트를 봤을때 이곳을 누르면 탭이라는 것을 인지할 것이다.
탭버튼을 작업할때는 주로 <ul>
,<li>
,<a>
태그들로 탭을 구성하는데,
WAI-ARIA role="tabList", role="tab", role="tabpanel"로 스크린 리더기 사용자에게 더 정확한 정보를 제공할 수 있다.
<!-- 일반적인 작업 -->
<ul class="btnList">
<li>
<a href="#" class="on">정보1</a>
</li>
<li>
<a href="#">정보2</a>
</li>
<li>
<a href="#">정보3</a>
</li>
</ul>
<div class="wrap-tab-contents">
<div id="tabpanel01" class="tab-contents on"><p>정보1 콘텐츠</p></div>
<div id="tabpanel02" class="tab-contents"><p>정보2 콘텐츠</p></div>
<div id="tabpanel03" class="tab-contents"><p>정보3 콘텐츠</p></div>
</div>
<!-- WAI-ARIA 적용 -->
<ul class="btnList" role="tabList">
<li>
<a href="#" id="tab01" class="on" role="tab" aria-selected="true" aria-controls="tabpanel01">정보1</a>
</li>
<li>
<a href="#" id="tab02" role="tab" aria-selected="false" aria-controls="tabpanel02">정보2</a>
</li>
<li>
<a href="#" id="tab03" role="tab" aria-selected="false" aria-controls="tabpanel03">정보3</a>
</li>
</ul>
<div class="wrap-tab-contents">
<div id="tabpanel01" class="tab-contents" role="tabpanel" aria-labelledby="tab01" tabindex="0">
<p>정보1 콘텐츠</p>
</div>
<div id="tabpanel01" class="tab-contents" role="tabpanel" aria-labelledby="tab02" tabindex="0" hidden="true">
<p>정보2콘텐츠</p>
</div>
<div id="tabpanel01" class="tab-contents" role="tabpanel" aria-labelledby="tab03" tabindex="0" hidden="true">
<p>정보3 콘텐츠</p>
</div>
</div>
위 코드를 NVDA(NonVisual Desktop Access)라는 스크린 리더기 프로그램으로 들어보면 의미가 다르게 전달되는 것을 알 수 있는데,
결과
탭 메뉴 WAI-ARIA 적용 전
탭 메뉴 WAI-ARIA 적용 후
시각 정보를 이용할 수 없는 사용자는 만약 검색이라는 안내 텍스트 없이 버튼을 나타낼 때 어떤 버튼인지 알 수가 없다.
- 폼요소의 필수 요소와 관련된 aria-required
- 텍스트 레이블 없이 이미지로 표현될 때 정보를 부여하여 설명해주는 aria-label
- 업데이트된 정보의 상황 aria-live
예를 들어 '검색' 이라는 아이콘을 안내 텍스트 없이 나타낸다면, 시각 정보를 이용할 수 없는 사용자는 어떤 버튼인지 알 수 없다.
대체텍스트를 이용할 수 있지만, aria-label을 이용하여 버튼 요서에 검색이라느 설명을 추가 할 수 있다.
<button class="btn_search"></button>
<!-- 숨김 텍스트 이용 -->
<button class="btn_search">
<span class="hidden">검색</span>
</button>
<!-- WAI-ARIA 적용 -->
<button class="btn_search" aria-label="검색"></button>
aria-expanded
, aria-selected
aria-invalid
<ul class="btnList">
<li>
<button id="accordion01" aria-controls="accordion-region01"
aria-expanded="true" >munju_dev</button>
<div id="accordion-region01" role="region" aria-labelledby="accordion01">munju_dev</div>
</li>
<li>
<button id="accordion02" aria-controls="accordion-region02">
UX Engineer</button>
<div id="accordion-region02" role="region" aria-labelledby="accordion02">UX Engineer</div>
</li>
</ul>
<style>
li {
background-image: url(arrow_down.png);
}
li button[aria-expanded='true'] {
background-image: url(arrow_up.png);
}
</style>
웹접근성을 준수해서 코드를 작성하기 위해서는 앞으로 더 많이 웹접근성 지침 가이드나 규칙을
알아야겠다고 느꼈다.
추후에 계속 학습된 내용을 포스팅하도록 하겠다.
참고한곳
https://www.biew.co.kr/entry/WAI-ARIA-%EC%9B%B9%ED%8D%BC%EB%B8%94%EB%A6%AC%EC%8B%B1,
https://y00eunji.tistory.com/entry/HTML-WAI-ARIA-aria-hidden#article-1--%EC%82%AC%EC%9A%A9-%EC%9D%B4%EC%9C%A0,
https://story.pxd.co.kr/1588,
https://nuli.navercorp.com/community/article/1132879,
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques
이미지출처: https://story.pxd.co.kr/1588