전

접근성을 고려한, 컨텐츠를 가리는 방법

· 2012-11-25 (일) 14:10:45 · 5207 · 4
반응형 웹 강좌를 준비하면서, 웹 접근성 측면에서 display:none의 문제점을 지적?한 글을 읽었습니다.

즉, 반응형 웹에서 스크린 폭에 따라서 조건부로 보이거나, 또는 마우스 클릭을 해야  보여야 하는 경우, 많은 경우 display:none을 이용하는데, 웹 접근성에 문제가 있다는 것입니다.

 CSS 규칙

화면 표현 

접근성 

 visibility: hidden;

적용된 요소가 화면에 나오지는 않지만, 원래 차지하는 공간은 남습니다.

스크린 리더가 무시합니다. 

 display: none;

적용된 요소가 화면에 나오지 않고, 공간도 없습니다.

스크린 리더가 무시합니다.

 height: 0; with: 0; overflow: hidden;

차지하는 공간이 없어지고 적용된 요소도 화면에 나오지 않습니다. 

스크린 리더가 무시합니다.

 text-indent: -999em;

적용된 요소가 화면에 보이지 않는 좌측으로 사라지지만, 링크에 포커스가 잡힐 수 있는 등 예측하지 못한 결과가 나올 수 있습니다. 

스크린 리더가 접근할 수 있으나, 이 방법은 텍스트와 인라인 요소에만 적용 가능합니다.

position: absolute; left: -999em;

적용된 요소가 화면에 보이지 않는 좌측 으로 사라지고, 공간도 차지하지 않습니다.

스크린 리더가 접근할 수 있습니다.


결국, position: absolute; left: -999em; 으로 가리는 것이 웹 접근성을 고려한다면 가장 적절한 방법이라고 합니다.

하지만, 직접 CSS를 적용하는 경우는 가능하지만, jQuery의 많은 화면 관련 기능들은 display:none 을 내부적으로 사용하고 있기에 이를 위한 별도의 조치가 필요하다고 합니다. 아래는 #myButton과 #myText 를 찾아서 적절한 클래스 (이경우 asseccibly-hidden, 즉 위의 position:absolute; left: -999em)로 적용하는 것입니다.

(function(){
  var $button = $('#myButton'),
      $text   = $('#myText'),
      visible = true;
  $button.click(function(){
    if ( visible ) {
      $text.slideUp('fast',function(){
        $text.addClass('accessibly-hidden')
             .slideDown(0);
      });
    } else {
      $text.slideUp(0,function(){
        $text.removeClass('accessibly-hidden')
             .slideDown('fast');
      });
    }
    visible = ! visible;
  });
})();

출처: Aaron Gustafson, Now You Can Me, A List Apart, 2011
|

댓글 4개

화면에서 안보이게 가려야 한다면.. 마찬가지로 스크린리더로도 읽혀지지 않아야 하지 않나요?
디자인측면에서 가려야 하는 경우와, 내용 측면에서 가려야 하는 경우가 다른것 같습니다.
무조건 display:none; 가 적절치 못하다고 표현한 제 의견 부분은 잘못된 것 같네요...
지적 감사합니다. :-)
좋은정보 감사합니다.
디자인적으로 보이지 말아야할 부분은 display:none; 으로 처리했었는데
이젠 다른방법으로 처리해 두어야겠네요^^
좋은정보네요
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
12-12-27 조회 4,092
12-12-27 조회 3,936
12-12-27 조회 3,764
12-12-27 조회 6,076
12-12-27 조회 3,636
12-12-27 조회 4,287
12-12-27 조회 8,738
12-12-27 조회 6,226
12-12-26 조회 5,445
12-12-26 조회 6,134
12-12-26 조회 4,215
12-12-24 조회 3,785
12-12-22 조회 3,955
12-12-21 조회 4,245
12-12-21 조회 3,198
12-12-20 조회 6,035
12-12-20 조회 6,860
12-12-20 조회 5,270
12-12-20 조회 1.1만
12-12-20 조회 3,298
12-12-20 조회 1.2만
12-12-20 조회 2만
12-12-20 조회 4,318
12-12-19 조회 3,601
12-12-18 조회 9,106
12-12-18 조회 3,610
12-12-18 조회 3,871
12-12-17 조회 3,434
12-12-17 조회 3,595
12-12-17 조회 3,927
12-12-17 조회 4,015
12-12-16 조회 3,940
12-12-15 조회 6,523
12-12-15 조회 5,020
12-12-15 조회 7,254
12-12-15 조회 5,917
12-12-15 조회 7,135
12-12-14 조회 4,892
12-12-14 조회 4,039
12-12-14 조회 4,033
12-12-12 조회 4,825
12-12-12 조회 7,926
12-12-12 조회 3,670
12-12-12 조회 6,670
12-12-12 조회 8,125
12-12-12 조회 4,311
12-12-12 조회 5,170
12-12-11 조회 4,531
12-12-11 조회 3,438
12-12-11 조회 5,358
12-12-11 조회 4,634
12-12-10 조회 3,682
12-12-10 조회 3,136
12-12-10 조회 6,094
12-12-10 조회 4,544
12-12-10 조회 2,971
12-12-10 조회 3,386
12-12-10 조회 1.1만
12-12-10 조회 7,689
12-12-10 조회 1만
12-12-10 조회 3,210
12-12-07 조회 4,189
12-12-07 조회 4,346
12-12-06 조회 4,098
12-12-05 조회 5,266
12-12-05 조회 3,854
12-12-04 조회 4,147
12-12-04 조회 2,948
12-12-03 조회 4,045
12-12-03 조회 3,875
12-12-03 조회 1.5만
12-12-02 조회 3,981
12-12-02 조회 7,260
12-12-02 조회 4,506
12-12-02 조회 3,508
12-12-01 조회 3,895
12-12-01 조회 6,667
12-12-01 조회 3,860
12-11-30 조회 7,672
12-11-30 조회 3,574
12-11-29 조회 3,774
12-11-29 조회 3,713
12-11-29 조회 1.1만
12-11-28 조회 4,316
12-11-28 조회 5,556
12-11-28 조회 4,666
12-11-27 조회 4,807
12-11-26 조회 4,984
12-11-26 조회 3,600
12-11-26 조회 3,786
12-11-26 조회 2만
12-11-25 조회 5,257
12-11-25 조회 7,309
12-11-25 조회 4,180
12-11-25 조회 5,208
12-11-23 조회 4,691
12-11-23 조회 1.9만
12-11-22 조회 3,440
12-11-22 조회 3,869
12-11-22 조회 3,712