diff --git a/a11y/README.md b/a11y/README.md index e749a28..b459fd9 100644 --- a/a11y/README.md +++ b/a11y/README.md @@ -1,60 +1,108 @@ # 접근성을 고려한 React 컴포넌트 만들기 +### 최종 결과 + + + +https://github.com/user-attachments/assets/5e0aef2f-f0ae-48e4-a9ee-3e3b47793629 + + + ## 학습 목표 -접근성 대응을 효율적으로 하기 위해서는 최소한의 코드 수정으로도 최대한의 접근성 향상을 이끌어낼 수 있는 능력이 필요합니다. -앞으로 접근성 개선 작업을 진행하면서, 아래와 같은 원칙을 함께 연습해볼 예정입니다. + +접근성 대응을 효율적으로 하기 위해서는 최소한의 코드 수정으로도 최대한의 접근성 향상을 이끌어낼 수 있는 능력이 필요합니다. +앞으로 접근성 개선 작업을 진행하면서, 아래와 같은 원칙을 함께 연습해볼 예정입니다. + #### 최소한의 마크업으로 최대한의 접근성 확보하기 + - 최소한의 마크업을 사용해 불필요한 요소를 줄이고, HTML의 기본 기능을 최대한 활용합니다. - 시맨틱 태그를 사용해 웹 페이지의 구조를 명확히 하고, 의미를 직관적으로 전달합니다. - ARIA 속성은 꼭 필요한 경우에만 사용하여 추가적인 정보를 제공합니다. - 시각적 표현과 접근성을 모두 만족시키는 방법을 함께 고민합니다. - + ## Step 1: 언어 설정하기 시각 사용자는 UI에 있는 텍스트들만으로 이 문서가 한국어로 된 문서인지 바로 알 수 있지만 스크린 리더는 알 수 없습니다. 스크린 리더가 문서의 언어를 올바르게 인식할 수 있도록 `index.html`에 `lang` 속성을 설정합니다. ### 키워드 + - `lang` 속성 +### 결과 + +모바일 낭독기에서 "heading level 2" -> "머리말 레벨 2"로 읽어줌 + ## Step 2: 시맨틱 태그 사용하기 웹 접근성의 첫걸음은 의미 있는 HTML을 작성하는 것입니다. 웹 표준을 준수하며, 시맨틱 태그를 적극적으로 활용하여 UI의 의미를 명확하게 전달해 주세요. ### 키워드 + - [시맨틱 태그](https://developer.mozilla.org/ko/docs/Learn/Accessibility/HTML) - `App.tsx` 대상으로만 고민해 보세요 +### 결과 + +[스크린 리더의 HTML5 섹션 요소 지원](https://www.accessibilityoz.com/2020/02/html5-sectioning-elements-and-screen-readers/) 글을 참고함. + +| Element | JAWS phrase | NVDA phrase | Narrator phrase | TalkBack phrase (spoken only on Chrome) | VoiceOver phrase | +| ------- | ------------------------- | ------------------------ | ------------------------------ | --------------------------------------- | ------------------------- | +| Header | banner | "banner landmark" | "header banner landmark" | "banner" | "banner, landmark" | +| Nav | navigation region | "navigation landmark" | "navigation landmark" | "navigation" | "navigation, landmark" | +| Aside | complementary information | "complementary landmark" | "aside complementary landmark" | "complementary" | "complementary, landmark" | +| Main | main region | "main landmark" | "main landmark" | "main" | "main, landmark" | + +처음에는 section태그만 사용했는데 랜드마크가 적용되지 않음. 위 글을 보고 main 태그를 사용해야 "메인, 랜드마크"라고 음성 안내를 해줌을 알게됨. + ## Step 3: 버튼 접근성 향상시키기 -기본적으로 웹 표준을 준수하는 태그를 사용하는 것만으로도 네이티브 HTML이 지원해주는 접근성 기능을 활용할 수 있습니다. 예를 들어, 클릭할 수 있는 버튼 UI이라면 다른 태그를 사용하고 클릭 이벤트를 추가하는 것보다 ` - {adultCount} - - +
+ {statusMessage} +
+ ); };