이전 프로젝트에서는 MUI와 같은 CSS라이브러리를 쓰면서 웹접근성은 크게 생각도 해보지 않았으며, 라이브러리가 알아서 해주리라 생각을 해왔다.
물론, 지금 리뉴얼하고 있는 프로젝트에서도 headlessui를 쓰면서 기본적인건 처리해주고 있겠지만, 직접 만들고 있는 버튼, 인풋 등의 기본 태그와 더불어 framer-motion을 활용하여 만든 바텀시트, 컨펌창 등은 스크린리더를 사용해보니 사용이 불가능할듯 하여
조금씩이나마 웹접근성에 대해서 공부해서 프로젝트에 적용해보려 한다.
요소(HTML Element)기준으로 이동하며, 요소, 역할 등에 따라서 읽는 방식이 달라짐
ex)
<div aria-label="author 입니다.">
contents 입니다.
</div>
-> 스크린리더는 'author 입니다'를 읽는다.
<button>버튼</button>
<button role="button">버튼</button>
<!-- 두개의 버튼은 역할이 같음 -->
<!-- 1. role이 없는 div -->
<!-- "span / span2" 이런식으로 끊어서 읽음 -->
<div>
<span>span1</span>
<span>span2</span>
</div>
<!-- 2. role이 button인 div -->
<!-- "span1 span2 버튼" 이어서 읽으며, 맨뒤에 부모의 역할까지 읽음 -->
<div role="button">
<span>span1</span>
<span>span2</span>
</div>
alt=""
를 처리<img src="#" alt="" />
<button role="tab" aria-selected="true">
탭 1
</button>
<button role="tab" aria-selected="false">
탭 2
</button>
-> 탭 1
이 선택됨 (aria-selected로 구분)
role="checkbox"
인 경우 aria-checked="true" | "false"
로 쓸 수 있음role="dialog"
로 역할 설정aria-modal="true"
로 role="dialog"
역할 밖의 요소들에 포커스가 되지 않도록 처리aria-hidden="true"
처리role="alert"
로 처리위 내용들외에도 접근성을 고려해야 할 곳이 너무도 많기에 나머지 내용들은 적용해보면서 공부해야 할 것 같다.