모바일 웹 어플리케이션...

51
모바일 웹 어플리케이션 접근성 조 은 NHN Technology Services UIT Development Office [email protected] http://techhtml.org

Transcript of 모바일 웹 어플리케이션...

Page 1: 모바일 웹 어플리케이션 접근성

모바일 웹 어플리케이션 접근성

조 은

NHN Technology ServicesUIT Development Office

[email protected]

http://techhtml.org

Page 2: 모바일 웹 어플리케이션 접근성

모바일 웹

Page 3: 모바일 웹 어플리케이션 접근성

모바일 웹 접근성

Page 4: 모바일 웹 어플리케이션 접근성

모바일 웹 접근성 지침

Page 5: 모바일 웹 어플리케이션 접근성

모바일 웹 접근성 지침

Page 6: 모바일 웹 어플리케이션 접근성

모바일 앱 접근성 지침한국형 웹 콘텐츠 접근성 지침

Page 7: 모바일 웹 어플리케이션 접근성

모바일 앱 접근성 지침한국형 웹 콘텐츠 접근성 지침

Page 8: 모바일 웹 어플리케이션 접근성

하던 것만 잘 지켜도…

Page 9: 모바일 웹 어플리케이션 접근성

하던 것만 잘 지켜도…그러나

Page 10: 모바일 웹 어플리케이션 접근성

하던 것만 지켜도…그러나

모바일 웹 어플리케이션 모범 사례

http://html5.clearboth.org/mwbp

Page 11: 모바일 웹 어플리케이션 접근성

다양한 입력장치를 고려하세요.

http://html5.clearboth.org/mwbp

Page 12: 모바일 웹 어플리케이션 접근성

포인터 터치

화면제어

Page 13: 모바일 웹 어플리케이션 접근성

자바스크립트 없는 버전도지원할 필요가 있을 수 있습니다.

http://html5.clearboth.org/mwbp

Page 14: 모바일 웹 어플리케이션 접근성

모바일 앱 접근성 지침한국형 웹 콘텐츠 접근성 지침

모바일 웹 어플리케이션 모범사례+

Page 15: 모바일 웹 어플리케이션 접근성

한국형 웹 콘텐츠 접근성 지침모바일 웹 어플리케이션 모범사례+

Page 16: 모바일 웹 어플리케이션 접근성

널리 모바일 웹 접근성 체크리스트

http://nuli.nhncorp.com/accessibility/nwcag/checklist

Page 17: 모바일 웹 어플리케이션 접근성

WAI-ARIAW3C Recommendation

Page 18: 모바일 웹 어플리케이션 접근성

요소에 역할, 상태, 속성을부여하자

Page 19: 모바일 웹 어플리케이션 접근성

요소에 역할을부여하자

Page 20: 모바일 웹 어플리케이션 접근성

<ul> <li><a href=“#webtoon”>뿜/웹툰</a></li> <li><a href=“#videos”>동영상</a></li> <li><a href=“#app”>앱/게임</a></li></ul>

<section id=“webtoon”> <h1 class=“blind”>뿜/웹툰</h1></section>

<section id=“videos”> <h1 class=“blind”>동영상</h1></section>

<section id=“app”> <h1 class=“blind”>앱/게임</h1></section>

Page 21: 모바일 웹 어플리케이션 접근성

<ul> <li><a href=“#webtoon”>뿜/웹툰</a></li> <li><a href=“#videos”>동영상</a></li> <li><a href=“#app”>앱/게임</a></li></ul>

<section id=“webtoon”> <h1 class=“blind”>뿜/웹툰</h1></section>

<section id=“videos”> <h1 class=“blind”>동영상</h1></section>

<section id=“app”> <h1 class=“blind”>앱/게임</h1></section>

Page 22: 모바일 웹 어플리케이션 접근성

<ul> <li><a href=“#webtoon”>뿜/웹툰</a></li> <li><a href=“#videos”>동영상</a></li> <li><a href=“#app”>앱/게임</a></li></ul>

<section id=“webtoon”> <h1 class=“blind”>뿜/웹툰</h1></section>

<section id=“videos”> <h1 class=“blind”>동영상</h1></section>

<section id=“app”> <h1 class=“blind”>앱/게임</h1></section>

Page 23: 모바일 웹 어플리케이션 접근성

<ul> <li><a href=“#webtoon” role=“tab">뿜/웹툰</a></li> <li><a href=“#videos” role=“tab">동영상</a></li> <li><a href=“#app” role=“tab">앱/게임</a></li></ul>

<section id=“webtoon” role=“tabpanel”> <h1 class=“blind”>뿜/웹툰</h1></section>

<section id=“videos” role=“tabpanel”> <h1 class=“blind”>동영상</h1></section>

<section id=“app” role=“tabpanel”> <h1 class=“blind”>앱/게임</h1></section>

Page 24: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리

Page 25: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리

Document Structure Roles

Abstract RolesWidget Roles

Landmark Roles

Page 26: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리Abstract Roles

온톨로지를 위해 사용하는 역할입니다.콘텐츠에 사용해서는 안됩니다.

Page 27: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리

Widget Roles위젯에서 사용하는 유저 인터페이스를 나타낼 때 사용합니다.

Page 28: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리

문서의 구조를 나타낼 때 사용합니다.

Document Structure Roles

Page 29: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리

