웹 접근성 시나리오

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

티스토리툴바