반응형
웹 접근성 공부를 위해서 공부한 내용 시리즈
▶ 2024.02.17 - [Web] - 웹 표준, 웹 호환성, 웹 접근성
▶ 2024.02.21 - [Web] - 웹 접근성 시나리오 <= 현재 글
▶ 2024.02.25 - [Web] - 웹 접근성이 왜 필요할까?
▶ 2024.03.16 - [Web] - 웹 접근성 기술 학습
▶ 2024.03.20 - [Web] - 웹 접근성 시나리오 - 2
▶ 2024.03.27 - [Web] - WAI-aria
▶ 2024.03.31 - [Web] - 웹 접근성 시나리오 - 3
▶ 2024.04.04 - [Web] - 사용자가 입력하는 이미지
웹 접근성 시나리오 - 버튼
// 1
<span class="btn">버튼</span>
// 2
<div class="btn">버튼</div>
// 3
<a href="/" class="btn">버튼</a>
// 4
<button>버튼</button>
1 ~ 4번 버튼 중 어떤 버튼이 [ 잘 만든 버튼 ]일까?
정답은 전부 잘 만들지 못한 버튼이다.
버튼의 조건
- 버튼의 역할을 가지고 있어야 한다 ( 토글, 팝업 열기 등 )
페이지 이동과 같은 기능은 버튼의 역할이 아니다. - 버튼의 이름을 식별할 수 있어야 한다.
스크린리더를 통해 듣더라도 버튼인 것을 인지할 수 있어야 한다. - Native 버튼처럼 조작이 가능해야 한다.
마우스 외에도 Tab 키를 통한 접근, 엔터키와 스페이스바를 통해서 누를 수 있어야 한다.
1번 버튼
<span class="btn">버튼</span>
=> span 태그는 Interactive 태그가 아니므로 키보드 포커스가 가지 않는다.
=> tabindex = "0"을 통해서 포커스가 가도록 수정
<span class="btn" tabindex="0">버튼</span>
=> span 태그는 스크린리더가 읽을 때 " 버튼 " 이라고 읽지 않는다.
=> role을 버튼으로 수정
<span class="btn" tabindex="0" role="button">버튼</span>
=> role="button"을 지정해도 태그의 네이티브 기능은 변하지 않는다.
=> 버튼 동작을 위해서 키보드로 "엔터", "스페이스바"를 눌렀을 때 동작하도록 수정
<span class="btn keyboard_event" tabindex="0" role="button">버튼</span>
※ tabindex
키보드 많으로 웹 전 항목을 접근할 수 있도록 하는 속성이다.
마우스 사용이 불편한 사용자를 위해서 제공되는 속성
<span role="button" tabindex="-1">버튼</span> // 키보드 포커스 X
<span role="button" tabindex="0">버튼</span> // 키보드 포커스 O
Interactive 태그 [ a, button, input ,,,, 등등 ] 가 아닌 태그에게는 기본적으로 포커스가 가지 않는다.
하지만 tabindex가 -1이 아니라면 탭을 눌렀을 때 포커스를 가도록 할 수 있다.
2번 버튼
1번 버튼인 span과 동일한 문제를 가지고 있다.
단지 2번 버튼은 span 태그에서 div 태그로 변경된 것이므로 1번과 동일하다고 보면 된다.
3번 버튼
<a href="/" class="btn">버튼</a>
=> a 태그는 스크린리더가 읽을 때 "버튼"이 아닌 "링크"라고 읽는다.
=> 버튼이 되도록 수정해준다.
<a href="/" class="btn" role="button">버튼</button>
=> role="button"를 사용하더라도 네이티브 기능 자체는 변하지 않는다.
=> 버튼이 되기 위해서는 키보드에서 "엔터", "스페이스바"를 눌렀을 때 클릭이 되어야 한다.
=> a 태그는 "엔터"만 동작하고, "스페이스바"는 동작하지 않는다.
<a href="/" class="btn keyboard_event" role="button">버튼</a>
4번 버튼
<button>버튼</button>
=> button 태그는 type 속성을 명시하지 않으면 기본저긍로 type="submit"을 갖게 된다.
=> 이때 스크린리더는 "버튼"이 아닌 "제출 버튼"으로 읽게 된다.
<button type="button">버튼</button>
반응형
'Web' 카테고리의 다른 글
웹 접근성 기술 학습 (0) | 2024.03.16 |
---|---|
웹 접근성이 왜 필요할까? (1) | 2024.02.25 |
웹 표준, 웹 호환성, 웹 접근성 (0) | 2024.02.17 |
크롬 내장 스크린리더 사용기 (1) | 2024.02.11 |
DOCTYPE html (0) | 2024.02.04 |