개발 이야기/JavaScript

자주 사용하는 HTML ARIA 접근성 (accessibility)

2023. 11. 20. 13:37
목차
  1. aria-checked
  2. aria-expand
  3. aria-selected
  4. aria-pressed
  5. aria-invalid
  6. aria-controls
  7. aria-current
  8. aria-label
  9. aria-labelledby
  10. aria-describedby
  11. aria-hidden

접근성

 

Accessible Rich Internet Applications, ARIA

 

HTML의 접근성 문제를 보완하여

장애를 가진 사용자가 웹 콘텐츠에 쉽게 접근할 수 있는 방법을 정의하는 여러 특성을 의미한다.

 

 

aria-checked

요소가 선택(true)되었는지, 해제(false)되었는지, 상태가 결정되지 않았는지(mixed) 알린다.

input 태그를 사용하면 불필요한 옵션이지만 불가피하게 input 태그가 아닌 경우 사용한다.

# 요소가 선택되지 않았음을 알린다.
<span
  role="checkbox"
  id="checkBoxInput"
  aria-checked="false"
  tabindex="0"
  aria-labelledby="chk15-label"></span>
<label id="chk15-label">Subscribe to the newsletter</label>

# aria-checked = (true, false, mixed)
# true = 선택
# false = 미선택
# mixed = 결정되지 않음

 

aria-expand

요소가 확장되거나 축소되거나, 보이거나, 보이지 않거나 여부를 나타낸다.

아코디언 요소에 자주 사용된다.

# 버튼을 통해 위젯이 확장할 수 있음(보일 수 있음)을 나타낸다. 
# 어느 요소가 동작하는지 aria-controls를 설정한다.
<button aria-expanded="false" aria-controls="widget1">Show widget</button>

# 반대
<button aria-expanded="true" aria-controls="widget1">Hide widget</button>

# aria-expand = (true, false)

 

aria-selected

 

 

aria-pressed

현재 버튼이 누름 상태인지 나타낸다.

현재 상태를 텍스트로 나타내지 않는, 이모지나 이미지 토글 버튼에 유효하다.

# button 태그가 활성화됨을 나타낸다.
<button aria-pressed="true">😍</button>

# 이미 텍스트로 눌린 상태를 전달하였음에도 접근성을 사용하면 혼란을 야기할 수 있다.
# 스크린 리더기 = "좋아요 눌림, 좋아요 눌림 누른 상태"
<button aria-pressed="true">좋아요 눌림</button>

# aria-pressed = (true, false, mixed)
# true = 눌림(할성화)
# false = 눌리지 않음(비활성화)
# mixed = 복합적 상태(활성화, 비활성화로만 나타낼 수 없는 요소)

 

aria-invalid

 

 

aria-controls

 

 

aria-current

현재 선택된, 활성화된, 결정된 요소를 나타낸다.

현재 선택된 페이지를 나타내는 항목에 보통은 볼드 처리하거나 디자인 처리를 하여 이 페이지에 있다는 것을 일반 사용자에게 알릴 수 있지만 시각 장애인은 이를 볼 수 없다. 이런 경우 사용한다.

# 현재 "./" 라우팅 페이지가 활성화되어 있다는 것을 알린다.
<nav aria-label="Breadcrumb" class="breadcrumb">
  <ol>
    <li>
      <a href="../../">ARIA States and Properties</a>
    </li>
    <li>
      <a href="./" aria-current="page">ARIA: `aria-current` attribute</a>
    </li>
  </ol>
</nav>

# aria-current = (page, step, location, date, time, true, false)
# page = 현재 페이지
# step = 현재 단계
# location = 현재 위치
# date = 현재 활성화된 날짜
# time = 현재 활성화된 시간
# true = 현재 활성화된 항목
# false = 없음

 

aria-label

SVG 이미지를 시각 장애인들이 볼 수 없기 때문에 텍스트로 대체해서 읽어준다.

주로 SVG로 만들어진 글씨 벡터 이미지에 사용한다.

# SVG 이미지가 닫기 버튼임을 알린다.
<button aria-label="Close" onclick="myDialog.close()">
  <svg
    aria-hidden="true"
    focusable="false"
    width="17"
    height="17"
    xmlns="http://www.w3.org/2000/svg">
    <path
      d="m.967 14.217 5.8-5.906-5.765-5.89L3.094.26l5.783 5.888L14.66.26l2.092 2.162-5.766 5.889 5.801 5.906-2.092 2.162-5.818-5.924-5.818 5.924-2.092-2.162Z"
      fill="#000" />
  </svg>
</button>

# aria-label = STRING

 

aria-labelledby

간단한 부가적 설명을 제공하는 속성이다.

참조할 영역을 선언하여 사용한다.

 

