웹 접근성 시나리오

2024. 2. 21. 22:03·Web
반응형

웹 접근성 공부를 위해서 공부한 내용 시리즈

▶ 2024.02.17 - [Web] - 웹 표준, 웹 호환성, 웹 접근성

▶ 2024.02.21 - [Web] - 웹 접근성 시나리오 <= 현재 글

▶ 2024.02.25 - [Web] - 웹 접근성이 왜 필요할까?

▶ 2024.03.16 - [Web] - 웹 접근성 기술 학습

▶ 2024.03.20 - [Web] - 웹 접근성 시나리오 - 2

▶ 2024.03.24 - [Web] - 랜드마크 롤

▶ 2024.03.27 - [Web] - WAI-aria

▶ 2024.03.31 - [Web] - 웹 접근성 시나리오 - 3

▶ 2024.04.04 - [Web] - 사용자가 입력하는 이미지

▶ 2024.04.06 - [Web] - 구글 SEO


웹 접근성 시나리오 - 버튼

// 1
<span class="btn">버튼</span>

// 2 
<div class="btn">버튼</div>

// 3
<a href="/" class="btn">버튼</a>

// 4
<button>버튼</button>

1 ~ 4번 버튼 중 어떤 버튼이 [ 잘 만든 버튼 ]일까? 

정답은 전부 잘 만들지 못한 버튼이다. 

 

버튼의 조건 

  1. 버튼의 역할을 가지고 있어야 한다 ( 토글, 팝업 열기 등 )
    페이지 이동과 같은 기능은 버튼의 역할이 아니다. 

  2. 버튼의 이름을 식별할 수 있어야 한다. 
    스크린리더를 통해 듣더라도 버튼인 것을 인지할 수 있어야 한다. 

  3. 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
'Web' 카테고리의 다른 글
  • 웹 접근성 기술 학습
  • 웹 접근성이 왜 필요할까?
  • 웹 표준, 웹 호환성, 웹 접근성
  • 크롬 내장 스크린리더 사용기
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    덤프
    리얼클래스
    타일러영어
    자바스크립트
    식물
    Node.js
    영어회화
    타입스크립트
    바질 키우기
    프로그래머스
    next.js
    리액트
    typescript
    javascript
    바질
    ChatGPT
    네이버 부스트캠프
    알고리즘
    CSS
    다이소
    영어독학
    Babel
    react
    CCNA
    네트워크
    webpack
    리얼학습일기
    ReactNative
    redux
    Docker
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
웹 접근성 시나리오
상단으로

티스토리툴바