접근성

사람들은 다양한 방식으로 웹에 접근합니다. 어떤 사람은 화면을 보고 마우스를 움직이고, 어떤 사람은 화면을 볼 수 없어 음성으로 읽히는 것을 듣습니다. 어떤 사람은 마우스를 절대 만지지 않고 키보드, 음성, 또는 누르는 스위치를 통해 페이지를 이동합니다. 접근성은 모든 사람이 사용할 수 있는 페이지를 만드는 관행이며, 대부분은 HTML을 의도된 대로 작성하는 것에 다다를 것입니다.
접근성이 중요한 이유
**접근성**은 모든 사람이 어떤 상황과 어떤 방식으로 든 페이지를 사용할 수 있도록 하는 것을 의미합니다. 어떤 사람은 화면을 볼 수 없어 페이지를 음성으로 읽어주는 소프트웨어를 통해 들어야 할 수도 있습니다. 어떤 사람은 마우스를 사용하지 않고 키보드로 페이지를 이동할 수도 있습니다. 어떤 사람은 편하게 읽기 위해 더 큰 텍스트나 더 강한 색상이 필요할 수도 있습니다.
계단 옆에 경사로가 있는 건물을 생각해 보세요. 경사로는 계단을 올라갈 수 없는 사람을 도우면서 다른 누구에게도 아무것도 빼앗지 않습니다. 접근 가능한 HTML은 같은 개념입니다: 페이지를 더 많은 사람에게 열어주면서 누구도 더 나쁘게 만들지 않습니다.
안심할 수 있는 부분은 HTML은 처음부터 접근 가능하다는 것입니다. 각 콘텐츠에 올바른 요소를 사용함으로써 대부분의 길을 무료로 얻을 수 있습니다.
기초로서의 의미론적 HTML
접근성을 위해 할 수 있는 가장 효과적인 단일 작업은 일반적인 요소로 스타일링된 것이 아니라 콘텐츠의 의미와 일치하는 요소를 사용하는 것입니다.
**의미론적 HTML**은 콘텐츠가 어떻게 보이는지가 아니라 무엇 인지를 위해 태그를 선택하는 것을 의미합니다. 제목은 <h1>부터 <h6>까지 사용합니다. 버튼은 <button>을 사용합니다. 링크는 <a>를 사용합니다. 목록은 <ul> 또는 <ol>을 사용합니다. 이들 각각은 이미 스크린 리더가 알릴 수 있는 의미를 담고 있으므로, 청취자는 "이것은 버튼입니다" 또는 "이것은 제목입니다"를 보지 않고도 알 수 있습니다.
이사할 때 상자에 레이블을 붙이는 것과 같습니다. "부엌"으로 표시된 상자는 그것을 포장한 사람뿐만 아니라 그것을 옮기는 모든 사람을 돕습니다. 의미론적 태그는 같은 방식으로 콘텐츠에 레이블을 붙이므로 브라우저와 보조 기술은 각 부분이 무엇인지 알 수 있습니다.
실제로 이것은 버튼이 필요할 때 <button>을 사용하는 것을 의미합니다. 스타일링한 <div>가 아닙니다. <div>는 동일하게 보이도록 만들 수 있지만 그것이 무엇인지는 아무것도 말하지 않습니다. 의미론적 HTML 장은 전체 집합을 살펴봅니다.
<button>은 버튼용, <h1>은 제목용, <a>은 링크용입니다. 각각은 이미 스크린 리더에게 그것이 무엇인지 알려주므로 당신은 그것을 무료로 얻습니다. 스타일링된 <div>는 같게 보일 수 있지만 여전히 아무것도 말하지 않습니다. 텍스트 대체, 레이블, 포커스, 키보드
일부 콘텐츠는 자신을 위해 말할 수 없습니다. 이미지는 설명할 때까지 스크린 리더에 보이지 않습니다. 양식 필드는 레이블이 지정될 때까지 추측입니다. 그리고 마우스에만 응답하는 페이지는 하나를 사용하지 않는 모든 사람을 제외합니다. 이 네 가지 영역은 조금의 관심이 먼 길을 가는 곳입니다.
몇 가지 신뢰할 수 있는 습관은 대부분을 포함합니다:
- 이미지에는 alt 텍스트가 필요합니다.
alt특성은 그림을 볼 수 없는 사람을 위해 설명합니다. 이미지가 장식용일 뿐이면, 빈alt=""은 스크린 리더에게 건너뛰도록 알려줍니다.
<img src="red-fox.jpg" alt="snow에 말려 있는 빨간 여우">- 양식 필드에는 레이블이 필요합니다.
<label>은 방문자와 스크린 리더 모두에게 필드에 무엇을 입력할지 알려줍니다.
<label for="email">이메일 주소</label>
<input id="email" type="email">- 버튼과 링크에는 명확한 텍스트가 필요합니다. "더 읽기"는 맥락 밖에서 읽을 때 불명확합니다. "티켓 가격에 대해 더 읽기"는 독자적으로 이해됩니다.
- 키보드 순서는 읽기 순서와 일치해야 합니다. Tab을 누르는 사람은 HTML에 나타나는 순서대로 페이지를 이동하므로 그 순서를 합리적으로 유지하세요.
alt를 주고, 양식 필드에 <label>을 주고, 독자적으로 의미가 있는 버튼과 링크 텍스트를 작성하고, 탭 순서를 읽기 순서와 일치시키세요. 그들 중 어느 것도 오래 걸리지 않습니다. 장식 이미지는 건너뛰도록 빈 alt=""을 받습니다. ARIA, 그리고 먼저 손을 뻗지 말아야 할 이유
접근성을 위해 특별히 만든 HTML 특성 집합이 있으며, 이를 ARIA라고 합니다. 올바른 위치에서 유용하며 플랫폼의 가장 오용되는 부분 중 하나이므로 그것이 하는 것과 언제 혼자 둘지 모두 이해할 가치가 있습니다.
**ARIA**는 Accessible Rich Internet Applications의 약자입니다. 요소에 추가할 수 있는 추가 특성 집합으로 보조 기술에 그것에 대해 더 알려줍니다. 이름은 첫 번째로 손을 뻗을 도구처럼 들리며 보통 마지막입니다.
이유는 간단합니다: ARIA가 설명할 수 있는 대부분의 것은 HTML이 이미 그 자체로 말합니다. <button>은 이미 버튼으로 발표됩니다. role="button"을 추가하는 것은 아무것도 변경하지 않습니다. 요소가 무엇인지를 설명하기 위해 ARIA를 추가하는 자신을 발견한다면, 그것은 보통 그것이 무엇인지를 이미 말하는 일반 HTML 요소를 교환할 신호입니다.
이동 상자에 붙인 포스트잇을 그려보세요. 상자가 이미 "부엌"으로 인쇄되어 있다면, "부엌"을 읽는 포스트잇은 어지러움만 추가합니다. 아무런 레이블이 없는 상자를 위해 메모를 저장하세요. ARIA는 HTML에 요소가 없는 페이지의 부분을 위한 것이며, 그것이 들릴 수 있는 것보다 더 드뭅니다.
<button>은 이미 버튼이라고 말하기 때문입니다. ARIA를 HTML이 요소가 없는 페이지의 드문 부분을 위해 저장하세요. 그리고 다른 모든 것을 순수하게 유지하세요. 빠른 자가 감시
접근성 문제를 확인하기 위해 전문가 소프트웨어가 필요하지 않습니다. 당신의 기계에 이미 있는 도구로 몇 가지 확인은 대부분의 문제를 찾고 단 몇 분 밖에 걸리지 않습니다.
당신이 어떤 페이지에도 실행할 수 있는 짧은 체크리스트는 다음과 같습니다:
- 마우스를 놓고 Tab을 누르세요. 당신이 의미가 있는 순서로 모든 링크와 버튼에 도달할 수 있습니까? Enter로 활성화할 수 있습니까?
- 모든 이미지가
alt특성을 가지고 있습니까? - 모든 양식 필드가
<label>을 가지고 있습니까? - 당신의 버튼과 링크는 여전히 독자적으로 읽을 때 의미가 있습니까?
- 텍스트가 배경에 대해 명확하게 읽기 쉽습니까?
당신의 자신의 페이지에서 이것을 실행하는 것은 빠르고, 사람들이 가장 자주 맞는 문제를 확인합니다. Tab 키가 어딘가에 붙거나 이미지가 alt를 가지지 않으면, 당신은 고칠 가치가 있는 것을 찾았습니다.
alt를 가지고 있고, 모든 필드가 <label>을 가지고 있으며, 텍스트가 배경에 대해 명확하게 읽혀집니다. 이 몇 분이 사람들이 가장 맞는 문제를 확인합니다. 
