그래픽 객체(Object)
정의(Definition)
graphics-document 섹션의 개별 객체 또는 하위 컴포넌트(구성요소)에 의미를 부여합니다. 그래픽 객체는 중첩된 하위 컴포넌트를 가질 수 있습니다.
연결되지 않은 객체의 집합(collection)을 나타내는 컨테이너 요소에는 그룹(group
) 또는 목록(list
) 역할을 제공해야 합니다. 의미를 갖지 않고, 부모 요소에 의해 제공된 의미 컨텍스트를 변경하지 않는 그룹화 요소들에 none
또는 presentation
역할을 설정하면 안됩니다.
graphics-document
와 달리 graphics-object
는 자체 포함할 필요가 없으며 탐색을 위한 새로운 컨텍스트를 설정하지 않습니다. 그러나 유저 에이전트(UA)와 보조 기술(AT)은 사용자(특히 보는데 장애가 있는 사용자)가 중첩된 구조((계층 구조)를 탐색하는 방법을 제공해야 합니다.
예제(Example)
다음 코드는 구조화 된 그래픽 마크업일 일부분 입니다. 여기에는 다양한 역할을 가진 SVG g
그룹 요소가 포함 됩니다.
집(house), 문(door), 지붕(roof)을 나타내는 각 객체를
graphics-object
로 설정합니다.group
역할을 사용해 창문(windows), 트리(trees, 각 개별 개체)를 그룹화 하고, 레이블 또는 설명을 추가합니다.배경 이미지의 경우, 별도의 기술이 필요 없으므로
img
역할을 부여해 접근성 트리에서 제외 시킵니다.의미 없이 스타일 또는 트랜스폼을 적용하는 요소에는
none
역할을 설정합니다.
그래픽 객체에 여러 하위 컴포넌트가 있는 경우 그룹 역할을 명시적으로 설정하여 대체합니다.
<svg xmlns="https://www.w3.org/2000/svg"
width="600" height="400" viewBox="0 0 600 400"
role="graphics-document document">
<title>집(Home: '고향' 같은 느낌의)</title>
<!-- 1개 이상의 그래픽을 그룹으로 묶어 1개의 배경 이미지로 만든 후 설명을 추가합니다. -->
<g role="img" aria-label="배경">
<desc>파란 하늘과 햇빛, 푸른 초원</desc>
<rect fill="lightSkyBlue" height="100%" width="100%" />
<circle fill="yellow" stroke="gold" stroke-width="4"
cx="0" cy="0" r="50" />
<path fill="none" stroke="gold" stroke-width="3"
d="..." />
<rect fill="#6a2" y="300" width="100%" height="100" />
</g>
<!-- 집은 그래픽 객체 입니다. -->
<g role="graphics-object group"
aria-labelledby="house-label"
transform="translate(100,325)">
<desc>기본 도형으로 그려진 2층 벽돌집</desc>
<rect fill="firebrick" stroke="darkRed"
width="300" height="200" y="-200"
role="none" /><!-- the walls of the house are
already described thoroughly,
so no role is required -->
<!--
그래픽 객체 역할은 중첩된 하위 컴포넌트를 허용합니다.
그러나 기본 SVG API 매핑을 기반으로 레이블, 설명이 없는 도형은
프리젠테이션(접근성 트리에서 무시)으로 처리됩니다.
-->
<g role="graphics-object" aria-label="문"
transform="translate(30,-90)">
<desc>건물 왼쪽 갈색 문에는 창문과 둥근 모양의 문 손잡이가 있습니다.</desc>
<rect fill="darkKhaki" stroke="#632"
width="50" height="90"/>
<rect fill="lightSteelBlue" stroke="#632" stroke-width="4"
x="5" y="5" width="40" height="30" />
<circle fill="gray" stroke="#444" stroke-width="0.7"
cx="10" cy="50" r="4" />
</g>
<!-- 창문은 일반적인 레이블로 그룹화 된 개별 개체입니다. -->
<g role="group" aria-label="창문"
fill="lightSteelBlue" stroke="#632" stroke-width="6">
<g role="none" transform="translate(0,-85)">
<rect aria-label="first-floor window"
x="100" width="25" height="45">
<desc>문 옆의 작은 창문</desc>
</rect>
<path aria-label="1층 거실 창문"
d="M180,0h100v60h-100v-60z
m30,0v60 m40,0v-60">
<desc>3개의 큰 창문으로 구성된 창은 1층 나머지 부분을 채웁니다.</desc>
</path>
</g>
<g role="none" transform="translate(0,-180)">
<!-- 2 층에 더 많은 창문이 있습니다. -->
...
</g>
</g>
<!-- 지붕(roof)과 굴뚝(chimney)에 대해 마크업이 아래 추가 됩니다. -->
...
<text id="house-label"
font-family="cursive" font-size="36px"
x="70" y="50">나의 집</text>
</g>
<!-- 나무(trees)에 대한 마크업이 아래 추가 됩니다. -->
...
</svg>
특징(Characteristics)
특성
값
상위 클래스 역할
상속된 상태, 속성
aria-activedescendant
aria-atomic
aria-busy (state)
aria-controls
aria-current (state)
aria-describedby
aria-details
aria-disabled (state)
aria-dropeffect
aria-errormessage
aria-expanded (state)
aria-flowto
aria-grabbed (state)
aria-haspopup
aria-hidden (state)
aria-invalid (state)
aria-keyshortcuts
aria-label
aria-labelledby
aria-live
aria-owns
aria-relevant
aria-roledescription
이름
author contents
접근 가능한 이름 필요
false
자식 요소 표현화(Children Presentational)
false
Last updated