본문 바로가기
Front-end/웹접근성

웹접근성을 높이는 ARIA 속성 완벽 가이드

by mooyou 2025. 4. 6.
728x90
300x250
SMALL

1. ARIA란 무엇인가?

ARIA는 웹접근성을 개선하기 위한 HTML속성으로, 스크린 리더 같은 보조기기가 웹페이지를 더 쉽게 이해하도록 돕는 역할을 합니다.

예를 들어, 버튼이 <div> 태그로 만들어져 있을 경우, 보조기기는 이를 버튼으로 인식하지 못하지만, role="button"을 추가하면 버튼으로 인식할 수 있다.

<div role="button" tabindex="0">클릭하세요</div>

 


 

 

2. ARIA 속성의 주요 역할

ARIA 속성은 크게 역할(Role), 속성(Properties), 상태(States)로 나뉜다.

속성 설명 예제
aria-label 직접 라벨을 지정 <button aria-label="닫기">X</button>
aria-labelledby 다른 요소를 참조하여 라벨 지정 <input aria-labelledby="title">
aria-describedby 보조 설명을 추가 <input aria-describedby="info">
role 요소의 역할을 명확하게 지정 <div role="button">버튼</div>
aria-live 실시간 업데이트되는 콘텐츠 설정 <div aria-live="polite">업데이트됨</div>
aria-hidden 보조기기에서 숨김 처리 <div aria-hidden="true">숨김 콘텐츠</div>
aria-expanded 열림/닫힘 상태 표시 <button aria-expanded="false">메뉴</button>

 


 

3. 주요 ARIA 속성 자세히 살펴보기

1) aria-label VS aria-labelledby VS aria-describedby

이 속성들은 요소의 의미를 더 멱확하게 전달할 때 사용된다.

<button aria-label="메뉴 열기">🍔</button>
  • 보조기기는 버튼에 메뉴열기라고 읽어줌
<h2 id="title">로그인</h2>
<input type="text" aria-labelledby="title">
  • <input>을 "로그인" 필드로 인식
<input type="text" aria-describedby="info">
<p id="info">비밀번호는 8자 이상 입력하세요.</p>
  • 사용자가 입력 필드에 초점ㅇ르 맞추면 "비밀번호는 8자 이상 입력하세요."라고 안내

 

 

2) aria-live로 실시간 콘텐츠 업데이트 전달하기

스크린 리더는 기본적으로 동적 콘텐츠를 자동으로 읽지 않는다. aria-live를 활용하면, 변경 사항 을 자동으로 읽도록 설정할 수 있다.

<div aria-live="polite">새로운 알림이 없습니다.</div>
  • "polite"는 현재 읽고 있는 내용을 끝낸 후 변경 사항을 읽음
<div aria-live="assertive">긴급한 메시지!</div>
  • "assertive"는 즉시 내용을 읽음(경고 메시지 등에 사용)

 

 

3) aria-expanded로 아코디언 메뉴 접근성 향상

아코디언 메뉴나 드롭다운의 열림/닫힘 상태를 보조기기에 전달할 수 있다.

<button aria-expanded="false" aria-controls="menu">메뉴 열기</button>
<ul id="menu" hidden>
  <li>항목 1</li>
  <li>항목 2</li>
</ul>
  • JavaScript로 버튼 클릭 시 aria-expanded="true"로 변경

 

 

4) aria-hidden으로 불필요한 요소 숨기기

<p aria-hidden="true">이 문장은 스크린 리더가 무시함</p>

 


 

4. ARIA 속성 올바르게 사용하기

  • 무조건 ARIA를 추가하는 것은 오히려 접근성을 해칠 수 있다.
  • HTML 태그 자체가 접근성을 제공하는 경우, 불필요한 ARIA 사용을 피하기
  • role="button"을 사용한 경우 tabindex="0"을 추가해 키보드 접근성 고료
  • aria-hidden="true"를 사용할 때는 적절한 대체 콘텐츠 제공
728x90
반응형
LIST

댓글