티스토리 뷰
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Guides
ARIA guides - ARIA | MDN
developer.mozilla.org
**ARIA(Accessible Rich Internet Applications)**는 장애가 있는 사용자가 웹 콘텐츠와 웹 애플리케이션(특히 JavaScript를 사용한 동적 콘텐츠)에 더 쉽게 접근할 수 있도록 돕는 W3C 기술 사양입니다.
쉽게 말해, HTML만으로는 표현하기 어려운 **UI 구성 요소의 역할(Role), 상태(State), 속성(Property)**을 스크린 리더와 같은 보조 공학 기기에 전달하는 '설명서' 역할을 합니다.
1. ARIA가 왜 필요한가요?
기존의 HTML 태그(<button>, <input>, <a> 등)는 자체적으로 의미(Semantic)를 가지고 있습니다. 하지만 현대의 웹은 복잡한 UI(탭 메뉴, 드롭다운, 모달 창, 프로그레스 바 등)를 자주 사용하며, 이를 일반적인 <div>나 <span>으로 만드는 경우가 많습니다.
- 문제점: 보조 공학 기기는 <div>를 단순한 구역으로 인식할 뿐, 그것이 클릭해야 하는 '버튼'인지, 현재 '열려 있는지' 알 수 없습니다.
- 해결책: ARIA를 사용해 "이 <div>는 사실 버튼이고, 현재 눌러진 상태다"라는 정보를 추가로 제공합니다.
2. ARIA의 3대 요소
ARIA는 크게 세 가지 속성으로 구성됩니다.
① 역할 (Roles)
해당 요소가 무엇을 하는지 정의합니다. 한 번 설정하면 브라우저 수명 동안 거의 변하지 않습니다.
- 예: role="button", role="tab", role="navigation", role="alert"
② 속성 (Properties)
요소의 특징이나 관계를 정의합니다.
- 예: aria-label (요소에 시각적 텍스트가 없을 때 설명을 추가), aria-haspopup (하위 메뉴가 있는지 여부)
③ 상태 (States)
요소의 현재 상황을 나타내며, 사용자 상호작용에 따라 JavaScript로 계속 업데이트됩니다.
- 예: aria-expanded="true/false" (메뉴가 펼쳐졌는가?), aria-checked="true" (체크박스가 선택되었는가?)
3. ARIA 사용의 핵심 원칙 (Golden Rules)
ARIA를 잘 사용하는 것보다 더 중요한 것은 최대한 적게 사용하는 것입니다.
- HTML5 우선 원칙: HTML5 태그(예: <nav>, <button>, <header>)로 해결할 수 있다면 ARIA를 쓰지 마세요. 브라우저는 기본 HTML 태그를 가장 잘 이해합니다.
- 기존 의미 변경 금지: <button>에 role="heading"을 넣는 식으로 원래의 의미를 왜곡하지 마세요.
- 키보드 접근성: role="button"을 주었다고 해서 엔터 키로 클릭이 되지는 않습니다. JavaScript를 통해 키보드 조작을 직접 구현해야 합니다.
- 숨기기 활용: 시각적으로는 보이지만 보조 기기에는 불필요한 장식용 이미지는 aria-hidden="true"로 숨길 수 있습니다.
4. 실무 적용 예시 (탭 메뉴)
단순한 <div> 구조에 ARIA를 적용하면 스크린 리더 사용자는 훨씬 명확하게 구조를 파악할 수 있습니다.
<ul role="tablist">
<li role="presentation">
<button role="tab" aria-selected="true" aria-controls="panel-1" id="tab-1">
공지사항
</button>
</li>
</ul>
<div role="tabpanel" id="panel-1" aria-labelledby="tab-1">
공지사항 내용이 들어갑니다.
</div>
5. 요약 및 결론
ARIA는 웹 접근성을 높여주는 강력한 도구이지만, 잘못 사용하면 오히려 독이 됩니다. "동적인 UI를 만들 때, 스크린 리더 사용자에게 실시간으로 정보를 전달하기 위한 보조 장치"로 이해하는 것이 좋습니다.
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
'WEB > 기타' 카테고리의 다른 글
| 2026년 적용 SW기술자 평균임금 공표 (조사년도 2025년) (0) | 2026.02.21 |
|---|---|
| React, Vue 프레임워크를 사용했을때의 장점과 단점 (0) | 2026.01.14 |
| fusioncharts 퓨전차트 (0) | 2025.10.18 |
| 한국형 웹 콘텐츠 접근성 지침 2.2 (0) | 2025.05.23 |
| 안심 글꼴파일 서비스 (0) | 2025.05.20 |
- Total
- Today
- Yesterday
- 와이파이증폭기추천 #와이파이설치
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- iptime와이파이증폭기 #와이파이증폭기설치
- 좋은책
- jdk #jre
- 자바스크립트정규표현식
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 증폭기 #아이피타임증폭기
- 파비콘 #파비콘 사이트에 적용
- 탭메뉴자바스크립트
- thymeleaf
- ajax
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- echart
- 쇼팬하우어 #좋은책
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- SQL명령어 #SQL
- 파비콘사이즈
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 좋은책 #밥프록터 #부의원리
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- 자바스크립트 #javascript #math
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- css미디어쿼리 #미디어쿼리 #mediaquery
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 자바스크립트countiue
- 자바스크립트break
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |

