크롬에서 네임 값 확인
보조 기기에 전달되는 네임 값을 확인하는 방법 중 하나로 크롬 브라우저의 개발자 도구가 있다. 개발자 도구를 실행한 후, 검사할 요소를 선택하거나 접근성(Accessibility) 탭을 찾아 열면 ‘네임(Name)’값을 확인할 수 있다.
텍스트 또는 텍스트 이미지가 포함된 레이블이 있는 사용자 인터페이스 구성요소는 네임에 시각적으로 표시되는 해당 텍스트를 포함해야 한다.
음성 입력을 사용하는 사용자는 화면에 표시된 레이블을 기반으로 명령을 수행한다. 이는 음성 명령 및 보조 기술 사용자가 화면에 표시된 레이블(텍스트)을 정확히 인식하고, 해당 기능을 올바르게 실행할 수 있도록 하기 위함이다.
사용자는 화면에 보이는 레이블을 보고 음성 명령을 하거나 화면 낭독 프로그램 음성 출력을 듣고 조작 여부를 판단한다. 이때 시각적 레이블과 보조 기술이 인식하는 이름(Accessible Name)이 일치하는지가 중요하다.
레이블과 네임을 이해하기 위해 필요한 두 가지 개념이 있다.
이를 위해, ‘레이블 제공’과 ‘레이블과 네임’ 두 검사 항목에서의 ‘레이블’의 개념이 어떻게 다르게 적용되는지 구분이 필요하다.
input
, select
등)에 설명(label
의 for
속성 연결 등)이 연결되어 있는지를 점검한다. → “폼 요소에 레이블이 연결되었는가?”정리하면, 이 항목은 시각적 레이블 중 텍스트나 텍스트 이미지가 포함된 상호작용 요소인 경우만 대상이 된다.
일반적으로 시각적 텍스트 레이블이 HTML 마크업 규칙(텍스트 콘텐츠, 이미지로 제공된 경우 대체 텍스트 등)에 맞춰 올바르게 작성되면, 레이블과 접근 가능한 이름이 일치한다. 그러나 CSS로 숨김 텍스트나 aria-label
속성값이 시각적 텍스트 레이블과 다르게 설정된 경우, aria-labelledby
속성 연결이 바르지 않은 경우 등은 다음과 같은 문제가 발생할 수 있다.
따라서, 시각적 레이블과 접근 가능한 이름이 일치하는 것은 웹 접근성을 보장하고 사용자 경험을 향상하는 데 중요하다.
디자인 제약이나 기술적 한계로 완벽한 일치가 어려운 경우에는, 접근 가능한 이름에 시각적 레이블을 포함하고 이를 접근 가능한 이름의 앞부분에 배치하는 것이 필요하다.
한 페이지 내에서 네임 중복이 우려될 경우, 예를 들어 할 일 목록을 보여주는 사용자 인터페이스에서 ‘완료’라는 레이블이 여러 개 동일하게 사용되면, 모든 버튼이 단순히 ‘완료’로 인식되어 어떤 항목을 완료하는 버튼인지 구분하기 어려울 수 있다. 이럴 때는 ‘완료, 숙소 예약’ 또는 ‘완료, 항공권 가격 비교하기’처럼 구체적인 정보를 함께 제공하면, 보조기술 사용자도 버튼의 기능을 명확하게 이해할 수 있다.
다음의 경우 시각적 레이블이 없는 사례로 보며, 검사 대상이 아니다.
placeholder
만 존재하는 입력폼select
요소input
요소의 value
값만 노출된 경우사용자와 상호작용을 하는 요소에 표시되는 텍스트나 이미지(이미지는 대체 텍스트)를 말한다. 예를 들어, 버튼에 ‘제출’이라고 쓰여 있거나, 입력창 옆에 ‘이메일’이라고 표시된 텍스트, 검색을 나타내는 ‘돋보기 아이콘’ 모두 레이블이다. 이러한 레이블은 사용자가 해당 요소가 무엇을 하는지 이해하는 데 도움을 준다. 이 정의는 HTML에서 input
요소와 짝을 이루는 label
요소만을 이야기하지 않는다.
보조 기술이 상호작용 가능한 웹 콘텐츠 구성 요소를 인식하고 설명하는 데 사용하는 이름이다.
크롬에서 네임 값 확인
보조 기기에 전달되는 네임 값을 확인하는 방법 중 하나로 크롬 브라우저의 개발자 도구가 있다. 개발자 도구를 실행한 후, 검사할 요소를 선택하거나 접근성(Accessibility) 탭을 찾아 열면 ‘네임(Name)’값을 확인할 수 있다.
참고. 상호작용 요소와의 관계를 예측할 수 있는 보편적인 레이블의 위치
시각적 레이블은 일반적으로 상호작용 요소에 인접한 위치에 제공되며, 이는 사용자가 레이아웃을 스캔하며 기능을 빠르게 인식할 수 있도록 돕는다. 보통 CSS나 스크립트 등으로 위치가 인위적으로 조정되지 않는 한, 다음과 같은 위치가 예측 가능한 레이블의 배치이다.
Technique G162: Positioning labels to maximize predictability of relationships
참고. 접근 가능한 이름 계산
접근 가능한 이름은 보조 기술이 구성 요소를 인식하고 조작할 수 있도록 제공하는 정보로, 어떤 방식으로 계산되는지 이해하는 것이 필요하다. 예를 들어, 하나의 버튼에 aria-label
, aria-labelledby
, alt
등 여러 속성이 중복 제공된 경우, 우선순위를 따라 접근 가능한 이름이 결정된다. 만약 정보가 전혀 없으면 접근 가능한 이름이 없는 것으로 판단한다.
접근 가능한 이름의 대략적인 계산 순서는 아래와 같다.
aria-labelledby
속성이 있는가?aria-label
속성이 있는가?button
, input type=”submit”
과 “reset”
의 value
속성, input type=”image”
, img
, area
의 alt
속성이 있는가?label
요소가 연결되어 있는가?title
속성이 있는가?input
의 경우, placeholder
가 있는가?다음과 같이 작성된 HTML을 예시로 살펴보자.
<h3 id="idFind3">아이디 찾기 3</h3><a aria-label="아이디 찾기 2" href="#" class="my" aria-labelledby="idFind3" title="아이디 찾기 4">아이디 찾기 1</a>
여기에서는 제일 먼저 aria-labelledby
이 있는지 확인했을 때 해당 속성이 존재한다. aria-labelledby=”idFind3”
가 참조하는 h3 요소의 텍스트 값이 ‘아이디 찾기 3’ 이므로, 이 값이 접근 가능한 이름이 된다. 이 단계에서 접근 가능한 이름이 결정된다.
접근 가능한 이름을 눈에 보이는 텍스트와 일치하게 제공한다.
다음은 버튼의 접근 가능한 이름이 화면에 보이는 텍스트 레이블과 동일한 가장 일반적인 사례이다. 버튼에 ‘디지털원패스 로그인’이라는 텍스트 레이블이 제공되었으며, 보조 기술도 ‘디지털원패스 로그인’라는 이름으로 읽어 사용자가 해당 버튼의 기능을 정확하게 이해할 수 있도록 한다.
<button type="button" class="onepass" onclick="onePassLogin();"> <em>디지털원패스 로그인</em></button>
‘상세 정보’라는 레이블을 가진 버튼이 한 페이지 내 여러 개 제공되는 사례이다. 목록에서 동일한 레이블이 반복되면, 시각을 활용하기 어려운 사용자는 해당 버튼이 어떤 정보를 제공하는지 명확히 구분하기 어렵다.
따라서, 접근 가능한 이름을 ‘상세 보기, KE5741 진에어 여정’과 같이 구분할 수 있는 정보를 조합하여 함께 제공하면 사용자가 더 쉽게 이해할 수 있다.
참고로, 해당 검사 항목에서 한 페이지 내 동일한 네임이 중복 제공되는 부분을 이슈로 점검하지 않는다.
<button aria-label="상세 보기, KE5741 여정 정보" class="…">상세 보기</button>
텍스트가 기호로 사용된 경우는 시각적 레이블에 해당하지 않아 점검 대상이 아니다.
다만 에디터에서 ‘B’나 ‘I’처럼 기호 문자로 제공되는 버튼은 ‘굵게’ 또는 ‘기울임’ 등으로 기능이나 역할을 명확하게 설명하는 대체 텍스트를 제공하면 접근 가능한 이름으로 활용된다. 이렇게 하면 보조 기술 사용자도 기능을 정확하게 이해하고 사용할 수 있다.
수학 공식에서 접근 가능한 이름은 시각적 레이블과 수학 공식이 일치하도록 적절한 기호를 사용해야 한다. 예를 들어, ‘2x3’(영문 소문자), ‘2*3’(별표 기호), ‘2×3’(× 기호 포함)로 각각 표현된 수식은 시각적으로는 동일한 ‘2 곱하기 3’ 의미를 가지지만, 음성 인식 소프트웨어는 이를 각각 다르게 인식할 수 있다. 이럴 때, 보조 기술이 인식할 수 있는 곱하기 기호를 사용하거나, 필요시 MathML을 사용하여 작성할 수 있다.
예를 들어, MathML을 사용하여 루트 기호를 포함한 수식을 제공할 수 있다.
<ul> <li> <input type="radio" id="sample01"> <label for="sample01">2 × 3</label> </li> <li> <input type="radio" id="sample02"> <label for="sample02">2 + 3</label> </li> <li> <input type="radio" id="sample03"> <label for="sample03"> <math xmlns="http://www.w3.org/1998/Math/MathML"> <msqrt><mn>2</mn></msqrt> </math> </label> </li></ul>
다음은 ‘SHOW MORE’라는 시각적 텍스트 레이블을 가진 버튼의 접근 가능한 이름이 ‘Load more Instagram posts’로 설정된 사례이다.
이 경우, 시각적으로 보이는 레이블과 보조 기술이 읽어주는 접근 가능한 이름이 다르므로, 음성 명령 사용자나 화면 낭독 프로그램 사용자는 버튼의 기능을 다르게 전달받고 실행 시 원하는 결과를 얻을 수 없다.
<div class="load-more-btn"> <button aria-label="Load more Instagram posts" class="LoadMoreBtn"> <span>SHOW MORE</span> </button></div>
접근 가능한 이름을 눈에 보이는 레이블과 일치되도록 aria-label
을 삭제한다.
홈택스 상단 영역에는 로고 링크, 검색어 입력창, 검색 버튼, 전체 메뉴 버튼에 해당하는 상호작용 요소가 있다.
레이블과 네임 검사 항목의 점검 대상 여부를 살펴보자.
placeholder
)만 제공되어 시각적 텍스트 레이블이 없어 점검 대상 아님위와 같이 시각적 레이블 중 텍스트가 포함된 경우 점검 대상이 된다.
콤보박스와 검색어 입력창, 검색 버튼으로 구성된 영역이다.
placeholder
)만 제공되어 시각적 텍스트 레이블이 없어 점검 대상 아님콤보박스와 검색어 입력창, 검색 버튼으로 다양하게 구성된 영역이다.
참고로, 해당 사례에서 아이디와 비밀번호 입력창에 연결된 레이블은 CSS로 화면에서 숨긴 텍스트로 제공하고 있다. 이는 2.5.3 (레이블과 네임)이 아닌 3.3.2 (레이블 제공) 검사 항목을 통해 레이블과 입력창이 바르게 연결되어 있는지 점검한다.
한국지능정보사회진흥원 © National Information Society Agency. All Rights Reserved.