웹페이지를 만드는 것은 단순히 웹페이지를 만드는 것이 아닙니다. 프런트엔드 개발의 중요한 측면은 시각 및 청각 장애인을 포함하여 인터넷에서 모든 사람이 사용자 인터페이스에 액세스할 수 있도록 하는 것입니다. 이러한 사람들을 염두에 두고 코드를 작성해야 합니다. 시각 장애인이 비시각 장애인과 동등하게 웹사이트에 액세스할 수 있도록 하려면 어떻게 해야 할까요? 이 글을 읽고 알아보세요.

개발자가 웹 접근성에 관심을 가져야 하는 이유는 무엇인가요?

웹 접근성은 장애 유무에 관계없이 모든 사람이 웹에 동등하게 액세스할 수 있어야 한다는 생각에서 출발합니다. 접근성이 뛰어난 웹사이트를 보유하면 더 많은 잠재고객(전 세계 인구의 약 16%가 한 가지 이상의 장애를 겪고 있음)에게 쉽게 다가갈 수 있습니다.

디지털 접근성은 개발자에게 선택 사항이 되어서는 안 됩니다. 모든 전문 브랜드에게는 필수입니다. 버라이어티 에서 보도한 바와 같이, 2019년에 접근성이 낮은 웹사이트를 이유로 누군가가 포켓몬 컴퍼니를 고소했습니다.

HTML을 사용한 웹 접근성

HTML에는 접근 가능한 웹 사이트 개발을 보장하는 규칙이 있습니다. 이 섹션에서는 이러한 규칙 중 일부를 설명합니다.

시맨틱 요소 사용

HTML의 시맨틱 요소는 의미를 가진 요소입니다. HTML5에는 약 100개의 요소가 있습니다.

과 같은 일부 요소는 비의미적 요소인 반면 다른 HTML 태그는 의미적 요소입니다. 이러한 비의미적 요소의 사용을 중단하는 것은 불가능할 수도 있지만, 가능한 한 많은 의미적 요소를 작업에 통합하는 것이 중요합니다. 다음은 자주 사용되는 시맨틱 요소 목록입니다:

<기사>

<옆으로>

<바닥글>

< header&t;

<main&t;

<nav&t;

Taaskly의 예시를 고려하십시오:

위 이미지를 한 눈에 보면 다음과 같은 요소를 확인할 수 있습니다:

⭐ 제목

⭐ 이미지

⭐ 단락

⭐ 버튼 3개

개발자가 화면의 요소를 정렬하기 위해

태그를 사용했다고 쉽게 가정할 수 있습니다. 코드를 자세히 살펴보면 대신 6개의 시맨틱 태그를 사용했음을 알 수 있습니다. 단순화된 코드는 다음과 같습니다:

 <section>
<img src="/hero.png" alt="hero">
<article>
<h1>Find the right Products and Services at the right time.</h1>
<p>
Handmade footwear, hair revamp, social media manager, sending errands, source of income</b> &mdash; you name it, Taaskly got it. Find every product or service you need today when you sign up and use Taaskly.
</p>
<a href="/main/home">Outsource a Task</a>
<a href="/main/services"> Find a service</a>
<a href="/main/marketplace" >Find a shop</a>
</article>
</section>

HTML 스니펫에서 다음을 관찰할 수 있습니다:

⭐ 이미지, 텍스트 및 버튼이 <섹션> 요소 안에 있습니다.

⭐ <섹션> 요소는 <이미지>와 <기사> 요소를 동일하게 나눕니다.

⭐ <기사> 요소는

,

요소를 포함합니다.

⭐ 버튼은 요소로 코딩되어 있으므로 버튼이 아닌 링크입니다. 일반적으로 사용자를 다른 페이지나 보기로 안내하려면 항상 링크를 사용하고, 사용자가 동일한 보기에서만 작업을 수행하도록 하려는 경우에는 버튼을 사용하세요. 이에 대한 자세한 내용은 Angular의 버튼 페이지 를 참조하세요.

랜드마크를 사용하여 명확한 페이지 구조 제공

랜드마크는 시각 장애인이 화면 리더로 웹 페이지를 탐색하는 데 도움이 되는 시맨틱 태그입니다. 랜드마크를 사용하면 웹 페이지의 여러 부분을 쉽게 정의할 수 있습니다. Apple의 웹사이트 은 랜드마크를 사용합니다.

위 이미지는 네 가지 랜드마크를 보여줍니다. 접근성 인사이트 확장 프로그램을 사용하여 이러한 랜드마크를 시각화할 수 있습니다.

이미지에서 상단의 <내비게이션>, <섹션>이 포함된 <바닥글>, <내비게이션> 요소를 추론할 수 있습니다. 이미지에 ‘탐색’, ‘지역’, ‘콘텐츠 정보’가 눈에 띄게 표시됩니다. 이를 역할이라고 하며 나중에 살펴보겠습니다.

