이 글은 boostcourse의 '웹 UI 개발'을 수강하고 적는 글입니다.
웹 접근성 : 모든 사용자가 모든 기기에서 웹에 접근할 수 있도록 하는 것
alt
로 대체 텍스트 제공<img src="160314.png" alt="주식수수료 평생무료 비대면계좌개설 신규/온라인/유관기관 제비용 제외 2018년 12월 31일까지 선물/옵션 1년 무료, 신용이자 연 3.5% 60일 우대">
<img src="160314.png" alt="">
<p class="blind">
주식수수료 평생무료 비대면계좌개설 신규/온라인/유관기관 제비용 제외
2018년 12월 31일까지 선물/옵션 1년 무료, 신용이자 연 3.5% 60일 우대
</p>
<img src="graph.png" alt="" />
<table class="blind">
<caption>...</caption>
<thead>
<tr>
<th scope="col">년도</th>
<th scope="col">학과</th>
<th scope="col">지원 수</th>
</tr>
</thead>
<tbody>
<tr>
<td>2003</td>
<td>언어학</td>
<td>10200명</td>
</tr>
...
</tbody>
</table>
<img src="btn_next.png" alt="다음 콘텐츠 보기">
<a href="#" class="link_next">다음 콘텐츠 보기</a>
.link_next{
background-image:url('./img/icon_next.png');
}
<img src="123456.jpg" alt="">
<img src="brown_img_5.png" alt="미안해하는 브라운">
<a href="http://www.naver.com">
<img src="qr_code.png" alt="http://www.naver.com 바로 가기 QR코드">
</a>
<a href="…">
<img src="thumb01.jpg" alt="">
<span>웨딩 사진을 모티브로 만든 도일리 #프랑스자수</span>
</a>
<img src="text.jpg" alt="보안 문자">
지시 사항은 모양, 크기, 위치, 방향, 색, 소리 등에 관계 없이 인식될 수 있어야 한다.
텍스트 콘텐츠와 배경 간의 명도 대비는 4.5대 1 이상이어야 한다. (확대 가능한 브라우저에서 최소 3:1 이상)
자동으로 소리가 재생되지 않아야 한다.
불가피하게 제공할 경우 해결 방안
- 3초 내에 정지
- ESC 키 선택 시 정지
- 소스 상 가장 먼저 제공하여 정지 기능 실행 가능하도록 구현
이웃한 콘텐츠는 구별될 수 있어야 한다.
1. 테두리 이용
2. 구분선 삽입
3. 서로 다른 무늬
4. 배경색 간의 병도대비
5. 줄 간격 및 글자 간격 조절
6. 기타 콘텐츠를 시각적으로 구분할 수 있는 방법을 통해 구분
모든 기능은 키보드만으로도 사용할 수 있어야 한다.
이미지 또는 초점을 받을 수 없는 요소에 마우스 이벤트 적용
-> 마우스로 조작 가능한 컨트롤의 경우 되도록 a링크나 버튼과 같이 초점을 받을 수 있는 요소로 구현
a링크 요소에 href속성이 없는 경우
-> 마우스로는 조작이 가능하지만 키보드 접근은 불가능. 따라서 a링크에는 href 속성을 반드시 제공
a링크에 href속성은 있지만가 적용이 되어 있는 경우
-> 초점을 초기화 시켜 이후 콘텐츠로 키보드 접근이 불가능하므로 제거하고 구현
키보드에 의한 초점은 논리적으로 이동해야 하며, 시각적으로 구별할 수 있어야 한다.
tabindex
추가적으로 tabindex 속성을 이용하여 초점 이동을 강제로 변경하는 경우도 오류로, 기본적으로 마크업이 논리적으로 이루어져 있다면 굳이 tabindex를 사용할 이유는 없다.
"hideFocus"적용하거나 CSS에서 "outline:none"처리를 하거나를 사용하면 전부 초점이 보이지 않게 되므로 주의
사용자 입력 및 컨트롤은 조작 가능하도록 제공되어야 한다.
시간제한이 있는 콘텐츠는 응답시간을 조절할 수 있어야 한다.
자동으로 변경되는 콘텐츠는 움직임을 제어할 수 있어야 한다.
초당 3~50회 주기로 깜빡이거나 번쩍이는 콘텐츠를
제공하지 않아야 한다.
콘텐츠의 반복되는 영역은 건너뛸 수 있어야 한다.
페이지, 프레임, 콘텐츠 블록에는 적절한 제목을 제공해야 한다.
링크 텍스트는 용도나 목적을 이해할 수 있도록 제공해야 한다.
주로 사용하는 언어를 명시해야 한다.
ex)
사용자가 의도하지 않은 기능(새 창, 초점에 의한 맥락 변화 등)은 실행되지 않아야 한다.
새 창 제공 방법
<a href="…">이용약관<span class="blind">새 창</span></a> <a href="…" title="새 창">이용약관</a> <a href="…" target="_blank">이용약관</a>
콘텐츠는 논리적인 순서로 제공해야 한다.
제목 셀과 내용 셀 구분
제목 셀은 th로 내용 셀은 td로 마크업
제목 셀이 가로, 세로로 있는 경우 scope로 행 제목인지 열 제목인지 구분 가능하도록 제공
사용자 입력에는 대응하는 레이블을 제공해야 한다.
<label for="user_id">아이디</label>
<input type="text" id="user_id">
입력 오류를 정정할 수 있는 방법을 제공해야 한다.
마크업 언어의 요소는 열고 닫음, 중첩 관계 및 속성 선언에 오류가 없어야 한다.
콘텐츠에 포함된 웹 애플리케이션은 접근성이 있어야 한다.
윈도우
- 센스리더 베이직 6.5
- NVDA Version 2018.4
MAC
- VoiceOver
Android
- Talkback
- Voice Assistant
iOS
- VoiceOverr