어떤 운영체제나 브라우저에서든 동일한 컨텐츠 를 볼 수 있도록 웹페이지를 만들 때 지켜야 하는 규칙.
1990년 ~ 2000년대 초반까지 넷스케이프, 인터넷 익스프로러등 다양한 브라우저들이 나타나기 시작. 그로 인해 과도한 경쟁이 발생
=> 해당 브라우저에서만 사용 가능한 기능들이 나타나기 시작
=> 여러 버전의 페이지를 만들어야 함.
이를 해결하기 위해 W3C라는 공식 웹 표준 기구가 설립되었고
이를 통해 각 브라우저에서도 동일한 컨텐츠를 볼 수 있는 환경이 조성됨
누구나 신체적, 환경적 조건에 관계없이 인터넷을 통해 정보에 접근하고 이용할 수 있는지에 대한 정도
한국형 웹 콘텐츠 접근성 지침 2.2 의 웹 문서 설계 시 고려해야 할 이용자 유형
또한, 실제 법률에서도 이를 명시하고 있음.
Accessible Name : 스크린 리더가 요소를 포커스 했을 때 읽어주는 내용
우선 순위 : Author > Contents
<div aria-label='가지마'>잘 가</div>;
위의 HTML요소를 스크린리더는 과연 뭐라고 읽을까?
Author : 가지마 > Contents : 잘 가
<div onClick={() => navigate('/register')}>
<span>+</span>
</div>
위와 같은 요소를 비장애인이 보았을때는 무언가를 추가하는 요소라는것을 알수 있다. 하지만, 스크린리더로 들었을때 '더하기' 라는 음성만 나오므로 장애인이 들었을 경우 무엇인지 알아 차리기 쉽지 않다. 따라서 다음과 같이 변경하자
<button aria-label='카드 추가' onClick={() => navigate('/register')}>
<span aria-hidden='true'>+</span>
</button>
aria-label 이란 ? HTML 요소에 간단한 설명을 제공하는 속성
aria-hidden 이란 ? 사용자에게 불필요한 정보를 스크린 리더가 읽지 않게 하는 속성
aria-live 이란 ? 웹 페이지에서 실시간으로 변화하는 컨텐츠를 사용자에게 즉시 전달하기 위해 사용하는 속성 (off, polite, assertive)
이렇게 변경을 해주면 스크린리더는 카드추가 버튼 이라고 읽게 됨.
또한 위의 예제에서는 aria-label이 있기 때문에 더하기라고 읽지 않지만 만약 없을 경우를 대비해 aria-hidden='true' 속성을 주도록 하자.
스크린 리더가 alt 속성이 없는 이미지를 포커스 했을 때 해당 이미지의 파일명을 읽게 됨.
=> 사용자는 해당 이미지의 어떤 정보가 있는지 해석할 수 없음.
<img src="이미지 경로" alt="이미지에 대한 설명" />
위와 같이 img 태그에는 alt 속성을 추가시켜주도록 하자.
📌 아무리 스크린리더가 읽을 필요가 없는 이미지여도 alt 속성을 넣어주어야 스크린리더가 파일명을 읽지 않음.
한국형 웹 컨텐츠 접근성 지침에 따르면 텍스트가 아닌 컨텐츠는 그 의미나 용도를 인식할 수 있도록 대체 텍스트를 제공해야된다고 나와있음.
그렇다면 대체 텍스트는 어떻게 작성해야할까?
웰컴 키트가 있다고 가정을 할 때
'쉽고 명확하고 위트있게' 라는 문구가 적혀있는 흰색 뚜껑의 플라스틱 물컵, 노크식 검정색 볼펜 등등
사용자에게 유의미한 정보를 주어야 함. 그래서 사용자가 어떻게 해석을 할 수 있는지 고민을 해보고 대체 텍스트를 제공해야 함.
사용자가 무언가를 추가하는 버튼을 눌러서 모달이 열렸다고 가정했을 때 포커스가 모달 안으로 이동하지 않아서
스크린 리더는 밖에 있는 요소를 읽게 되는 경우가 있음.
=> 사용자는 모달이 열렸음에도 그 사실조차 알 수가 없음.
<-- 추가 모달 -->
<div class="modal">
{children}
</div>
위와 같이 div태그를
<-- 추가 모달 -->
<dialog class="modal">
{children}
</dialog>
dialog 태그로 바꿔주도록 하자.
<dialog>
가 제공하는 접근성 기능
<dialog>
사용 시 알아두어야 할 것
<p>* 최소 8자리 이상, 하나 이상의 숫자 및 특수문자</p>
위와 같은 에러메세지 태그를 그냥 적기만하면 스크린 리더가 에러 메세지가 나왔음에도 읽지 않음.
<p aria-live='assertive'>* 최소 8자리 이상, 하나 이상의 숫자 및 특수문자</p>
따라서 즉시 알려주기 위해서 aria-live 속성을 추가해주자.
aria-live의 속성값으로는 off, polite, assertive가 있음.
off의 경우에는 기본값으로 컨텐츠가 변해도 사용자에게 알려주지 않음.
polite의 경우 컨텐츠가 변화했을 때 바로 알려주는 것이 아니라 스크린 리더의 작업이 끝난 이후 알려줌.
그리고 assertive의 경우 스크린리더의 작업을 중단하고 즉시 변화한 내용을 읽어줌.
위의 사진과 같이 에러메세지를 바로 알려주기 위해 assertive 속성을 사용함
<html lang="en"> // 영어
<html lang="ko"> // 한국어
웹 표준과 웹 접근성 모두 결국은 모든 것이 사용자를 향해 있음.
사용자에게 어떠한 문제가 있고 어떻게 해결해야 할지 고민을 하고 조금만 더 노력을 한다면 모두를 위한 웹 페이지를 만들 수 있음!