페이지에 여러 개의 랜드마크를 사용해야 할 때는 항상 레이블로 랜드마크를 구분하세요. 예를 들어 Apple처럼 여러 개의 <내비게이션> 요소를 사용하는 경우 레이블을 지정해야 합니다. aria-label 속성을 사용하여 레이블을 지정해야 합니다. 따라서 다음과 같이 작성할 수 있습니다:

 <nav aria-label = "global">
<nav aria-label = "local navigation">
<nav aria-label = "apple directory">

레이블을 사용하면 화면 리더가 탐색을 건너뛰는 데 도움이 될 수 있습니다.

역할, 이름 및 값 속성 활용

접근성 기능이 내장된 HTML 요소를 사용할 수 없는 경우도 있습니다.

⭐ 달성하려는 목적에 맞는 기본 HTML 요소가 없는 경우입니다. 예를 들어, 다른 요소가 그 역할에 적합하지 않아서

를 사용해야 하는 경우입니다.

⭐ 기술적 문제로 인해 시맨틱 요소를 사용할 수 없는 경우. ‘nav’를 사용하는 것이 더 좋았을 때 ‘header’를 사용하는 프레임워크를 사용하는 경우 사용자 정의 컨트롤을 정의하는 것이 귀하의 의무입니다.

사용자 정의 컨트롤을 정의하려면 요소에 대한 역할, 이름 및 값(경우에 따라)이 필요합니다.

역할

기본적으로 <내비게이션> 요소는 내비게이션 역할을 하고 <헤더> 요소는 배너 역할을 합니다. 이러한 요소는 보조 기술이 웹 페이지의 구조를 이해하는 데 도움이 되도록 의도된 용도로만 사용해야 합니다. 둘 중 하나를 다른 역할 대신 사용해야 하는 경우 다음과 같이 역할을 지정해야 합니다:

 <header role = "navigation">
<nav role = "banner">
<div role = "navigation">

이름

이름은 HTML 요소와 관련된 설명 텍스트 또는 레이블입니다. 가장 쉬운 형태의 이름은 요소의 텍스트입니다. 다음은 예시입니다:

 <div role = "button">Click me!</div>

위 코드조각에서 “Click me!”는

요소의 이름입니다. 접근 가능한 이름이라고도 합니다.

탐색, 드롭다운 등과 같은 요소의 경우 이름을 지정하는 것이 이전 예제보다 더 복잡합니다. 이러한 요소에는 하위 요소가 포함되어 있기 때문입니다. 위의 탐색에 이름을 지정하려면 aria-label 속성을 사용합니다. 이 예시를 보세요:

 <nav role = "navigation" aria-label = "global-navigation">...</nav>

이름 속성은 접근 가능한 이름과 다르다는 점에 유의해야 합니다. 이 코드 스니펫을 보면 더 잘 이해할 수 있습니다:

 <!-- name attribute -->
<nav role = "navigation" name = "global-navigation">...</nav>

<!-- accessible name -->
<nav role = "navigation" aria-label = "global-navigation">...</nav>

이에 대한 자세한 내용은 접근 가능한 이름 에 대한 TGPi의 문서를 참조하세요.

HTML에서 값 속성은 요소에 대한 추가 정보를 제공할 수 있습니다. 값은 아코디언과 같은 사용자 정의 컴포넌트에 대한 컴포넌트의 상태에 대한 정보를 제공합니다. 예를 들어 아코디언은 열리거나 닫힐 수 있습니다.

여러 가지 방법으로 요소에 값을 추가할 수 있습니다. 이 스니펫은 몇 가지 방법을 보여줍니다:

 <!-- aria-valuenow -->
<button class="play-button" aria-label="Play audio" aria-valuenow="0"></button>
<audio src="audio-file.mp3"></audio>

<!--aria-expanded-->
<div role="button" aria-expanded="false">FAQ 1</div>

<!--value-->
<input type="checkbox" name="product[]" value="1">

포용적인 온라인 경험을 위한 웹 접근성 우선순위 정하기

웹 접근성은 규칙을 따르는 것을 넘어 모든 사람이 웹사이트에 동등하게 액세스할 수 있도록 보장하는 것입니다. 의미적 요소, 랜드마크, 역할, 이름, 값과 같은 속성을 HTML에 통합하면 장애인이 웹 사이트에 더 쉽게 액세스할 수 있습니다. 웹 접근성을 선택 사항으로 생각하지 말고 필수 사항으로 생각하세요.

이 글도 확인해 보세요:  Reqwest로 Rust에서 HTTP 요청 만들기

By 김민수

안드로이드, 서버 개발을 시작으로 여러 분야를 넘나들고 있는 풀스택(Full-stack) 개발자입니다. 오픈소스 기술과 혁신에 큰 관심을 가지고 있고, 보다 많은 사람이 기술을 통해 꿈꾸던 일을 실현하도록 돕기를 희망하고 있습니다.