시맨틱 및 콘텐츠 탐색

페이지 탐색에서 시맨틱의 역할

앨리스 박스홀
앨리스 박스홀
데이브 개시
데이브 개시
메긴 키어니
메긴 키어니

어포던스, 시맨틱, 보조 기술이 접근성 트리를 사용하여 사용자를 위한 대체 사용자 환경을 만드는 방법에 관해 알아보았습니다. 표현력이 풍부한 시맨틱 HTML을 작성하면 많은 표준 요소에 시맨틱과 지원 동작이 모두 내장되어 있기 때문에 많은 수의 표준 요소에 기반해 간편하게 사용할 수 있습니다.

이 과정에서는 특히 탐색과 관련하여 스크린 리더 사용자에게 매우 중요한 몇 가지 덜 명확한 의미 체계를 다룹니다. 제어 기능은 많지만 콘텐츠는 많지 않은 간단한 페이지에서는 페이지를 쉽게 검색하여 필요한 것을 찾을 수 있습니다. 그러나 위키백과 항목이나 뉴스 애그리게이터와 같이 콘텐츠가 많은 페이지에서는 하향식으로 모든 내용을 읽는 것은 실용적이지 않습니다. 콘텐츠를 효율적으로 탐색할 방법이 필요합니다.

개발자는 스크린 리더가 지루하고 사용하기 느리거나 스크린 리더가 스크린 리더를 찾으려면 화면의 모든 항목에 초점을 맞출 수 있어야 한다고 오해하는 경우가 많습니다. 그렇지 않은 경우가 많습니다.

스크린 리더 사용자는 종종 제목 목록을 사용하여 정보를 찾습니다. 대부분의 스크린 리더에는 페이지 제목 목록을 쉽게 분리하고 스캔할 수 있는 방법이 있습니다. 이 기능은 로터라는 중요한 기능입니다. HTML 제목을 효과적으로 사용하여 이 기능을 지원하는 방법을 알아보겠습니다.

효과적인 제목 사용

먼저 앞서 언급한 DOM 순서가 중요합니다. 포커스 순서뿐만 아니라 스크린 리더 순서도 마찬가지입니다. VoiceOver, NVDA, JAWS, ChromeVox와 같은 스크린 리더로 실험하면 제목 목록이 시각적 순서가 아닌 DOM 순서를 따릅니다.

이는 일반적으로 스크린 리더에 적용됩니다. 스크린 리더는 접근성 트리와 상호작용하고 접근성 트리는 DOM 트리를 기반으로 하므로 스크린 리더가 인식하는 순서는 직접 DOM 순서를 기반으로 합니다. 따라서 적절한 제목 구조가 그 어느 때보다 중요해졌습니다.

잘 구성된 대부분의 페이지에서는 제목 수준이 중첩되어 콘텐츠 블록 간의 상위-하위 관계를 나타냅니다. WebAIM 체크리스트에서는 이 기법을 반복적으로 참조합니다.

  • 1.3.1 '의미 체계 마크업을 사용해 제목을 지정한다'고 언급
  • 2.4.1에서 콘텐츠 블록을 우회하는 기법으로 제목 구조를 언급함
  • 2.4.6에서는 유용한 제목을 작성하기 위한 몇 가지 세부정보를 설명합니다.
  • 2.4.10 '적절한 경우 제목을 사용하여 콘텐츠의 개별 섹션을 지정함' 상태

모든 제목이 화면에 표시되지 않아도 됩니다. 예를 들어 위키백과는 스크린 리더 및 기타 보조 기술 액세스할 수 있도록 일부 제목을 의도적으로 화면 밖에 배치하는 기술을 사용합니다.

<style>
    .sr-only {
    position:absolute;
    left:-10000px;
    top:auto;
    width:1px;
    height:1px;
    overflow:hidden;
    }
</style>

<h2 class="sr-only">This heading is offscreen.</h2>

복잡한 애플리케이션의 경우 시각적 디자인에 표시되는 제목이 필요하지 않거나 공간이 없을 때 제목을 수용하는 좋은 방법이 될 수 있습니다.

기타 탐색 옵션

제목이 올바른 페이지는 스크린 리더 사용자의 탐색에 도움이 되지만 링크, 양식 컨트롤, 랜드마크 등 페이지 내에서 이동하는 데 사용할 수 있는 다른 요소도 있습니다.

