HooneyLog

웹접근성 향상시키 (feat : WAI-ARIA)

프로필 이미지

Seunghoon Shin

2022년 9월 9일 12:17

어떻게하면 더욱 더 많은 사람들이 우리의 웹서비스를 이용 하게 만들 수 있을까?

인터넷을 이용하는 사람들 중에서 서로 각각 다른 환경에서 사용하는 경우가 많다.

예를들어, 키보드로만 웹서비스를 사용하는 사람이 있을것이고, 스크린리더기로 웹서비스를 사용하는 사람이 있을것이다. 이 모든 사람들에게 우리의 웹서비스를 이용 할 수 있게 만드는것이 핵심이다.

스크린리더기와 같은 보조적인 기술을 사용하여 웹서비스를 이용할때, 브라우저의 컨텐츠를 이용해야하는데 이때 DOM tree에 직접적으로 접근하여 interact를 하지않으며, 대신에 Accessibility tree를 사용하여 interact를 하게된다.

Accessibility Tree란?

  • 접근성에 초점이 맞춰진 컨텐츠를 포함한 트리
  • 스크린리더기가 이해할 수 있게 만들어진 트리
  • 대표적으로 name, description, role, state 4가지의 프로퍼티가 존재한다
  • 접근성이 좋은 HTML 만들기

  • descriptive 한 content를 사용하며 alt 프로퍼티를 사용한다
  • semantic tag를 사용한다
  • 마우스없이 키보드로만도 적절하게 웹서비스 이용이 가능하게 하도록 한다.\
  • 일반적으로는 semantic tag를 적절하게 사용하는 것만으로 충분하다. 하지만 가끔씩 웹서비스가 복잡해질수록 좀 더 구체적일 필요성이 있을 수가 있는데, 그때 WAI-ARIA 를 사용할 수 있다.

    WAI-ARIA

  • Web Accessibility Initiative 의 약자이다
  • 개발자가 의도한 유저 행동이나 추가 정보를 스크린 리더기와 같은 보조 기술에 전달하여 더욱 더 향상된 웹접근성을 제공한다
  • ARIA를 적용시킨 예제

    <ol role="tablist">
      <li id="tab1" role="tab" aria-controls="panel1" aria-selected="true">Tab1</li>
      <li id="tab2" role="tab" aria-controls="panel2" aria-selected="false">Tab2</li>
      <li id="tab3" role="tab" aria-controls="panel3" aria-selected="false">Tab3</li>
    </ol>
    
    <div role="tabpanel" id="panel1" aria-labelledby="tab1">
      <p>
        Panel 1
      </p>
    </div>
    
    <div class="hidden" role="tabpanel" id="panel2" aria-labelledby="tab2">
      <p>
        Panel 2
      </p>
    </div>
    
    <div class="hidden" role="tabpanel" id="panel3" aria-labelledby="tab3">
      <p>
        Panel 3
      </p>
    </div>