WCAG 2.1 항공사 WAI-ARIA 적용 사례
  • 모두를 위한 디자인
  • 항공사의 웹 접근성 준수 의무
  • 국내 접근성과 국제 접근성은 어떻게 다를까?
  • 항공사 접근성 위배로 인한 벌금 부과 사례
  • AOA 2023~
    • 주요 UI별 ARIA 적용 사례 (2022~2024)
      • 호버 콘텐츠 적용사례
      • 입력 글자 수 제한 사례
      • 🕹️Form 그룹의 오류 적용 사례
      • 비밀번호 실시간 오류 적용 사례
      • 🖼️SVG 이미지의 접근성 향상 방법
      • 오류메시지 종류별 적용 사례
      • 스낵바(Snack bar) 적용 사례
  • AOA 2019
    • 주요 UI별 ARIA 적용 사례 (2019)
      • 스핀 버튼 적용 사례
      • 페이지 네비게이터 적용 사례
      • 메인 네비게이션 구현 사례
      • 메뉴 적용 사례
      • 캐러셀 적용 사례
      • 채팅 상담 적용 사례
      • 툴팁 적용 사례
      • 그룹명 필수 항목 적용 사례
      • 이해하기 쉬운 데이터 테이블 적용 사례
      • 날짜 입력 적용 사례
    • 알아두면 좋은 TIP!
      • dl, dt, dd 태그를 남용하지 마세요.
      • 제발 나를 무시해 주세요.
      • 띄어쓰기를 주의하세요!
  • AOA 2018
    • 주요 UI별 ARIA 적용 사례 (2018)
      • 로딩 적용 사례
      • Date Picker 적용사례
      • 좌석선택 적용사례
      • 탭 UI 적용 사례
      • 모달 다이얼로그 적용 사례
      • 확장과 축소 콘텐츠 적용 사례
      • 정렬할 수 있는 table 적용 사례
      • 자동완성 적용 사례
      • 접근성 주요 개선 항목
        • 버튼을 왜 링크로 쓰는거지?
        • 그룹에게는 그룹명을 알려주자
        • 에러메세지는 왜 보이기만 하지?
        • 이해하기 어려운 폼 레이블
        • 화면을 보는 스크린리더 사용자
        • 전환되지 않는 페이지의 포커스
        • 동일한 기능의 서로 다른 UI
    • 알아두면 좋은 것들
      • role=application은 언제 사용할까?
      • 대문자로만 표현해야 할 때
      • 화면의 정렬을 위해 중복 태그를 사용하지 말 것
    • Screen Reader 테스트
      • Screen Reader와 Browser 조합
      • Screen Reader 버그
  • WAI-ARIA
    • Landmark Role
    • Widget Role & Attributes
  • Contact
    • 무엇이 궁금하세요?
Powered by GitBook
On this page
  • 논모달 다이얼로그 vs 모달 다이얼로그
  • 로그인 모달 다이얼로그
  • 모달 다이얼로그 기본 포커스의 이동

Was this helpful?

Edit on Git
  1. AOA 2018
  2. 주요 UI별 ARIA 적용 사례 (2018)

모달 다이얼로그 적용 사례

Previous탭 UI 적용 사례Next확장과 축소 콘텐츠 적용 사례

Last updated 2 years ago

Was this helpful?

논모달 다이얼로그 vs 모달 다이얼로그

논모달과 모달은 목적이 다른 다이얼로그이다.

모달은 다이얼로그를 제외한 나머지 부분은 컨트롤을 할 수 없게 하기 위해 배경 콘텐츠는 어두워지며 컨트롤을 할 수 없게 제작된다. 논모달은 이 와는 반대로 다이얼로그와 함께 배경 콘텐츠도 컨트롤 할 수 있을 때 사용한다.

로그인 모달 다이얼로그

모달 다이얼로그의 대표적 예제로 로그인 모달 다이얼로그를 보면 로그인 기능에만 집중시키기 위해 배경 콘텐츠는 스크롤을 포함하여 컨트롤을 할 수 없으며 배경도 어두워지게 된다.

