그리드 팝업이 있는 편집 가능한 콤보박스 예제
다음 예제는 제안 된 값 팝업에 그리드를 사용하는 콤보박스 설계 패턴을 구현합니다.
이 예제에서, 사용자는 상자에 값을 입력하거나 그리드 팝업에 존재하는 값 모음에서 선택하여 과일이나 채소 이름을 지정할 수 있습니다. 팝업은 텍스트상자가 값 제안 모음의 항목 중 하나의 이름의 시작과 일치하는 문자를 포함한 후에 사용 가능해집니다. 사용자는 텍스트상자에 어떤 값이든 입력할 수 있습니다; 이 구현은 값 제안 모듬에 있는 값으로 입력을 제한하지 않습니다.
제안 된 값을 표현하는 그리드는 두 개의 열을 가집니다. 그리드의 각 행은 한 개 제안을 나타냅니다; 열 1은 과일이나 채소의 이름을 포함하고 열 2는 과일인지 채소인지의 여부를 가리킵니다.
유사한 예는 다음과 같습니다:
- 선택 전용 콤보박스: HTML
select
엘리먼트와 기능적으로 유사한 텍스트 입력이 없는 선택 전용 콤보박스. - 목록과 인라인 자동완성이 있는 편집 가능한 콤보박스:
인라인 자동완성 목록
으로 알려진 자동완성 동작을 보여주는 편집 가능한 콤보박스. - 목록 자동완성이 있는 편집 가능한 콤보박스:
수동 선택 목록
으로 알려진 자동완성 동작을 보여주는 편집 가능한 콤보박스. - 자동완성이 없는 편집 가능한 콤보박스:
aria-autocomplete=none
과 관련된 동작을 보여주는 편집 가능한 콤보박스. - 날짜 선택 콤보박스: 달력과 월 및 년도를 탐색하는 버튼을 포함하는 대화상자를 여는 편집 가능한 날짜 입력 콤보박스.
예제
접근성 특성
브라우저는 초점과 마찬가지로 aria-activedescendant
로 참조된 엘리먼트의 가시성을 관리하지 않습니다. 키보드 이벤트가 목록상자의 활성 선택 항목을 변경할 때, 자바스크립트는 aria-activedescendant
로 참조된 선택 항목을 뷰(view) 안으로 스크롤합니다. aria-activedescendant
가시성을 관리하는 것은 콘텐츠의 크기를 키우기 위해 브라우저의 확대 기능을 사용하는 사용자에 대한 접근성에 필수적입니다.
키보드 지원
이 페이지의 예제 콤보박스는 다음의 키보드 인터페이스를 구현합니다. 키보드 인터페이스에 대한 다른 변형과 옵션은 콤보박스 설계 패턴의 키보드 인터랙션 섹션에 기술되어 있습니다.
Textbox
키 | 기능 |
---|---|
Down Arrow | 그리드가 노출되어 있다면. 초점을 첫 번째 제안 된 값으로 이동시킵니다. |
Up Arrow | 그리드가 노출되어 있다면, 초점을 마지막 제안 된 값으로 이동시킵니다. |
Escape |
|
표준 단일 라인 텍스트 편집 키 |
|
그리드 팝업
참고: 시각적 초점이 그리드에 있는 경우, DOM 초점은 텍스트상자에 유지되고 텍스트상자의 aria-activedescendant
값이 시각적으로 초점을 얻은 것은 그리드의 엘리먼트를 가리키는 값으로 설정됩니다.
키보드 명령에 대한 다음 설명이 초점을 언급하는 경우, 이는 시각적 초점 표시기를 가리킵니다.
이 초점 관리 기법에 대한 더 자세한 정보는
초점 관리를 위해 aria-activedescendant 사용하기를 참고하세요.
키 | 기능 |
---|---|
Enter |
|
Escape |
|
Down Arrow |
|
Up Arrow |
|
Right Arrow |
|
Left Arrow |
|
Home | 초점을 텍스트상자로 이동시키고 이동시키고 편집 커서를 필드 시작 부분에 위치시킵니다. |
End | 초점을 텍스트상자로 이동시키고 편집 커서를 필드 마지막 부분에 위치시킵니다. |
출력 가능한 문자 |
|
Role, Property, State, Tabindex 어트리뷰트
이 페이지의 예제 콤보박스는 다음 ARIA 역할(role), 상태(state), 속성(property)를 구현합니다. 역할(role), 상태(state), 속성(property)을 적용하는 다른 방법에 대한 정보는 콤보박스 설계 패턴의 역할(role), 상태(state), 속성(property) 섹션에서 볼 수 있습니다.
Textbox
역할(role) | 어트리뷰트 | 엘리먼트 | 사용법 |
---|---|---|---|
combobox
|
input[type="text"] |
엘리먼트를 콤보박스로 식별시킵니다. | |
aria-haspopup="grid"
|
input[type="text"] |
콤보박스가 grid 를 팝업하여 값을 제안할 수 있음을 나타냅니다. |
|
aria-expanded="false"
|
input[type="text"] |
팝업 엘리먼트가 노출 되어 있지 않음을 나타냅니다. | |
aria-expanded="true"
|
input[type="text"] |
팝업 엘리먼트가 노출되어 있음을 나타냅니다. | |
id="string"
|
input[type="text"] |
|
|
aria-autocomplete="list"
|
input[type="text"] |
input의 자동완성 동작이 팝업에 가능한 값 목록을 제안하는 것임을 나타냅니다. | |
aria-controls="IDREF"
|
input[type="text"] |
팝업 엘리먼트가 제안된 값을 나열함을 나타냅니다. | |
aria-activedescendant="IDREF"
|
input[type="text"] |
|
그리드 팝업
역할(role) | 어트리뷰트 | 엘리먼트 | 사용법 |
---|---|---|---|
grid
|
div
|
엘리먼트를 grid 로 식별시킵니다. |
|
aria-labelledby="IDREF"
|
div |
콤보박스에 의해 제어되는 grid 엘리먼트에 대한 레이블을 제공합니다. |
|
row
|
div |
행에 대한 모든 셀을 포함하는 엘리먼트를 식별시킵니다. | |
aria-selected="true"
|
div |
|
|
gridcell |
div |
단일 셀에 대한 콘텐츠를 포함하는 엘리먼트를 식별시킵니다. |
Javascript와 CSS 소스 코드
- CSS: grid-combo.css
- Javascript: grid-combo.js, grid-combo-example.js, utils.js
HTML Source Code