아이콘 버튼

아이콘 버튼의 accessible name을 점검하는 실제 순서

텍스트 없는 SVG 아이콘 버튼의 Accessible Name 계산 방식, aria-hidden='true' 및 aria-label 적용 가이드를 다룹니다.

작성자 서호영 (기획·개발·콘텐츠 검토) · 발행 · 수정 · 읽기 8

아이콘 전용 버튼의 접근 가능한 이름(Accessible Name) 구조텍스트 없이 SVG 아이콘만 있는 버튼은 aria-label이나 sr-only 텍스트를 제공하지 않으면 스크린리더가 이름을 알 수 없습니다.WCAG 2.2 4.1.2 & Accessible Name Computation (AccName)이름 없는 SVG 버튼FAIL (4.1.2)접근성 트리: "버튼" (이름 없음)AccName 계산 결과: 빈 문자열("")aria-label 또는 sr-only 텍스트aria-label="검색"PASS (AA)접근성 트리: "검색, 버튼" 노출내부 SVG는 aria-hidden="true"로 중복 읽기 방지
자체 검증 도식: 아이콘 전용 버튼에는 aria-label="동작 설명"처럼 버튼 자체에 접근 가능한 이름을 제공하거나, 화면에는 보이지 않지만 보조기술에 전달되는 동작 설명 텍스트를 배치할 수 있습니다. 장식용 SVG에는 aria-hidden="true"를 지정하는 방법을 검토하세요.

실무 검증 기록

마크업 및 접근성 트리 대조

본 기록은 공개 fixture와 재현 조건을 기준으로 정리한 기술 설명입니다. 실제 브라우저·스크린리더 조합의 동작은 별도 수동 검토가 필요합니다.

접근성 기술 검증 상세 내역
검증 상태공개 fixture 기반 재현 완료
검증 기준공개 fixture 및 재현 조건
검증 범위SVG 아이콘 단독 버튼의 Accessible Name 계산 검증 및 명시된 입력값에 한정
수동 확인실제 브라우저·키보드·스크린리더 환경에서 별도 확인 필요
fixture에서 확인한 기대 결과[실패 상태] 접근 가능한 이름이 빈 문자열 ➔ [수정 목표] aria-label 또는 sr-only 이름 추가

검증에 사용된 실제 픽스처 / 재현 조건

텍스트 없는 button + SVG + aria-hidden
검증 범위 및 한계
  • SVG 내부에 <title>과 버튼의 aria-label이 동시 존재할 때의 우선순위 브라우저별 미세 차이
  • 다국어 번역 시 sr-only 텍스트 누락 위험

주장과 직결된 W3C 공식 규격

텍스트 없이 SVG 아이콘만 포함된 버튼에서 SVG에 aria-hidden='true'를 지정하고 버튼 자체에 대체 텍스트(aria-label 또는 .sr-only)를 제공하지 않으면 접근 가능한 이름이 빈 문자열(empty string)로 산출됩니다. 텍스트 없는 대화형 요소의 이름 계산 원리와 SVG 숨김·대체 텍스트 부여 방식을 분석합니다.

Accessible Name 산출 알고리즘과 SVG 아이콘의 문제

접근 가능한 이름은 보조기술이 컨트롤을 식별하는 데 사용되는 중요한 정보입니다.

버튼 내부의 <svg> 태그에 <title>이 지정되어 있더라도 브라우저와 스크린리더 조합에 따라 SVG의 이름 전파 동작이 다를 수 있으므로, 버튼 자체에 접근 가능한 이름을 제공하는 구현을 우선 검토하세요. 상위 button 요소에 명시적인 aria-label 또는 sr-only 텍스트를 제공하는 방법을 사용할 수 있으며, 지원 대상 환경에서 별도 확인이 필요합니다.

SVG 태그의 aria-hidden='true' 지정 필요성

<button aria-label='검색'><svg>...</svg></button> 구조를 작성할 때 내부 <svg> 요소에 aria-hidden='true' 속성을 주지 않으면, 일부 보조기술이 SVG 내부 경로(path)나 g 태그를 별도 그래픽 요소로 인지하여 자식 요소를 중복 탐색할 수 있습니다.

따라서 장식용 SVG 아이콘은 aria-hidden='true'로 브라우저 접근성 트리에서 숨기고, 버튼 상위 태그에 aria-label을 부여하는 것은 일반적으로 사용할 수 있는 구현 패턴 중 하나입니다.

아이콘 버튼 접근명 보완 구현 코드 모음

아이콘 버튼의 접근명을 보완하는 HTML/JSX 패턴 예시입니다.

  • aria-label 권장 패턴: <button type='button' aria-label='검색'><svg aria-hidden='true'>...</svg></button>
  • sr-only 권장 패턴: <button type='button'><svg aria-hidden='true'>...</svg><span class='sr-only'>검색</span></button>
  • 주의 패턴: <button type='button'><svg>...</svg></button> (접근명 누락)

흔한 마크업 안티패턴과 올바른 예방책

잘못된 마크업 패턴올바른 접근성 구현
<button><svg>...</svg></button> 형태로 작성하고 aria-label 및 내부 대체 텍스트를 완전히 생략하는 것button 요소에 aria-label 속성을 추가하거나 내부 .sr-only span 텍스트를 배치합니다.
SVG 내부 <title> 태그만 작성하고 <button> 자체에는 아무런 접근성 속성을 주지 않는 것SVG title 속성의 스크린리더 호환성 공백을 고려하여 상위 button 요소에 aria-label을 명시합니다.

보조공학 낭독 및 브라우저 파싱 한계

  • 아이콘 버튼의 aria-label에 '검색 버튼'처럼 '버튼' 역할을 중복 기재하면 '검색 버튼, 버튼'으로 중복 낭독됩니다.
  • 버튼 내부 SVG에 aria-hidden="true"를 빠뜨리면 일부 보조기술에서 그래픽 요소를 불필요하게 낭독할 수 있습니다.

주요 공식 상세 규격

규격 검토 기준일 2026-08-11

작성 및 검토 책임 정보

  • 작성자: 서호영
  • 실제 수행 역할: 기획·개발·콘텐츠 검토
  • 최초 작성일:
  • 최종 수정일:
  • 검증 기준: 공개 fixture 및 재현 조건

네이티브 HTML, ARIA 명세, 브라우저 및 스크린리더 조합에 따라 실제 보조공학 동작은 차이가 발생할 수 있습니다. 오류를 발견하셨거나 검증 데이터에 보완이 필요한 경우 오류 제보 및 문의 또는 liebe2460@naver.com로 알려주시면 사실 확인 후 정정합니다.