
웹 접근성(Web Acessibility)란 웹에 대한 접근성을 의미한다.
'접근성'은 모두가 접근할 수 있는 능력을 뜻한다.
1) 장애인 차별 금지 및 권리 구제 등에 관한 법률 (이하 장차법)
2) 웹 접근성 준수 의무화
3) 법적 책임과 벌칙 규정
4) 사회적 책임의 증대
장애인, 노약자 등을 위한 사회적인 책임과 더불어 관련 법률로도 명시되어 있기에 준수하도록 해야한다.
또한 WCAG(Web Content Accessibility Guidelines) 같은 국제 표준이 있고, 기업 입장에서 SEO 향상이나 사용자층 확대 측면에서도 접근성이 중요하다.
스크린 리더기 : 디지털 콘텐츠를 청각적으로 듣고 이해하는 장치
인식성 (perceivable)
운용성 (operable)
이해성 (understandable)
견고성 (robust)
- WAI-ARIA는 마크업을 보충하여 스크린 리더 및 보조기기 등에 상호작용 및 필요한 정보를 제공하는 지침임.
HTML에 역할(roles), 속성(properties), 상태(States) 정보를 추가하여 접근성 및 상호 운용성을 향상시켜 보다 나은 사용자 경험을 제공함.- WAI-ARIA에서 제공되는 내용은, HTML5 시맨틱 요소와 중복해서 사용하지 않음.
역할(roles)
예)
<div role="alert">경고 메시지입니다.</div>
<nav role="navigation">내비게이션 메뉴</nav>
role="alert": 경고 메시지 역할 (자동으로 스크린 리더가 알림).
role="navigation": 내비게이션 역할.
속성(Properties) + 상태(States)
aria라는 접두어를 가지며, 요소가 가진 기본적인 특징이나 상황을 설명한다.
속성: 요소의 고유한 속성을 설명함
<img src="image.jpg" aria-label="제품 이미지">
<button aria-pressed="true">버튼</button>
자주 사용되는 AIRA 속성
- aria-label : 요소에 접근성을 위한 라벨을 부여
버튼이나 아이콘에 적절한 설명을 제공할 때 유용- aria-labelledby : 기존 HTML 요소의 id 값을 참조하여 라벨을 지정
- aria-descibedby : 설명을 제공하는 요소를 참조하여 내용을 보충
- aria-hidden : 요소를 스크린 리더기에서 숨김
- aria-live : 실시간으로 변경되는 콘텐츠를 알림
- aria-expanded : 요소(메뉴, 아코디언 등)의 확장 여부를 나타냄.
ARIA 사용 시 주의할 점
- HTML의 기본 요소(예: <button>, <a>등)을 최대한 활용
예를 들어, <button>요소는 기본적으로 role="button"이 포함되어 있어 aria-role="button"을 추가할 필요가 없음.
<h1 role="heading">처럼 이미 의미가 포함된 요소에 role을 추가하는 것은 불필요함.프론트엔드 개발자는 여러 장애인의 특성을 구려하며 웹 접근성을 준수해야 함
시멘틱 HTML
- div 요소만 사용하면 스크린 리더기가 명확한 인식 불가능
대체 텍스트 제공
- 시각적인 콘텐츠를 추가한다면 반드시 콘텐츠를 설명하는 내용을 텍스트로 제공해야 함
display: none, visibility: hidden 속성으로 스크린 리더가 무시하게 하기.
- 시각적으로 보이지 않되, 화면상에서 존재하고 스크린 리더기가 읽는 CSS 스타일링
.ir-text{ position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); border: 0; }
폰트 크기 관련
- WCAG에 따르면, 본문 텍스트는 16px이 적합
색상 관련
- 명도 대비 : 색상 대비 높게 줄 것
WCAG 명도 대비 기준은 4.5:1
명도 대비 체크 URL
키보드 조작 관련
- 키보드만으로 웹 서비스를 동일하게 사용할 수 있어야 함
키보드 사용 보장
- 상호작용이 가능한 모든 요소는 키보드로 포커스가 가능해야 함
포커스 스타일링
- tab 등 키보드로 접근했을 때, 활성화된 요소에 스타일이 부여되어야 함
:focs등 가상 클래스를 활용하여 스타일을 설정할 수 있음논리적인 탭 순서
- HTML이 논리적으로 구성되어 있는 게 가장 중요
tabindex 속성을 활용해 명시적으로 탭 순서를 지정할 수 있음
tabindex : 키보드 사용자가 요소를 이동할 수 있도록 초점을 제어하는 속성
1) tabindex="0"
2) tabindex="-1"
예)
<button onclick="document.getElementById('modal').focus()">모달 열기</button>
<div id="modal" tabindex="-1">이 모달은 자동으로 포커스를 받습니다.</div>
3) tabindex="1" 이상 (비추천)
명도 대비
webAIM
웹 표준+접근성 검사기
W3C