# "read more" 텍스트를 가진 a 태그는 
# "rm13", "attr" id를 가진 요소와 결합되어 리더기에 읽힌다. 
<h2 id="attr" class="article-title">13 ARIA attributes you need to know</h2>
<p>
  There are over 50 ARIA states and properties, but 13 of them stand out…
  <a href="13.html" id="rm13" aria-labelledby="rm13 attr">read more</a>
</p>

# aria-labelledby = ID

# 1. 우선 순위가 가장 높다.
# 아래 button 태그는 Yellow 와 결합된다.
<button aria-label="Blue" aria-labelledby="color">Red</button>
<span id="color">Yellow</span>

# 2. 중복은 한번만 처리된다.
# aria-labelledby="attr attr rm13 rm13"
# aria-labelledby="attr rm13"

# 3. hidden 처리된 요소에 접근할 수 있다.
# display: none 등 표시되지 말아야 할 요소와 결합된 경우 그 요소가 읽힐 수 있다.

# 4. 아래 태그는 지원하지 않는다.
# code
# caption
# deletion
# emphasis
# generic
# insertion
# mark
# paragraph
# presentaion
# string
# subscript
# superscript
# suggestion
# term
# time

 

aria-describedby

자세한 추가 설명이 필요할 때 사용한다.

참조할 영역을 선언하여 사용한다.

# button 태그가 아래 p 태그와 연관있음(설명문)을 알린다.
<button aria-describedby="trash-desc">Move to trash</button>
…
<p id="trash-desc">
  Items in the trash will be permanently removed after 30 days.
</p>

# aria-describedby = STRING

 

aria-hidden

보조 기술에서부터 요소(하위 요소 포함)를 숨긴다.

시각적으로는 보이지만 스크린 리더기에 읽히지 않아야 하는 경우(장식적인 컨텐츠, 반복된 텍스트)에 사용한다.

# 순전히 디자인 요소인(내용을 이해하는데 불필요한) ★를 제거한다. 
<button>
  <span class="color-blue" aria-hidden="true">★</span>
  <span class="label">select</span>
</button>

# aria-hidden = (false, true, undefined)
# false = 노출
# true = 숨김
# undefined = 렌더링 상태에 따라 결정

# 포커스가 가능한 요소에는 사용하면 안된다.
# HTML의 hidden 속성을 사용할 경우 추가할 필요가 없다.
# CSS의 display: none, visibility: hidden 에는 추가할 필요가 없다.

 

 

 

출처: https://developer.mozilla.org/

 

'개발 이야기 > JavaScript' 카테고리의 다른 글

Visual Studio Code 확장 프로그램(익스텐션) 추천 - 웹(Web) 개발용 40개 이상  (4) 2023.08.27
협업의 기본, 패키지 관리자는 하나만 사용해주세요.  (0) 2023.07.02
웹팩(Webpack)과 비트(Vite)의 성능을 실험해보았다.  (0) 2023.06.16
  1. aria-checked
  2. aria-expand
  3. aria-selected
  4. aria-pressed
  5. aria-invalid
  6. aria-controls
  7. aria-current
  8. aria-label
  9. aria-labelledby
  10. aria-describedby
  11. aria-hidden
'개발 이야기/JavaScript' 카테고리의 다른 글
  • Visual Studio Code 확장 프로그램(익스텐션) 추천 - 웹(Web) 개발용 40개 이상
  • 협업의 기본, 패키지 관리자는 하나만 사용해주세요.
  • 웹팩(Webpack)과 비트(Vite)의 성능을 실험해보았다.
S.H.S
S.H.S
한또리의 일기장
S.H.S
한또리의 일기장
전체
오늘
어제
  • 분류 전체보기 (35)
    • 개발 이야기 (1)
      • JavaScript (4)
      • TypeScript (0)
      • React (4)
      • Git (3)
      • Next.js (0)
      • Pattern Matching (1)
      • Terminal (1)
      • AWS (1)
      • Unity (0)
      • Python (0)
      • Ubuntu (0)
      • Aduino (0)
    • 즐거운 게임 수학 (9)
    • 개발자 면접 후기 (7)
    • 일상 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 개발자
  • 원
  • 각도
  • 컴포넌트 기반
  • 거리
  • 프론트엔드
  • 이색테마
  • 프론트엔드 면접
  • 수학
  • 회사
  • 컴포넌트 시각화
  • 패키지 관리자
  • code-owners
  • 수염 자국
  • react
  • 계산
  • 컴포넌트 렌더링
  • 신박함
  • 애니메이션
  • git

최근 댓글

최근 글

hELLO · Designed By 정상우.
S.H.S
자주 사용하는 HTML ARIA 접근성 (accessibility)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.