WAI-aria

2024. 3. 27. 16:37·Web
반응형

웹 접근성 공부를 위해서 공부한 내용 시리즈

▶ 2024.02.17 - [Web] - 웹 표준, 웹 호환성, 웹 접근성

▶ 2024.02.21 - [Web] - 웹 접근성 시나리오

▶ 2024.02.25 - [Web] - 웹 접근성이 왜 필요할까?

▶ 2024.03.16 - [Web] - 웹 접근성 기술 학습

▶ 2024.03.20 - [Web] - 웹 접근성 시나리오 - 2

▶ 2024.03.24 - [Web] - 랜드마크 롤

▶ 2024.03.27 - [Web] - WAI-aria <= 현재 글

▶ 2024.03.31 - [Web] - 웹 접근성 시나리오 - 3

▶ 2024.04.04 - [Web] - 사용자가 입력하는 이미지

▶ 2024.04.06 - [Web] - 구글 SEO


WAI-aria

랜드마크 롤에 대해서 앞서 배웠는데, 랜드마크 롤이 WAI-aria에 포함이 된다. 

즉, 기존 태그에 시맨틱을 꾸며주는 역할을 한다. 

 

WAI-aria을 사용하는 경우에 대해서 한번 알아보자

속성

// 1. 필수 항목 속성
<input type="checkbox" required aria-required="true"/>

스크린리더가 input의 required 같은 속성을 제대로 읽지 못하는 경우가 있다. 

그래서 aria-required 속성을 통해서 필수 입력 값이라는 사실을 알려준다. 

 

// 2. 사용 설명 속성
<input type="text" aria-describedby="reference"/>
<div id="reference">사용 설명</div>

접근 가능한 설명을 읽어준다. 

 

input 요소의 설명으로 aria-describedby에 명시해둔 값을 id로 가진 요소의 텍스트를 읽어준다. 

 

// 3. 그룹 레이블 명명
<div role="group" aria-label="1학년 2반">

랜드마크 롤과 함께 해당 그룹의 명칭을 지정할 수 있다. 

 

상태

// 1. 확장되어 있는 상태의 탭패널
<div role="tabpanel" aria-expanded="true">

Select 박스처럼 확장이 가능한 탭 패널이 확장이 되었는지 안되었는지 나타내는 것을 

aria-expanded로 적용할 수 있다. 

 

// 2. 오류가 발생한 상태의 입력상자
<input type="text" aria-invalid="true">

유효한 상태인지 유효하지 않은 상태인지 나타낼 수 있다. 

 

// 3. 선택된 상태의 토글버튼
<button aria-pressed="true">

토글 기능이 있는 버튼 등에 aria-pressed 를 사용해서 상태를 나타낼 수 있다. 

 

웹 접근성 시나리오 - 그래픽언어 처리

정형화된 언어는 아니지만 사용자로 하여금 특정 정보를 제공하는 기능하는 것을 그래픽 언어라고 한다. 

리스트의 라인 표시 점 같은 시각적인 그래픽 언어와 시각적인 이해를 위한 그래픽 언어

 

붉은색 상자의 경우 불필요하지만 시각적인 주목을 위해서 사용한 그래픽 언어의 예이고 

파란색 상자의 경우 시각적인 이해를 바탕으로한 그래픽 언어의 예이다. 

 

불필요하지만 시각적인 주목을 위한 그래픽언어의 웹 접근성 처리

WAI-aria의 aria-hidden 속성을 사용해서 웹 접근성 처리를 할 수 있다. aira-hidden 속성은 IR 기법과는 반대되는

특성을 가지고 있다, 

 

즉, 화면에는 보이지만 스크린리더로는 읽히지 않게 처리할 수 있다. 

<span aria-hidden="true">■</span><span>...</span>
<span aria-hidden="true">■</span><span>...</span>
<span aria-hidden="true">■</span><span>...</span>
<span aria-hidden="true">■</span><span>...</span>

 

시각적인 이해를 바탕으로한 그래픽 언어의 웹 접근성 처리 

WAI-aria의 aria-hidden 속성과 IR 기법을 적절히 조합한다. 

 

즉, 그래픽 언어는 aria-hidden 속성을 사용해 스크린리더를 통해 읽히지 않게 하고, 그래픽 언어가 갖는 

의미는 IR 기법으로 처리한다. 

<span class="blind">전화번호</span><span aria-hidden="true">☎</span><span>560-...</span>

 

스크린리더가 이미지를 무시하게 하는 방법

aria-hidden처럼 스크린리더가 이미지도 무시하게 할 수 있는 방법이 있다. 

// 1. CSS 사용
{ background-image : url("..."); }

// 2. alt="" 사용
<img src="..." alt="" />

// 3. aria-hidden 사용
<img src="..." aria-hidden="true" />

// 4. role="none" 사용
<img src="..." role="none" />

// 5. role="presentation" 사용
<img src="..." role="presentation" />

 

랜드마크 롤을 사용해서 처리하는 방법이 none 과 presentation 2개가 존재하는 것을 볼 수 있다. 

presentation은 안보이게 하는 것이 아닌 꾸미기 위한 용도라는 것을 알려주는 랜드마크 롤이다. 

 

추가적으로 none 과 presentation는 호환성의 차이도 있다. 

그래서 사용할 때 둘 다 적는 것이 좋으며 아래와 같이 작성하면 된다. 

<img src="..." role="none presentation" />

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'Web' 카테고리의 다른 글

사용자가 입력하는 이미지  (0) 2024.04.04
웹 접근성 시나리오 - 3  (1) 2024.03.31
랜드마크 롤  (0) 2024.03.24
웹 접근성 시나리오 - 2  (0) 2024.03.20
웹 접근성 기술 학습  (0) 2024.03.16
'Web' 카테고리의 다른 글
  • 사용자가 입력하는 이미지
  • 웹 접근성 시나리오 - 3
  • 랜드마크 롤
  • 웹 접근성 시나리오 - 2
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    바질
    프로그래머스
    다이소
    네트워크
    Node.js
    리얼클래스
    CSS
    javascript
    next.js
    ChatGPT
    식물
    알고리즘
    ReactNative
    타입스크립트
    리액트
    리얼학습일기
    Babel
    자바스크립트
    webpack
    typescript
    영어회화
    react
    바질 키우기
    네이버 부스트캠프
    Docker
    영어독학
    타일러영어
    덤프
    redux
    CCNA
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
WAI-aria
상단으로

티스토리툴바