모든 웹 개발자가 알아야 할 접근성 기본 원칙
현대적인 프레임워크로 세련된 웹사이트를 만들었지만, 스크린 리더를 사용하는 사용자가 탐색하려고 하면 길을 잃습니다. 또는 마우스를 사용할 수 없는 사람이 커스텀 드롭다운을 열 수 없다는 것을 알게 됩니다. 접근성은 단순히 체크박스가 아니라, 품질 높은 웹 개발의 근본적인 부분입니다. 이 글에서는 모든 사람이 사이트를 사용할 수 있도록 하는 핵심 원칙과 실용적인 기법을 배우게 됩니다.
접근성이 중요한 이유
접근성(종종 a11y로 약칭)은 장애가 있는 사람들이 웹을 인지하고, 이해하고, 탐색하고, 상호작용할 수 있도록 보장합니다. 여기에는 시각, 청각, 운동, 인지 장애가 있는 개인이 포함됩니다. 윤리적 필요성을 넘어, 접근성 있는 사이트는 검색 엔진에서 더 높은 순위를 차지하고, 더 넓은 청중에게 도달하며, ADA나 WCAG와 같은 법적 요구 사항을 준수하는 경우가 많습니다.
게다가 접근성 개선은 모든 사용자에게 혜택을 줍니다. 명확한 제목, 키보드 단축키, 높은 대비는 밝은 햇빛 아래, 느린 연결, 또는 일시적으로 손을 다친 사람들에게 도움이 됩니다. 이는 보편적 디자인에 관한 것입니다.
핵심 원칙: POUR
웹 콘텐츠 접근성 지침(WCAG)은 네 가지 원칙을 기반으로 하며, 기억하기 쉽게 POUR로 기억됩니다:
- 인지 가능(Perceivable): 정보는 모든 사용자가 인지할 수 있는 방식으로 제시되어야 합니다. 이미지에 대한 텍스트 대안, 비디오에 대한 캡션, 충분한 색상 대비를 제공하세요.
- 운용 가능(Operable): 사용자는 인터페이스를 운용할 수 있어야 합니다. 모든 기능이 키보드를 통해 사용 가능하도록 하고 사용자에게 콘텐츠를 읽을 충분한 시간을 주세요.
- 이해 가능(Understandable): 콘텐츠와 운용은 이해 가능해야 합니다. 명확한 언어, 예측 가능한 탐색, 입력 지원을 사용하세요.
- 견고성(Robust): 콘텐츠는 현재와 미래의 보조 기술과 함께 작동해야 합니다. 유효하고 시맨틱한 HTML을 작성하세요.
시맨틱 HTML로 시작하기
접근성의 기초는 작업에 맞는 올바른 HTML 요소를 사용하는 것입니다. 스크린 리더는 요소의 시맨틱에 의존하여 의미를 전달합니다. <button>은 버튼으로 알려지고 기본적으로 포커스 가능합니다; 클릭 핸들러가 있는 <div>는 그렇지 않습니다.
사용해야 할 일반적인 시맨틱 요소:
- 탐색 블록에는
<nav> - 주요 콘텐츠에는
<main> - 논리적 순서로 제목에는
<h1>–<h6> - 클릭 가능한 작업에는
<button> - 링크에는
<a> - 목록에는
<ul>,<ol>,<li> - 폼 입력과 연결된
<label>
예를 들어, 다음과 같이 하는 대신:
<div>Submit</div>
다음을 사용하세요:
<button type="button">Submit</button>
이 간단한 변경은 컨트롤을 포커스 가능하게 하고, 역할을 알리며, 키보드를 통한 활성화를 허용합니다.
키보드 탐색 및 포커스 관리
많은 사용자가 마우스를 사용할 수 없습니다. 그들은 Tab 키를 사용하여 대화형 요소를 이동합니다. 다음을 보장하세요:
- 모든 대화형 요소는 Tab을 통해 도달 가능해야 합니다.
- 탭 순서는 논리적 순서를 따릅니다.
- 포커스는 항상 보여야 합니다 (대체 없이 아웃라인을 제거하지 마세요).
- 커스텀 위젯(예: 모달 또는 드롭다운)은 포커스를 적절히 가두고 닫힐 때 포커스를 반환합니다.
마우스를 뽑고 키보드만 사용하여 탐색하여 사이트를 테스트하세요. 모든 기능에 접근할 수 있나요?
ARIA: 주의해서 사용하세요
ARIA(접근성 있는 리치 인터넷 애플리케이션) 속성은 네이티브 HTML이 부족할 때 접근성을 향상시킬 수 있습니다. 그러나 ARIA의 첫 번째 규칙은: 네이티브 HTML을 대신 사용할 수 있다면 ARIA를 사용하지 마세요. 예를 들어, <div role="button"> 대신 <button>을 사용하세요.
ARIA가 필요할 때 일반적인 속성은 다음과 같습니다:
- 보이는 텍스트가 없을 때 레이블을 제공하는
aria-label. - 접을 수 있는 섹션이 열려 있는지 나타내는
aria-expanded. - 장식 요소를 스크린 리더에서 숨기는
aria-hidden="true". - 시맨틱 태그가 없을 때 요소의 목적을 정의하는
role.
잘못된 ARIA는 상황을 악화시킬 수 있으므로 항상 보조 기술로 테스트하세요.
색상 및 대비
충분한 색상 대비는 저시력 또는 색맹인 사람들이 텍스트를 읽을 수 있도록 보장합니다. WCAG는 일반 텍스트에 대해 최소 4.5:1, 큰 텍스트(18pt+ 또는 14pt 굵게)에 대해 3:1의 대비 비율을 권장합니다. WebAIM Contrast Checker와 같은 도구를 사용하여 확인하세요.
또한, 정보를 전달하기 위해 색상에만 의존하지 마세요. 예를 들어, 오류를 나타내기 위해 빨간색을 사용하는 경우 아이콘이나 텍스트 메시지도 포함하세요.
이미지에 대한 텍스트 대안
모든 이미지에는 alt 속성이 있어야 합니다. 값은 컨텍스트에 따라 다릅니다:
- 이미지가 정보를 전달하는 경우 간결하게 설명하세요:
alt="빨간색 경고 삼각형". - 장식적인 경우 빈 alt를 사용하세요:
alt="". - 복잡한 차트인 경우 근처에 또는
aria-describedby를 통해 더 긴 설명을 제공하세요.
누락된 alt 텍스트는 가장 흔한 접근성 실패 중 하나입니다. 또한 수정하기 쉽습니다.
사이트의 접근성 테스트
자동화 도구는 약 30%의 문제를 잡을 수 있습니다. 수동 테스트가 중요합니다. 다음은 실용적인 워크플로우입니다:
- 자동화된 감사 실행: axe DevTools, Lighthouse 또는 WAVE를 사용하여 명백한 문제를 찾으세요.
- 키보드 테스트: Tab, Shift+Tab, Enter 및 화살표 키만 사용하여 사이트를 탐색하세요.
- 스크린 리더 테스트: VoiceOver(Mac), NVDA(Windows) 또는 Orca(Linux)를 시도하세요. 콘텐츠가 어떻게 알려지는지 들어보세요.
- 확대 및 대비: 200%로 확대하고 콘텐츠가 여전히 사용 가능한지 확인하세요. 대비 비율을 확인하세요.
- 사용자 테스트: 가능할 때마다 장애가 있는 사람들을 사용성 테스트에 포함하세요.
피해야 할 일반적인 함정
- 버튼과 링크에
div또는span을 사용하는 것. - 대안을 제공하지 않고 포커스 아웃라인을 제거하는 것.
- 포커스 가능한 요소에
aria-hidden="true"를 추가하는 것. - 입력에 대한 유일한 레이블로 플레이스홀더 텍스트를 사용하는 것.
- 소리와 함께 미디어 자동 재생.
- 불충분한 색상 대비.
빠른 참고: 해야 할 일과 하지 말아야 할 일
| 해야 할 일 | 하지 말아야 할 일 |
|---|---|
| 시맨틱 HTML 요소 사용 | 모든 것에 div 사용 |
| 텍스트 대안 제공 | 정보를 제공하는 이미지에 alt 속성을 비워 두기 |
| 키보드 운용성 보장 | 마우스 이벤트에만 의존 |
| 충분한 대비 유지 | 흰색 배경에 연한 회색 텍스트 사용 |
| 폼 입력에 레이블 지정 | 레이블로 플레이스홀더 사용 |
FAQ
WCAG A, AA, AAA의 차이점은 무엇인가요?
WCAG 준수 수준은 접근성이 증가함을 나타냅니다. 레벨 A는 최소, AA는 대부분의 법률이 참조하는 표준, AAA는 최고 수준으로 모든 콘텐츠에 대해 종종 비현실적입니다. AA를 목표로 하세요.
ARIA를 사용하여 모든 접근성 문제를 해결할 수 있나요?
아니요. ARIA는 네이티브 HTML이 필요한 시맨틱을 제공할 수 없을 때만 사용해야 합니다. 잘못된 ARIA는 접근성을 해칠 수 있습니다. 항상 시맨틱 HTML을 우선하세요.
웹사이트의 접근성을 어떻게 테스트하나요?
자동화 도구(예: axe 또는 Lighthouse)와 수동 검사(키보드 탐색, 스크린 리더 테스트, 색상 대비 분석)를 결합하세요. 가능하면 장애가 있는 사용자를 참여시키세요.
사이트의 접근성을 개선할 준비가 되셨나요? HTML 구조를 검증하고 일반적인 문제를 확인하는 것으로 시작하세요. 빠른 JSON 포맷팅 및 검증을 위해 JSON Formatter를 사용하여 데이터가 깨끗하고 잘 구조화되었는지 확인하세요.