페이지의 네비게이션을 나타낼 때 사용합니다.

Page 30: 모바일 웹 어플리케이션 접근성

Role의 4가지 카테고리

페이지의 네비게이션을 나타낼 때 사용합니다.

Landmark Roles

Page 31: 모바일 웹 어플리케이션 접근성

Ajax 접근성

Page 32: 모바일 웹 어플리케이션 접근성

페이지 일부분을 업데이트하기 위한정보를 서버에 바로 요청

Page 33: 모바일 웹 어플리케이션 접근성

사용자 입력 값의 유효성 검사에 용이

Page 34: 모바일 웹 어플리케이션 접근성

이 때 동적 변경 영역을Live Region이라 합니다

Page 35: 모바일 웹 어플리케이션 접근성

스크린리더에 따라 못 읽어 줄 수도 있다.

Page 36: 모바일 웹 어플리케이션 접근성

AJAX의 단점을 해결할 4개의 속성들

Page 37: 모바일 웹 어플리케이션 접근성

aria-busy (state)

aria-livearia-atomic

aria-relevant

AJAX의 단점을 해결할 4개의 속성들

Page 38: 모바일 웹 어플리케이션 접근성

AJAX의 단점을 해결할 4개의 속성들aria-live

콘텐츠가 업데이트 될 때 그 내용을r 보조기기에 알려주는 시점을 결정합니다.

Page 39: 모바일 웹 어플리케이션 접근성

<ul> <li><strong>아이유</strong></li> <li><strong>아이유</strong> 봄사랑벚꽃말고</li> <li><strong>아이유</strong> 단발</li> <li><strong>아이유</strong> 은혁</li> <li><strong>아이유</strong> 다이어트</li></ul>

Page 40: 모바일 웹 어플리케이션 접근성

aria-live=“polite”

aria-live=“off”

aria-live=“assertive”

<ul aria-live=“polite”> <li><strong>아이유</strong></li> <li><strong>아이유</strong> 봄사랑벚꽃말고</li> <li><strong>아이유</strong> 단발</li> <li><strong>아이유</strong> 은혁</li> <li><strong>아이유</strong> 다이어트</li></ul>

업데이트를 알리지 않음

입력이 끝나면 전달

업데이트가 발생하면 바로 전달

(default)

Page 41: 모바일 웹 어플리케이션 접근성

aria-atomic콘텐츠가 업데이트 될 때i

변경된 요소만 알려줄 지 모두를 알려줄 지 결정합니다.

AJAX의 단점을 해결할 4개의 속성들

Page 42: 모바일 웹 어플리케이션 접근성

aria-atomic=“false”

aria-atomic=“true”

<ul aria-live=“polite” aria-atomic=“true”> <li><strong>아이유</strong></li> <li><strong>아이유</strong> 봄사랑벚꽃말고</li> <li><strong>아이유</strong> 단발</li> <li><strong>아이유</strong> 은혁</li> <li><strong>아이유</strong> 다이어트</li></ul>

모든 내용을 알림

업데이트 되는 요소만 알림

(default)

Page 43: 모바일 웹 어플리케이션 접근성

aria-busy (state)Live Region 내의 요소가i

업데이트를 진행 중인지 여부를 결정합니다.

AJAX의 단점을 해결할 4개의 속성들

Page 44: 모바일 웹 어플리케이션 접근성

aria-busy=“false”

aria-busy=“true”

<ul aria-live=“polite” aria-busy=“true”> <li><strong>아이유</strong></li> <li><strong>아이유</strong> 봄사랑벚꽃말고</li> <li><strong>아이유</strong> 단발</li> <li><strong>아이유</strong> 은혁</li> <li><strong>아이유</strong> 다이어트</li></ul>

Live Region은 여전히 업데이트 되고 있습니다.

Live Region에 더 이상 업데이트 할 것이 없습니다.

(default)

Page 45: 모바일 웹 어플리케이션 접근성

aria-relevant

Live Region의 내용이 변경 될 때i어떤 변경유형을 감시해서 알려줄 지 결정합니다.

AJAX의 단점을 해결할 4개의 속성들

Page 46: 모바일 웹 어플리케이션 접근성

aria-relevant=“removals”

aria-relevant=“additions”

aria-relevant=“text”

<ul aria-live=“polite” aria-relevant=“additions”> <li><strong>아이유</strong></li> <li><strong>아이유</strong> 봄사랑벚꽃말고</li> <li><strong>아이유</strong> 단발</li> <li><strong>아이유</strong> 은혁</li> <li><strong>아이유</strong> 다이어트</li></ul>

Region 내의 DOM에 요소가 추가되었을 때

Region 내의 DOM에 요소가 삭제되었을 때

요소의 콘텐츠가 변경되었을 때

aria-relevant=“all”위의 세가지 조건 모두 감시

(default)

(default)

Page 47: 모바일 웹 어플리케이션 접근성

그러나

Page 48: 모바일 웹 어플리케이션 접근성

WAI-ARIA는보조하는 기술일 뿐,

그게 주가 되어서는 안된다.

Page 49: 모바일 웹 어플리케이션 접근성

결론

Page 50: 모바일 웹 어플리케이션 접근성

힘들다고 주저말고귀찮다고 포기말고

하던대로 열심히

Page 51: 모바일 웹 어플리케이션 접근성

감사합니다.