웹 접근성이 무엇인지, 우리나라 웹 접근성 실태는? 웹 접근성 향상 방법은?
소리를 들을 수 없거나, 화면을 볼 수 없다면? 정보 접근에 제한을 받는다.
=> 이런 상황을 해결하고자 하는 것이 '웹 접근성'
웹 접근성
국내에서는 대부분 웹 접근성에 대한 인식이 낮고, 잘 지켜지지 않는다.
아마존같은 해외 쇼핑몰 사이트는, 상품의 기본 정보가 모두 텍스트로 작성되어 있다. 또한 페이지에 첨부되어 있는 모든 이미지에 이미지를 설명하는 텍스트가 함께 작성되어 있다. 시력이 좋지 않아도 스크린 리더를 사용하면 화면상 모든 요소의 정보에 쉽게 접근할 수 있도록 구성되어 있다.
웹 접근성을 잘 확보했는지 판단할 기준 : 웹 콘텐츠 접근성 지침
: 모든 콘텐츠는 사용자가 인식할 수 있어야 한다.
1. 적절한 대체 텍스트
: 텍스트가 아닌 콘텐츠는 그 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공해야 한다.
alt 속성을 이용해 대체 텍스트를 제공한다. (인식할 필요 없는 경우엔 alt값으로 빈 문자열)
<img src="이미지 주소" alt="대체 텍스트" />
<video ... >
<track src="자막.vtt" kind="captions" />
</video>
2) 콘텐츠에 레이블 달기
명확한 지시사항 제공
: 지시사항은 모양, 크기, 위치, 방향, 색, 소리 등에 관계없이 인식될 수 있어야 한다.
텍스트 콘텐츠 명도 대비
: 텍스트 콘텐츠와 배경 간의 명도 대비는 4.5 대 1 이상이어야 한다.
자동 재생 금지
사용자 인터페이스 구성요소는 조작 가능하고 내비게이션 할 수 있어야 한다.
응답 시간 조절
정지 기능 제공
: 자동으로 변경되는 콘텐츠는 움직임을 제어할 수 있어야 한다.
깜빡임과 번쩍임 사용 제한
: 초당 3~50회 주기로 깜빡이거나 번쩍이는 콘텐츠를 제공하지 않아야 한다.
반복 영역 건너뛰기
콘텐츠는 이해할 수 있어야 한다.
<html lang = "ko">
<a href="...">페이지<span class="blind">새 창</span></a>
2) 링크 요소에 title 속성으로 새창 작성하기
<a href="..." title="새 창">페이지</a>
3) target="_blank" 속성을 넣기
<a href="..." target="_blank">페이지</a>
콘텐츠 선형 구조
: 콘텐츠를 논리적인 순서로 제공
표의 구성
: 표는 이해하기 쉽게 구성
<label for="user_id">아이디</label>
<input id="user_id" type="text" title="아이디" placeholder="아이디">
<input type="text" aria-label="아이디" placeholder="아이디" />
웹 콘텐츠는 미래의 기술로도 접근할 수 있도록 견고하게 만들어야 한다.
WAI: Web Accessibility Initiative : 웹 접근성을 담당하는 기관
ARIA: Accessible Rich Internet Applications : 웹 접근성을 갖추기 위한 기술
간략히 말해서, 웹 접근성을 향상시키는 방법 중 하나다.
시맨틱 HTML을 사용하는 것만으로도 웹 접근성을 향상시킬 수 있는데 WAI-ARIA는 HTML 요소에 추가적으로 의미를 부여할 수 있다.
시맨틱 요소만으로 충분히 의미를 부여한다면 WAI-ARIA를 사용하지 않는다.
SPA 처럼 AJAX를 사용하느 상황, 즉 새로고침 없이 페이지의 내용이 바뀌는 상황에서도 변경된 영역에 대한 정보를 전달해줄 수 있다.
WAI-ARIA는 HTML 태그 내부에 속성을 추가함으로써 의미를 부여한다.
WAI-ARIA속성 3가지
<div role="tabList">
<li role="tab" aria-selected="true">Tab1</li>
<li role="tab" aria-selected="false">Tab2</li>
<li role="tab" aria-selected="false">Tab3</li>
</div>
<div role="tabpanel">Tab menu ONE</div>
<div role="tabpanel">Tab menu TWO</div>
<div role="tabpanel">Tab menu THREE</div>
<button aria-label="닫기"/> <img src="X.png" /> </button>
<button aria-label="검색"/> <img src="돋보기.png" /> </button>
2) aria-live
해당 요소가 실시간으로 내용을 갱신하는 영역인지 표시한다.
즉, 브라우징 도중에 내용을 띄우는 alert, modal, dialog 와 같은 역할을 하는 요소이거나, AJAX 기술을 사용하여 실시간으로 내용을 갱신하는 영역에 사용하는 속성입니다.
polite : 스크린 리더가 현재 읽고있는 내용을 모두 읽고나서 갱신된 내용을 사용자에게 전달
assertive : 스크린 리더가 현재 읽고있는 내용을 중단하고 갱신된 내용을 바로 사용자에게 전달
WAI-ARIA 에 더 알고싶다면?
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques
https://www.w3.org/TR/html-aria/