🚩 글의 주제 : 보조기기를 위해 비시각적인 정보를 제공하는 스피너를 만들어보자.
❓ 간혹 보이던 스피너가 없는 페이지들을 생각해보니 나의 요청이 작동 중인지 아닌지 알 수가 없어 매우 답답했었다. 그렇다면 시각적인 정보를 전달받을 수 없는 보조기기 사용자들은 어떻게 스피너를 인지할까? 개발자들은 어떻게 정보를 제공해야 할까?
👉 스피너는 사용자의 요청(Request)가 진행되고 있음을 시각적으로 알려주는 역할을 한다. 이를 통해 사용자는 스피너가 멈출 때 까지 기다리고, 스피너가 사라짐과 동시에 다른 액션을 취할 것이다.
웹접근성을 위해 비시각적인 요소로도 이 기능을 제공하자.
일반적인 스피너의 동작 흐름 그대로 비시각적인 요소를 제공해주면 된다.
👉 비시각적인 정보를 제공하는 스피너를 반환하는 리액트 함수 컴퍼넌트 Spinner 를 만들어보자 !
figure
태그 내에 img
가 있는 리액트 요소를 반환한다.renderAsset
함수를 사용하여 타입에 따른 스피너 이미지를 반환한다.isLoading
이라는 상태를 관리하고, 이 상태가 true 인 경우에만 스피너를 호출하여 사용한다.role="alert"
개발자는 aria-live
를 사용해 페이지 중 어떤 부분을 '라이브'로 표시할 수 있다. 즉, 사용자가 페이지를 탐색하다가 그저 우연히 그런 '라이브' 부분을 발견하는 것이 아니라, 페이지의 어느 위치에 있든 상관없이 새롭게 업데이트된 정보를 사용자에게 즉시 알릴 수 있다. aria-live
속성을 가진 요소가 있는 경우 페이지에서 이런 요소와 그 하위 항목을 포함한 부분을 라이브 영역이라고 한다.
✅ aria-live 속성을 사용하기 위해서는 index.html 파일에 정적으로 해당 속성을 가진 요소가 존재해야 한다.
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
**<div id="loading-start" aria-live="assertive"></div>
<div id="loading-end" aria-live="assertive"></div>**
</body>
💡 알게된 점
📌 참고 링크