리더는 스크린 리더의 로터 기능 (페이지 제목 목록을 쉽게 분리하고 스캔하는 방법)을 사용하여 페이지의 링크 목록에 액세스할 수 있습니다. 때로는 위키에서처럼 링크가 많아서 독자가 링크 내에서 용어를 검색할 수도 있습니다. 이렇게 하면 페이지에서 해당 용어가 나타날 때마다가 아니라 실제로 해당 용어가 포함된 링크로 조회가 제한됩니다.

이 기능은 스크린 리더가 링크를 찾을 수 있고 링크 텍스트가 의미가 있는 경우에만 유용합니다. 예를 들어 다음은 링크를 찾기 어렵게 만드는 몇 가지 일반적인 패턴입니다.

  • href 속성이 없는 앵커 태그 단일 페이지 애플리케이션에서 자주 사용되는 이러한 링크 대상은 스크린 리더에 문제를 일으킵니다. 자세한 내용은 단일 페이지 앱에 관한 도움말을 참고하세요.
  • 링크로 구현된 버튼입니다. 이로 인해 스크린 리더가 콘텐츠를 링크로 해석하고 버튼 기능을 사용할 수 없게 됩니다. 이러한 경우 앵커 태그를 실제 버튼으로 바꾸고 적절한 스타일을 지정하세요.
  • 링크 콘텐츠로 사용되는 이미지 때때로 필요한 연결된 이미지를 스크린 리더에서 사용하지 못할 수 있습니다. 링크가 보조 기술에 올바르게 노출되도록 하려면 이미지에 alt 속성 텍스트가 있어야 합니다.

조악한 링크 텍스트도 또 다른 문제입니다. '자세히 알아보기' 또는 '여기를 클릭하세요'와 같이 클릭 가능한 텍스트는 링크의 위치에 대한 의미론적 정보를 제공하지 않습니다. 대신 '반응형 디자인 자세히 알아보기' 또는 '캔버스 튜토리얼 참고'와 같은 설명 텍스트를 사용하면 스크린 리더가 링크에 관한 의미 있는 컨텍스트를 제공할 수 있습니다.

로터는 양식 제어 목록도 가져올 수 있습니다. 이 목록을 사용하여 독자는 특정 항목을 검색하고 해당 항목으로 바로 이동할 수 있습니다.

스크린 리더에서 흔히 발생하는 오류는 발음입니다. 예를 들어 스크린 리더는 'Udacity'를 'oo-dacity'로 발음하거나, 전화번호를 큰 정수로 읽거나, 약어처럼 대문자 텍스트를 읽을 수 있습니다. 흥미롭게도 스크린 리더 사용자는 이러한 문제에 매우 익숙하며 이를 고려하고 있습니다.

일부 개발자는 소리나는 대로 표기하는 스크린 리더 전용 텍스트를 제공하여 이 상황을 개선하려고 합니다. 다음은 소리 나는 대로 맞춤법에 관한 간단한 규칙입니다. 하면 안 됩니다. 문제를 더 악화시킬 뿐입니다. 예를 들어 사용자가 점자 디스플레이를 사용하면 단어의 철자가 잘못되어 혼란을 야기할 수 있습니다. 스크린 리더를 사용하면 단어의 철자를 소리내어 읽을 수 있으므로 사용자가 사용 환경을 제어하고 언제 발음이 필요한지 결정할 수 있도록 합니다.

독자는 로터를 사용하여 랜드마크 목록을 확인할 수 있습니다. 이 목록을 통해 독자는 주요 콘텐츠와 HTML 랜드마크 요소에서 제공하는 일련의 탐색 랜드마크를 찾을 수 있습니다.

HTML5에 header, footer, nav, article, section, main, aside 등 페이지의 시맨틱 구조를 정의하는 데 도움이 되는 새로운 요소가 도입되었습니다. 이러한 요소는 기본 제공 스타일 지정 (어차피 CSS로 해야 함)을 강제하지 않고 페이지에 구조적 단서를 구체적으로 제공합니다.

시맨틱 구조 요소는 반복되는 여러 div 블록을 대체하며 작성자와 독자 모두에게 페이지 구조를 직관적으로 표현할 수 있는 더 명확하고 설명적인 방법을 제공합니다.