웹 접근성(Web Accessibility)
장애인, 고령자 등이 웹 사이트에서 제공하는 정보에 비장애인과 동등하게 접근하고 이해할 수 있도록 보장하는 것.
장점
사용자 층의 확대
장애인, 고령자 등 정보 소외 계층도 사이트를 자유롭게 이용할 수 있다. 따라서 사이트의 이용자를 늘릴 수 있고 새로운 고객층을 확보할 수 있다.
다양한 환경 지원
정보 소외 계층이 아니더라도 운전중인 경우, 마우스를 사용할 수 없는 경우 등 정보에 접근하기 어려운 상황일때도 웹사이트를 자유롭게 사용할 수 있으므로 서비스의 사용 범위가 확대된다.
사회적 이미지 향상
기업이 정보 소외계층을 위한 사회 공헌 및 복지 향상에 힘쓰고 있음을 보여줄 수 있다.
1. 웹 콘텐츠 접근성 지침
1) 인식의 용이성(Perceivable) - 모든 콘텐츠는 사용자가 인식할 수 있어야 한다.
(1) 적절한 대체 텍스트 : 텍스트가 아닌 콘텐츠는 그 의미나 용도를 이해할 수 있도록 대체 텍스트를 제공
시각적으로 화면을 인식할 수 없는 사용자 또는 상황을 대비해 alt 속성을 사용해 대체 텍스트를 제공한다.
<img src=”music.jpg” alt=”2023 윤하 앵콜 콘서트” />
대체 텍스트를 제공하지 않는 경우
- 배경이나 의미 없는 이미지의 경우
정보 전달이 필요한 콘텐츠에 빈 문자열을 입력할 경우 해당 콘텐츠의 존재를 스크린 리더가 인식하지 못함으로 주의 - 인접 요소의 내용에서 이미지의 정보를 충분히 인지할 수 있는 경우
이 경우 대체 텍스트 작성시 이미지 정보를 중복 제공하게 됨
(2) 자막 제공 : 멀티미디어 콘텐츠에는 자막, 원고 또는 수화를 제공
- 자막을 포함한 동영상 사용
- 자막을 지원하는 멀티미디어 플랫폼 사용
- 비디오 요소 내부에 <track> 요소를 사용하여 자막 파일 불러오기
WebVTT(Web Video Text Tracks, .vtt 파일) 또는 Timed Text Markup Language(TTML)형식을 사용<video ... > <track src="자막.vtt" kind="captions" /> </video>
- 자막을 제공하기 어려운 경우 대본이나 수어를 제공하기
(3) 색에 무관한 콘텐츠 인식 : 콘텐츠는 색에 관계 없이 인식될 수 있어야 함
색약이나 색맹 등 색을 인지하는데 어려움이 있는 사용자의 경우 색으로 구분되는 콘텐츠의 파악이 어려움으로, 색이 아닌 패턴, 굵기, 모양, 테두리 등의 다양한 방법으로 구분할 수 있도록 콘텐츠를 제공해야 한다.
- 콘텐츠에 테두리 설정하기
- 콘텐츠에 레이블 달기
(4) 명확한 지시사항 제공 : 지시사항은 모양, 크기, 위치, 방향, 색, 소리 등에 관계없이 인식될 수 있어야 함
- 지시사항이 특정 모양이나 크기, 위치나 방향, 색상 등을 가리켜 지시하고 있다면 시각적으로 화면을 인식할 수 없는 사용자는 지시사항을 정확히 이해하기 어려울 수 있으므로 해당 버튼을 설명하는 대체 텍스트를 작성해야 한다.
- 소리를 통해 지시하는 경우, 청각 장애를 가진 사용자가 지시사항을 제대로 인지할 수 없음으로 시각적 피드백을 함께 제공해야 한다.
(5) 텍스트 콘텐츠 명도 대비 : 텍스트 콘텐츠와 배경 간의 명도 대비는 4.5 대 1 이상
- 명도 대비가 충분히 확보되지 않은 경우 텍스트를 읽기 어려움.
- 콘텐츠와 배경 간의 명도 대비가 3대 1까지 허용되는 경우
- 텍스트가 18pt 또는 굵은(bold) 14pt 이상일 경우
- 확대 가능한 페이지인 경우
- 비활성화 된 콘텐츠인 경우
- 장식 목적의 콘텐츠인 경우
(6) 자동 재생 금지
동영상, 오디오, 음성, 배경 음악 등 모든 종류의 소리는 자동 재생이 금지된다. 스크린 리더 사용자의 경우 자동재생된 소리가 겹쳐 페이지의 내용을 파악하기 어려워지기 때문.
불가피하게 자동 재생을 제공해야 하는 경우에는 다음 기능을 포함하여 해결
- 가장 먼저 위치시켜 정지할 수 있게 구현하기
- ESC를 눌러 정지
- 3초 내에 정지
(7) 콘텐츠 간 구분
테두리, 구분선, 무늬, 명도대비, 간격 등을 사용해 이웃한 콘텐츠가 구별될 수 있도록 함
2) 운용의 용이성(Operable) - 사용자 인터페이스 구성요소는 조작 가능하고 내비게이션 할 수 있어야 함
(1) 키보드 사용 보장 : 모든 기능은 키보드만으로도 사용할 수 있게
모든 사용자가 마우스를 사용할 수 있는 것은 아니므로 키보드만으로도 제공하는 기능들을 모두 사용할 수 있도록 해야함. 키보드 조작시 페이지를 빠져나오지 못하는 경우가 없도록 주의.
(2) 초점 이동 : 키보드에 의한 초점은 논리적으로 이동하고 시각적으로 구별되어야 함
일반적으로 왼쪽-> 오른쪽, 위쪽-> 아래쪽으로 이동.
스크린 리더 사용자와 키보드 사용자도 이 순서로 웹페이지를 탐색할 수 있도록 마크업을 구성한다.
(3) 조작 가능 : 사용자 입력 및 컨트롤은 조작 가능하도록 제공
미세한 조작이 어려운 상황에서도 원하는 요소를 선택하여 조작할 수 있도록 함.
- 컨트롤의 대각선 길이는 6mm 이상
: 버튼 등 컨트롤이 너무 작은 경우 제대로 선택하기 힘듬 - 컨트롤 간 1픽셀 이상의 여백
: 컨트롤이 연달아 있는 경우 여백을 주어 구분
(4) 응답 시간 조절 : 시간제한이 있는 콘텐츠는 응답시간이 조절 가능해야 함
시간 제한이 있는 콘텐츠를 넣을 경우 아래의 내용을 제공해야 함
- 충분한 시간
- 종료 안내
- 조절 수단
페이지가 자동 전환되는 경우 시간을 연장하거나 정지할 수 있는 수단을 제공해야함.
특히 스크린 리더나 키보드 사용자도 이 수단을 인지할 수 있을만큼 충분한 시간이 제공되어야 한다.
(5) 정지 기능 제공 : 자동으로 변경되는 콘텐츠는 움직임 제어가 가능해야 함
- 자동 변경 슬라이드 (캐러셀 슬라이드)
: 이전, 다음, 정지 기능을 제공. 정지버튼이 없다면 마우스 호버 / 키보드 접근시 정지되도록 구현 - 자동 변경 콘텐츠
: 자동으로 변경되는 콘텐츠는 이전, 다음, 정지 기능이 없더라도 접근했을 때 모든 콘텐츠를 확인할 수 있도록 구현
(6) 깜빡임과 번쩍임 사용 제한 : 초당 3~50회 주기로 깜빡이거나 번쩍이는 콘텐츠 제공 하지 않기
불규칙적으로 깜빡이는 화면은 눈에 피로를 유발하고 심한 경우 광과민성 발작을 일으킬 수 있음
깜빡이거나 번쩍이는 콘텐츠를 제공할 경우 아래 사항들 중 하나를 충족하도록 한다.
- 번쩍이는 콘텐츠가 차지하는 면적이 전체 화면의 10% 미만이어야 함
- 사전에 경고하고 중단할 수 있는 수단을 제공해야 함
- 시간을 3초 미만으로 제한해야 함
(7) 반복 영역 건너뛰기 : 콘텐츠의 반복되는 영역은 건너뛸 수 있어야함
스크린 리더를 사용하는 경우 반복되는 요소는 모두 읽게 됨으로 반복 영역을 건너뛰고 메인 콘텐츠로 바로 이동할 수 있는 방법을 제공해야함
- 마크업상 최 상단에 위치
- 건너뛰기 링크가 페이지 내에 존재
- 키보드 접근 시 화면에 노출
- "하단 메뉴로 바로 가기"와 같은 위치 정보 제공은 부적절
- 가장 앞에 건너뛰기 링크 제공하기
- 메뉴를 필요할 때만 열 수 있도록 만들기
(8) 제목 제공 : 페이지, 프레임, 콘텐츠 블록에는 적절한 제목을 제공
- 적절한 제목 사용시 사용자가 원하는 내용에 빠르게 접근 가능
- 특수문자는 1개까지만 사용. 시각적 목적으로 특수문자를 반복사용할 경우 스크린 리더에서 불필요한 음성을 반복 출력함
(9) 적절한 링크 텍스트 : 용도나 목적을 이해할 수 있는 링크 텍스트
- 이미지에 링크가 걸려있는 경우, 링크를 설명하는 대체 텍스트를 작성
- 비어있는 링크가 없어야 함
3) 이해의 용이성(Understandable) : 콘텐츠는 이해할 수 있어야 한다
(1) 기본 언어 표시 : 주 사용 언어 명시
HTML 요소에 lang 속성을 사용. 페이지 내에 다른 언어가 존재하는 경우 해당 요소에 lang 속성을 표기한다.
<html lang="ko">
(2) 사용자 요구에 따른 실행 : 사용자가 의도하지 않은 기능은 실행되지 않아야 함
- 페이지 진입 시 팝업이 뜨지 않게 하고, 화면을 가리는 모달창이 있는 경우 가장 상단에 제공하여 제어할 수 있도록함
- 스크린 리더 사용자는 새 창이 떴을때 이를 인지하지 못하고 기존 페이지를 계속 보고 있다고 생각할 수 있음으로 새 창임을 알려줄 수 있어야 한다.
- 링크 요소 안에 보이지 않는 요소를 넣어 새 창에 접근하게 됨을 알려주기
<a href="...">페이지<span class="blind">새 창</span></a>
- 링크 요소에 title 속성으로 새 창 작성하기
<a href="..." title="새 창">페이지</a>
- 링크 요소에 target="_blank" 속성을 넣기
<a href="..." target="_blank">페이지</a>
- 링크 요소 안에 보이지 않는 요소를 넣어 새 창에 접근하게 됨을 알려주기
(3) 콘텐츠 선형 구조 : 논리적인 순서의 콘텐츠 제공
제목 - 내용 순서로 제공되어야 함.
탭의 경우, 탭 제목 다음으로 탭 내용이 오도록 마크업을 구성해야 한다.
// X
<div>Tab 1</div>
<div>Tab 2</div>
<div>Tab 1 Contents</div>
<div>Tab 2 Contents</div>
// O
<div>Tab 1</div>
<div>Tab 1 Contents</div>
<div>Tab 2</div>
<div>Tab 2 Contents</div>
(4) 표의 구성
- 테이블 요소 내에 caption 요소를 사용해서 표에 제목 제공
- 제목 셀과 데이터 셀이 구분되도록 작성. 제목은 th, 데이터는 td를 사용
- 구조가 복잡할 경우 최대한 간소화 하거나 scope / id, headers 속성을 사용하여 작성
(5) 레이블 제공 : 입력에 대응하는 레이블 제공
- input 요소에는 value나 placeholder 속성만 설정하는 것은 적합하지 않음
- id를 설정하고 label 요소의 for 속성으로 연결해줌
- 또는 title 속성 사용하기
- 또는 WAI-ARIA의 aria-label 속성을 사용. 단, WAI-ARIA의 경우 꼭 필요한 경우가 아니라면 사용하지 않는다
(X) <input type="text" placeholder="아이디" />
(O) <label for="user_id">아이디</label>
<input id="user_id" type="text" placeholder="아이디" />
(O) <input type="text" title="아이디" placeholder="아이디" />
(O) <input type="text" aria-label="아이디" placeholder="아이디" />
(6) 오류 정정
- 작성중 / 제출시 오류 발생했을때 입력한 내용이 사라지지 않고 유지되어야 함
- 오류 발생시 사용자에게 발생 원인을 안내해야함
- 오류 발생시 발생 위치로 초점이 이동해야함
4) 견고성(Robust) : 미래의 기술로도 접근할 수 있도록 견고하게 만들어야함
(1) 마크업 오류 방지
요소의 열고 닫음, 중첩 관계 및 속성 선언에 오류가 없어야 함.
(2) 웹 애플리케이션 접근성 준수
콘텐츠에 포함된 웹 애플리케이션도 접근성을 갖춰야한다. 접근성을 갖추지 못한 경우 대체 수단이나 대체 텍스트를 제공해야함.
WAI-ARIA
WAI에서 발표한 RIA 환경에서의 웹 접근성 기술 규격.
HTML 요소에 추가적으로 의미를 부여해서 보조적으로 사용시 웹 접근성을 향상시킬 수 있다.
주로 다음과 같은 상황에서 사용된다.
- 시맨틱 요소만으로 의미를 충분히 부여할 수 없는 상황
- 시맨틱한 HTML을 최우선으로 작성 후 WAI-ARIA는 보조적인 역할로 사용함
- AJAX를 사용하는 상황 등 동적인 콘텐츠에서 변경된 영역에 대한 정보를 전달할때
💡 용어 설명
WAI(Web Accessibility Intiative) : 웹표준을 정하는 W3C의 웹접근성 담당 기관
ARIA(Accessible Rich Internet Applications) : 웹접근성을 갖추기 위한 기술
RIA(Rich Internet Applications) : 별도 설치 없이 웹브라우저를 통해 사용할 수 있는 편리성 + 빠른 반응의 인터페이스를 가진 웹애플리케이션. SPA를 의미하는 경우가 많음.
사용법
HTML 태그 내부에 attribute(속성)을 추가하여 사용한다.
- 역할(role) : HTML 요소의 역할 정의
- 요소 종류와 역할이 서로 맞지 않을때 사용
- HTML 요소로 내용을 파악할 수 있다면 사용하지 않아도 됨
- 시맨틱 요소의 의미를 변경해서는 안됨
- 상태(state) : 요소의 현재 상태
- 속성(property) : 요소의 특징 정의
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques
Using ARIA: Roles, states, and properties - Accessibility | MDN
ARIA defines semantics that can be applied to elements, with these divided into roles (defining a type of user interface element) and states and properties that are supported by a role. Authors must assign an ARIA role and the appropriate states and proper
developer.mozilla.org
https://www.w3.org/TR/html-aria/
ARIA in HTML
Element with contenteditable=true or element without contenteditable attribute whose closest ancestor with a contenteditable attribute has contenteditable="true". Note This is equivalent to the isContentEditable IDL attribute. aria-readonly="false" Authors
www.w3.org
참고
https://nuli.navercorp.com/guideline/s01/g01
NULI
모두가 함께 누리는! 다양한 사용자들과 함께 정보에 접근하고, 기술의 혜택을 누릴 수 있는 지침을 소개합니다. Make it More Accessible! 1. 적절한 대체 텍스트 제공 텍스트 아닌 콘텐츠는 그 의미나
nuli.navercorp.com
'study > TIL' 카테고리의 다른 글
23.03.07 - Cookie, Session (0) | 2023.03.07 |
---|---|
23.03.06 - TCP/IP, 네트워크 계층 모델, HTTP, HTTPS (0) | 2023.03.06 |
23.02.28 - 웹표준, SEO (0) | 2023.02.28 |
23.02.27 - Redux Middleware, Redux-Thunk (0) | 2023.02.27 |
23.02.24 - Redux (0) | 2023.02.24 |