본문 바로가기
웹 디자인

[웹 디자인] 28일차: 웹 접근성 고려한 디자인

by cogito21_js 2024. 8. 28.
반응형

웹 접근성이란?

웹 접근성(Web Accessibility)은 모든 사용자가 웹 콘텐츠에 접근하고 사용할 수 있도록 보장하는 것을 의미합니다. 여기에는 장애를 가진 사용자뿐만 아니라, 다양한 기기와 환경에서 웹 사이트를 사용하는 모든 사용자가 포함됩니다.

웹 접근성의 중요성

  • 포용성: 모든 사용자가 웹사이트를 사용할 수 있도록 하여 포용성을 증진합니다.
  • 법적 요구사항: 많은 국가에서는 웹 접근성을 법으로 요구하고 있습니다.
  • 사용자 경험 향상: 접근성 개선은 모든 사용자의 경험을 향상시킵니다.

웹 접근성을 고려한 디자인 원칙

1. 인식할 수 있어야 한다(Perceivable)

모든 사용자, 특히 시각, 청각 장애를 가진 사용자가 콘텐츠를 인식할 수 있어야 합니다.

 

이미지에 대체 텍스트 추가

이미지에 alt 속성을 사용하여 대체 텍스트를 제공합니다.

<img src="image.jpg" alt="설명 가능한 이미지">

 

비디오에 자막 추가

비디오 콘텐츠에 자막을 추가하여 청각 장애가 있는 사용자가 내용을 이해할 수 있도록 합니다.

<video controls>
  <source src="video.mp4" type="video/mp4">
  <track src="subtitles.vtt" kind="subtitles" srclang="en" label="English">
</video>

 

2. 조작할 수 있어야 한다(Operable)

모든 기능은 키보드와 같은 다양한 입력 장치로 조작할 수 있어야 합니다.

 

키보드 내비게이션 지원

키보드로 웹사이트를 탐색할 수 있도록 tabindex 속성을 사용합니다.

<a href="#content" tabindex="1">콘텐츠로 건너뛰기</a>
<button tabindex="2">버튼</button>

 

적절한 포커스 스타일 제공

포커스가 있는 요소에 시각적인 피드백을 제공합니다.

button:focus {
  outline: 2px solid #000;
}

 

3. 이해할 수 있어야 한다(Understandable)

콘텐츠와 인터페이스가 이해하기 쉬워야 합니다.

 

명확한 라벨과 지침 제공

입력 필드와 버튼에 명확한 라벨과 지침을 제공합니다.

<label for="name">이름</label>
<input type="text" id="name" name="name" aria-required="true">

 

4. 견고해야 한다(Robust)

콘텐츠가 다양한 사용자 에이전트(예: 브라우저, 스크린 리더)에서 잘 작동해야 합니다.

 

표준 준수 코드 작성

HTML, CSS, 자바스크립트를 표준에 맞게 작성하여 다양한 환경에서 호환성을 보장합니다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>웹 접근성 고려한 디자인</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <!-- 콘텐츠 -->
</body>
</html>

 

웹 접근성 테스트 도구

1. WAVE

WAVE는 웹 접근성 평가 도구로, 웹 페이지의 접근성 문제를 시각적으로 표시합니다. WAVE는 브라우저 확장 프로그램으로 사용할 수 있습니다.

2. Lighthouse

Lighthouse는 구글 크롬의 개발자 도구에 내장된 접근성 평가 도구로, 웹 페이지의 접근성을 포함한 다양한 성능 지표를 제공합니다.

3. Axe

Axe는 자동화된 접근성 테스트 도구로, 브라우저 확장 프로그램으로 사용할 수 있으며, 개발자 도구와 통합하여 접근성 문제를 식별합니다.

접근성 향상 예제

HTML 구조

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>웹 접근성 고려한 디자인</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <header>
    <h1>Accessible Web Design</h1>
    <nav>
      <ul>
        <li><a href="#home">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#services">Services</a></li>
        <li><a href="#contact">Contact</a></li>
      </ul>
    </nav>
  </header>

  <main>
    <section id="home">
      <h2>Home</h2>
      <p>Welcome to our website!</p>
    </section>
    <section id="about">
      <h2>About</h2>
      <p>Learn more about us.</p>
    </section>
    <section id="services">
      <h2>Services</h2>
      <p>Discover our services.</p>
    </section>
    <section id="contact">
      <h2>Contact</h2>
      <form id="contact-form">
        <label for="name">Name</label>
        <input type="text" id="name" name="name" aria-required="true">
        <label for="email">Email</label>
        <input type="email" id="email" name="email" aria-required="true">
        <label for="message">Message</label>
        <textarea id="message" name="message" aria-required="true"></textarea>
        <button type="submit">Submit</button>
      </form>
    </section>
  </main>
</body>
</html>

CSS 스타일

body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 0;
  background-color: #f4f4f4;
}

header {
  background-color: #333;
  color: white;
  padding: 20px;
  text-align: center;
}

nav ul {
  list-style: none;
  padding: 0;
}

nav ul li {
  display: inline;
  margin: 0 15px;
}

nav ul li a {
  color: white;
  text-decoration: none;
}

nav ul li a:focus,
nav ul li a:hover {
  text-decoration: underline;
}

main {
  padding: 20px;
}

label {
  display: block;
  margin-bottom: 5px;
}

input[type="text"],
input[type="email"],
textarea {
  width: 100%;
  padding: 10px;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  border-radius: 4px;
}

button {
  padding: 10px 15px;
  background-color: #333;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}

button:focus,
button:hover {
  background-color: #555;
}

결론

웹 접근성은 모든 사용자가 웹 콘텐츠에 접근하고 사용할 수 있도록 보장하는 중요한 요소입니다. 인식할 수 있고, 조작할 수 있으며, 이해할 수 있고, 견고한 웹사이트를 만들기 위해 다양한 접근성 원칙을 적용해야 합니다. 이번 글에서는 웹 접근성의 중요성과 접근성을 고려한 디자인 원칙 및 예제에 대해 배웠습니다.

다음 글에서는 최종 프로젝트 계획 및 디자인에 대해 알아보겠습니다.

다음 글에서 만나요!

 

반응형