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
댓글