본문 바로 가기 본문 바로 가기 하위 메뉴 바로 가기

모두를 위한 접근성, 결코 어렵지 않습니다. 모두가 함께 누릴 수 있도록 기획서에, 디자인에, 코드에 배려의 발자취를 남겨주세요.
One Step Ahead for Everyone!

WAI-ARIA UI

자주 사용하는 UI에 실무자들이 WAI-ARIA로 접근성을 준수할 수 있도록 라이브러리를 제작하였습니다.
마크업에 스크립트를 적용하려면 js 파일을 다운로드 받아 적용해주세요.

자동완성 편집 창

  1. 1) 직렬 완성형

    입력 서식에 글자 입력 시 단어가 자동완성 됩니다. 자동완성된 텍스트는 선택된 상태로 삽입되어야 합니다.

    • NAVER
    • NAVER Webtoon
    • NAVER Mail
    • NAVER Map
    • naver
    • naver webtoon
    • naver mail
    • naver map
    키보드 사용
    • Esc : 텍스트 제거
    구성 요소
    직렬 완성형 wai-aria 구성요소 필수유무, role, property, state, 설명 정보 제공
    필수유무 role property state 설명
    필수 aria-autocomplete inline : 직렬형 자동완성
    마크업
    								<input type="text" title="검색어" placeholder="'n'을 입력해보세요." id="autoComplete1" aria-owns="acl_li1" auto-complete="inline" />
    <ul id="acl_li1" role="listbox"> 
    	<li role="option">NAVER</li> 
    	<li role="option">NAVER Webtoon</li> 
    	<li role="option">NAVER Mail</li> 
    	<li role="option">NAVER Map</li>
    </ul>
    
    <script>
    	NuliComplete("autoComplete1");
    </script>
    							
  2. 2) 목록 선택형
    • NAVER
    • NAVER Webtoon
    • NAVER Mail
    • NAVER Map
    • naver
    • naver webtoon
    • naver mail
    • naver map
    키보드 사용
    • 위쪽 화살표 : 이전 목록 탐색, 텍스트는 기존 입력된 값 유지, 첫 번째 항목에서 위쪽 화살표 선택 시 마지막 항목으로 이동
    • 아래쪽 화살표 : 다음 목록 탐색, 텍스트는 기존 입력된 값 유지, 마지막 항목에서 아래쪽 화살표 선택 시 첫 번째 항목으로 이동
    • Enter : 텍스트 값을 선택한 옵션 내용으로 설정
    • Esc : 목록 상자 닫기 및 텍스트 삭제
    • Tabindex="-1" : li > a 구조로 자동완성 리스트가 표시되는 경우 a 요소에 적용
    구성 요소
    목록 선택형 wai-aria 구성요소 필수유무, role, property, state, 설명 정보 제공
    필수유무 role property state 설명
    필수 role="combobox" 확장/축소 가능 요소임을 알림
    필수 aria-haspopup
    • false : 기본값, 연결된 팝업 없음
    • true : 연결된 팝업 있음
    aria-autocomplete list : 목록형 자동완성
    aria-owns DOM 구조와 달리 기능적으로 상, 하위 관계인 경우 사용, 자동완성 리스트 컨테이너의 id 값 부여
    필수 aria-activedescendant 스크립트로 선택된 자동완성 키워드 id 연결, 미선택시 빈 값
    필수 role="listbox" 선택 목록
    aria-controls input 요소와 자동완성 리스트 를 연결
    필수 role="option" 선택 목록에서 선택 가능한 항목
    필수 role="none" li > a 구조인 경우 li 요소에 사용
    aria-selected
    • 자동완성 리스트에서 선택된 요소에 적용
    • true : 선택됨
    • false : 선택 안됨
    마크업
    							<input type="text" title="검색어" placeholder="'n'을 입력해보세요." id="autoComplete2" role="combobox" aria-expanded="false" aria-haspopup="true" auto-complete="list" aria-owns="acl_li2" /> 
    <ul id="acl_li2" role="listbox"> 
    	<li role="option">NAVER</li> 
    	<li role="option">NAVER Webtoon</li> 
    	<li role="option">NAVER Mail</li> 
    	<li role="option">NAVER Map</li> 
    </ul>
    
    <script>
    	NuliComplete("autoComplete2");
    </script>
    						
  3. 3) 복합형

    입력 서식에 글자 입력 시 자동완성 목록도 노출되고 단어도 자동완성 됩니다.

    • NAVER
    • NAVER Webtoon
    • NAVER Mail
    • NAVER Map
    • naver
    • naver webtoon
    • naver mail
    • naver map
    키보드 사용
    • 위쪽 화살표 : 이전 목록 탐색, 텍스트 값을 해당 옵션 내용으로 변경
    • 아래쪽 화살표 : 다음 목록 탐색, 텍스트 값을 해당 옵션 내용으로 변경
    • Enter : 텍스트 값을 선택한 옵션 내용으로 설정
    • Esc : 텍스트 제거, 목록 상자 닫기
    • Tabindex="-1" : li > a 구조로 자동완성 리스트가 표시되는 경우 a 요소에 적용
    구성 요소
    복합형 wai-aria 구성요소 필수유무, role, property, state, 설명 정보 제공
    필수유무 role property state 설명
    필수 role="combobox" 확장/축소 가능 요소임을 알림
    필수 aria-haspopup
    • false : 기본값, 연결된 팝업 없음
    • true : 연결된 팝업 있음
    aria-autocomplete both : 목록형과 직렬형을 포함한 복합형 자동완성
    aria-owns DOM 구조와 달리 기능적으로 상, 하위 관계인 경우 사용, 자동완성 리스트 컨테이너의 id 값 부여
    필수 aria-activedescendant 스크립트로 선택된 자동완성 키워드 id 연결, 미선택시 빈 값
    필수 role="listbox" 선택 목록
    aria-controls input 요소와 자동완성 리스트 를 연결
    필수 role="option" 선택 목록에서 선택 가능한 항목
    필수 role="none" li > a 구조인 경우 li 요소에 사용
    aria-selected
    • 자동완성 리스트에서 선택된 요소에 적용
    • true : 선택됨
    • false : 선택 안됨
    마크업
    								<input type="text" title="검색어" placeholder="'n'을 입력해보세요." id="autoComplete3" role="combobox" aria-expanded="false" aria-haspopup="true" auto-complete="both" aria-owns="acl_li3"/> 
    <ul id="acl_li3" role="listbox"> 
    	<li role="option">NAVER</li> 
    	<li role="option">NAVER Webtoon</li> 
    	<li role="option">NAVER Mail</li> 
    	<li role="option">NAVER Map</li> 
    </ul> 
    
    <script>
    	NuliComplete("autoComplete3");
    </script>