이런 시각적인 표현을 스크린리더 사용자에게 알리기 위해 모달 다이얼로그의 컨테이너 role="dialog"를 삽입하고 모달 다이얼로그를 제외한 배경 콘텐츠에는 모두 aria-hidden="true" 속성을 삽입하여 스크린리더에서 읽지 않게 한다.

role="dialog"와 함께 aria-modal 속성을 사용하면 배경 콘텐츠에 삽입된 aria-hidden 속성을 대체할 수도 있으나 스크린리더 호환문제로 아직 사용하지 않았다.

기본 모달 다이얼로그 소스는 아래와 같이 전체 컨테이너에 role="dialog"가 삽입하고 제목은 시각적으로 보여지는 헤딩 요소와 aria-labelledby와 연결한다. 그리고 제목 아래 Dialog 사용에 필요한 짧은 문장은 aria-describedby 속성을 사용하여 연결하면 사용성에 큰 도움이 된다.

<div role="dialog" aria-labelledby="title-dialog" aria-describedby="desc-txt">
    <div role="document" tabindex="-1">
        <h2 id="title-dialog">로그인</h2>
        <p id="desc-txt">아이디 또는 스카이패스 번호로 로그인이 가능합니다.</p>
        <fieldset>
            <legend>로그인 방법 선택</legend>
            <input id="login-user-id" type="radio">
            <label for="login-user-id">회원 아이디</label>
            <input id="login-skypass" type="radio">
            <label for="login-skypass">스카이패스 회원 번호</label>
        </fieldset>
         ...
     </div>
</div>

모달 다이얼로그 기본 포커스의 이동

모달 다이얼로그가 열리게 되면 기본적으로 dialog 안의 role="document" 를 갖고 있는 요소에 tabindex="-1"을 삽입하고 포커스가 이동된다. role="document"를 사용한 이유는 다이얼로그 내에 가상모드로 탐색할 수 있는 콘텐츠가 있다는 것을 알리기 위함이다.

Tab키를 누르면 키보드의 포커스는 포커서블한 요소로 계속 이동하며 사용자가 닫지 않는 한 모달 다이얼로그 안에서만 계속 순환된다.

입력박스와 같은 폼 요소가 있는 모달 다이얼로그의 포커스 이동

로그인과 같이 폼 요소가 주 콘텐츠인 모달 다이얼로그가 열리면 포커스는 첫번째 포커서블한 요소로 이동시키는 것이 좋다. 그렇게 되면 스크린리더 사용자나 키보드 포커스 사용자는 모달 다이얼로그의 목적을 바로 알 수 있고 쉽게 폼 요소 입력이 가능해 진다.

로그인 모달 다이얼로그가 열리면 첫번째 포커서블한 요소인 회원아이디 라디오 버튼으로 포커스가 이동되며 스크린리더에서는 아래와 같이 읽게 된다.

로그인 Dialog 아이디 또는 스카이패스 번호로 로그인이 가능합니다. document 로그인방법 선택 그룹 회원 아이디 radio button 선택 1/2

포커서블한 첫번째 요소가 많은 문장 아래에 있을 때, 포커스를 보내면 화면 스크롤을 변화시키게 되므로 제목과 짧은 문장(1~2문장)정도가 있을 경우에만 첫번째 포커서블한 요소로 보내는 것이 좋다.

닫기 버튼 외에 포커서블한 요소가 없는 짧은 모달 다이얼로그의 포커스 이동

위 예제와 같이 작은 모달 다이얼로그에 닫기 버튼 외에 포커서블한 요소가 없는 경우에는 role="document"를 갖고 있는 요소에 첫번째 포커스를 보내는데 이는 닫기 버튼에 포커스가 갇혀있는 것처럼 보여지지 않게 하기 위함과 사용자가 내용을 읽기 위해 역순으로 탐색하게 하지 않기 위함이다.

AOA동영상 강의