전체 목록
프론트엔드Medium#447

접근성 관점에서 aria-label과 visually hidden text는 언제 사용하나요?

#프론트엔드#접근성#ARIA#스크린리더

답변 포인트

화면에는 아이콘만 보이지만 스크린 리더에는 의미를 전달해야 하는 상황을 떠올려보세요.

정답 및 해설

빠른 요약

아이콘 버튼처럼 시각적으로는 의미가 분명하지만 텍스트가 없는 UI는 스크린 리더 사용자에게 불친절할 수 있습니다. 이때 접근 가능한 이름(accessible name)을 제공해야 합니다.

아이콘 버튼처럼 시각적으로는 의미가 분명하지만 텍스트가 없는 UI는 스크린 리더 사용자에게 불친절할 수 있습니다. 이때 접근 가능한 이름(accessible name)을 제공해야 합니다.

aria-label은 요소에 직접 읽힐 이름을 부여합니다.

HTML
<button aria-label="검색">
  <SearchIcon />
</button>

짧고 고정된 이름에는 적합하지만, 화면에 보이는 텍스트와 다르면 사용자 경험이 어긋날 수 있습니다. 번역 관리도 놓치기 쉽습니다.

visually hidden text는 화면에는 보이지 않지만 보조 기술에는 읽히는 텍스트를 DOM에 넣는 방식입니다.

HTML
<button>
  <SearchIcon />
  <span class="sr-only"></span>
</button>

이 방식은 실제 텍스트 노드가 있어 번역, 테스트, 콘텐츠 관리가 비교적 자연스럽습니다. 상태가 바뀌는 버튼이라면 “메뉴 열기/닫기”처럼 현재 동작을 명확히 전달해야 합니다.

주의할 점은 ARIA로 잘못된 의미를 덮어쓰기보다 먼저 semantic HTML을 쓰는 것입니다. 버튼이면 div role="button"보다 button을 쓰는 것이 기본입니다. ARIA는 부족한 의미를 보완하는 도구이지, HTML 의미론을 대체하는 만능키가 아닙니다.

관련 질문

같은 카테고리/태그 기준