Copyright © 2008 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
Accessibility of Web content to people with disabilities requires semantic information about widgets, structures, and behaviors, in order to allow Assistive Technologies to make appropriate transformations. This specification provides an ontology of roles, states, and properties that set out an abstract model for accessible interfaces and can be used to improve the accessibility and interoperability of Web Content and Applications. This information can be mapped to accessibility frameworks that use this information to provide alternative access solutions. Similarly, this information can be used to change the rendering of content dynamically using different style sheet properties. The result is an interoperable method for associating behaviors with document-level markup. This document is part of the WAI-ARIA suite described in the ARIA Overview.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is a Public Working Draft by the Protocols & Formats Working Group of the Web Accessibility Initiative. The main innovation in this draft is the proposed approach to implement WAI-ARIA in host languages (see Implementation in Host Languages and Quality Assurance). The host language implementation requirements balance architectural goals with the constraints of present-day user agents. It seeks to address forward compatibility with HTML 5 [HTML5], which is expected to be complete after WAI-ARIA.
Because of the above focus, this version of WAI-ARIA is published without corresponding updates to its companion documents: the WAI-ARIA Primer [ARIA-PRIMER], and WAI-ARIA Best Practices [ARIA-PRACTICES]. This version includes minor changes to the WAI-ARIA taxonomy since the previous version. Refer to the history of changes to WAI-ARIA for details.
Feedback on the model set out here is important to the success of the Web community in creating accessible Rich Internet Applications. The PFWG would like to know, particularly for this draft:
Additional questions:
When addressing these questions, please consider them in the context of the companion documents. Comments on this document may be sent to public-pfwg-comments@w3.org (Archive). Comments requiring discussion should be copied to wai-xtech@w3.org (Archive). Comments should be made by 3 September 2008.
Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.
This document was produced by a group operating under the 5 February 2004 W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.
The disclosure obligations of the Participants of this group are described in the charter.
This section is informative.
The domain of Web accessibility defines how to make Web content usable by people with disabilities. People with some types of disabilities use Assistive Technology (AT) to interact with content. AT can transform the presentation of content into a format more suitable to the user, and can allow the user to interact in different ways than the author designed. In order to accomplish this, AT must understand the semantics of the content. Semantics are knowledge of roles, states, and properties, as a person would understand them, that apply to elements within the content. For instance, if a paragraph is semantically identified as such, AT can interact with it as a unit separable from the rest of the content, knowing the exact boundaries of that paragraph. A slider or tree widget is a more complex example, in which various parts of a widget each have semantics that must be properly identified for the computer to support effective interaction.
Established content technologies define semantics for elements commonly used in those technologies. However, new technologies can overlook some of the semantics required for accessibility. Furthermore, new authoring practices evolve which override the intended semantics—elements that have one defined semantic meaning in the technology are used with a different semantic meaning intended to be understood by the user.
For example, Rich Internet Applications developers can create a tree widget in HTML using CSS and JavaScript even though HTML lacks a semantic element for that. A different element must be used, possibly a list element with display instructions to make it look and behave like a tree widget. Assistive technology, however, must present the element in a different modality and the display instructions may not be applicable. The AT will present it as a list, which has very different display and interaction from a tree widget, and the user may be unsuccessful at understanding and operating the widget.
The incorporation of WAI-ARIA is a way for an author to provide proper type semantics on custom widgets (elements with repurposed semantics) to make these widgets accessible, usable and interoperable with assistive technologies. This specification identifies the types of widgets and structures that are recognized by accessibility products, by providing an ontology of corresponding roles that can be attached to content. This allows elements with a given role to be understood as a particular widget or structural type regardless of any semantic inherited from the implementing technology. Roles are a common property of platform Accessibility APIs which applications use to support assistive technologies. Assistive technology can then use the role information to provide effective presentation and interaction with these elements.
This role taxonomy currently includes interaction widget (user interface widget) and structural document (content organization) types of objects. The role taxonomy describes inheritance (widgets that are types of other widgets) and details what states and properties each role supports. When possible, information is provided about mapping of roles to accessibility APIs.
Roles are element types and should not change with time or user actions. Changing the role on an element from its inital value will be treated, via accessibility API events, as the removal of the old element and insertion of a new element with the new role.
Changeable states and properties of elements are also defined in this specification. States and Properties are used to declare important properties of an element that affect and describe interaction. These properties enable the user agent or operating system to properly handle the element even when these properties are altered dynamically by scripts. For example, alternative input and output technology such as screen readers, speech dictation software and on-screen keyboards must recognize the state of an element (such as: if an object is disabled, checked, focused, collapsed, hidden, etc.).
While it is possible for assistive technologies to access these properties through the Document Object Model [DOM], the preferred mechanism is for the user agent to map the States and Properties to the accessibility API of the operating system.
Figure 1.0 illustrates a typical Document Object Model (DOM) [DOM] node. Placed within the DOM node and the assistive technology is a box containing the contract provided by the user agent to the assistive technology. This data includes typical accessibility information found in the accessibility API for many of our accessible platforms for GUIs (role, state, caret, selection, event notification, parent/child information, relationship, and descriptions).

Figure 1: The contract model with accessibility APIs
For more information see the WAI-ARIA Primer [ARIA-PRIMER] for the use of roles in making interactive content accessible.
In addition to the prose documentation, the role taxonomy is provided in Web Ontology Language (OWL) [OWL], which is an implementation of Resource Description Framework (RDF) [RDF]. Tools can use these to validate the implementation of roles in a given content document.
Note: the use of RDF/OWL as a formal representation of roles may be used to support future extensibility. Standard RDF/OWL mechanisms can be used to define new roles that inherit from the roles defined in this specification. The mechanism to define and use role extensions in an interoperable manner, however, is not defined by this specification. A future version of ARIA is expected to define how to extend roles.
The design aims of creating this specification include:
This draft currently handles two aspects of roles: GUI functionality and structural relationships of the element. For more information see the WAI-ARIA Primer [ARIA-PRIMER] for the use of roles in making interactive content accessible.
The role taxonomy is designed in part to support the common roles found in platform accessibility APIs. Reference to roles found in this taxonomy by dynamic Web content may be used to support interoperability with assistive technologies.
The schema to support this standard has been designed to be extensible so that custom roles can be created by extending base roles. This allows user agents to support at least the base role, and user agents that support the custom role can provide enhanced access. Note that much of this could be formalized in XML Schema [XSD]. However, being able to define similarities between roles, such as baseConcepts and more descriptive definitions, would not be available in XSD. While this extensibility is possible, this version of the specification does not define how this extension is to be achieved.
WAI-ARIA is supported by a set of informative resources. In addition to the WAI-ARIA Roadmap, the WAI-ARIA Primer [ARIA-PRIMER] provides a basic introduction to the concepts behind and reason for ARIA, and the WAI-ARIA Best Practices [ARIA-PRACTICES] describe recommended usage patterns for Web content developers. These documents are intended to help authors learn the practice of putting WAI-ARIA to use.
Keyboard accessible content helps users of alternate input devices. The new semantics when combined by our style guide work will allow alternate input solutions to facilitate command and control via an alternate input solution.
Low vision solutions benefit from ARIA markup in that the improved keyboard navigation helps people with extremely low vision. Low vision solutions offer a degree of screen reading functionality (like AI Squared's Zoom text). Furthermore, ARIA introduces navigation landmarks both through our taxonomy and the XHTML role landmarks which dramatically improves keyboard navigation productivity. This is a huge benefit for alternate input solutions as well.
ARIA will also be used to assist people with cognitive impairments. The additional semantics will allow authors to restructure and substitute alternative content in adaptive Web 2.0 solutions.
Assistive technology needs the ability to support alternative input forms by getting and setting the current value of widgets. AT also needs to determine what objects are selected, and manage widgets that allow multiple selections.
ARIA is used as a supplement for native language semantics, not a replacement. When the host language provides a feature that is equivalent to the ARIA feature, use the host language feature. ARIA should only be used in cases where the host language lacks the needed role, state, or property indicator. First use a host language feature that is as similar as possible to the ARIA feature, then refine the meaning by adding ARIA. For instance, a multiselectable grid could be implemented as a table, and then ARIA used to clarify that it is a grid, not just a table. This allows for the best possible fallback for user agents that do not support ARIA and preserves the integrity of the host language semantics.This section is informative.
Complex web applications become inaccessible when assistive technologies cannot determine the semantics behind portions of a document or when the user is unable to effectively navigate to all parts of it in a usable way (see the Roadmap for Accessible Rich Internet Applications [ARIA-ROADMAP]). ARIA divides the semantics into roles (the type defining a user interface element) and states and properties supported by the roles.
Authors must associate elements in the document to an ARIA role and the appropriate attributes (states and properties) during its lifecycle.
An ARIA role is set on an element using the a role attribute similar to the one defined in the XHTML Role Attribute Module [XHTML-ROLES].
<div role = "checkbox">
The roles defined in this specification include a collection of document landmarks and the ARIA role taxonomy.
The Roles in this taxonomy were modeled using RDF/OWL [OWL] to build rich descriptions of the expected behaviors of each role. Features of the role taxononmy provide the following information for each role:
Attaching a role from the role taxonomy to an element in the document gives assistive technology the information it needs to handle an element correctly.
ARIA provides a collection of accessibility states and properties which are used to support platform accessibility APIs on the various operating system platforms. Assistive technology may access this information through an exposed user agent DOM or through a mapping to the platform accessibility API. When combined with roles, the user agent can supply the assistive technology with information to render the information to the user at any instance in time. Changes in states or properties will result in a notification to an assistive technology to let them know that a change in behavior has occurred.
In the following example, a span has been used to create a checkbox which in this case has three possible states. A role is used to make the
behavior of this simple widget known to the user agent. Properties that may
change with user actions (such as checked) are defined in the States
and Properties.
<span role="checkbox" aria-checked="mixed"
onkeydown="return checkBoxEvent(event);"
onclick="return checkBoxEvent(event);" >
A checkbox label
</span>
It should be noted that some accessibility state information is managed and controlled by the user agent. These are called managed states. Often these states have corresponding CSS pseudo-classes to reflect
necessary style changes. An example of a managed state is focus. In contrast, the states in this specification are typically
controlled by the author and are called unmanaged states. Some states are managed by the UA but the author can override them, such as posinset and setsize. The author should override those only if the DOM is not complete and thus the UA calculation would be incorrect. Both managed and unmanaged states are mapped to the platform accessibility APIs by the user agent.
Finally, an added value for ARIA is that user agents that support CSS attribute selectors ([CSS], Section 5.8) can allow the author to create UI changes based on the ARIA state information, dramatically reducing the amount of script used to create the equivalent functionality. In the following example, CSS selectors based on the value of the ARIA checked state are used to determine whether an image of a checked or an unchecked box is shown:
*[aria-checked=true]:before {content: url('checked.gif')}
*[aria-checked=false]:before {content: url('unchecked.gif')}
In any application there must always be an element with focus, as applications require users to have a place to provide user input. The element with focus must never be destroyed, hidden or scrolled off-screen. All interactive elements should be focusable. There should be an obvious, discoverable way, either through tabbing or other standard navigation techniques, for keyboard users to move the focus to any interactive element they wish to interact with. See User Agent Accessibility Guidelines, Guideline 9 ([UAAG], Guideline 9).
When using standard (X)HTML and basic WAI-ARIA widgets, application developers can simply manipulate the tab order or use script to create keyboard shortcuts to elements in the document. Use of more complex widgets requires the author to manage focus within them.
WAI-ARIA includes a number of "managing container" widgets, also often referred to as "composite" widgets. Typically, the container is responsible for tracking the last descendant which was active (the default is usually the first item in the container). When the container is navigated to with the Tab key, focus goes directly to the last active descendant. The user may also activate the container by clicking on one of the descendants within it.
When something in the container has focus, the user may navigate through the container by pressing additional keys such as the arrow keys to move relative to the current item. Any additional press of the main navigation key (generally the Tab key) will move out of the container to the next widget.
For example, a grid may be used as a spreadsheet with thousands of gridcells, all of which may not be present in the document at one time. This requires their focus to be managed by the container using the activedescendant property, on the managing container element, or by the container managing the tabindex of its child elements and setting focus on the appropriate child. For more information, see Providing Keyboard Focus in WAI-ARIA Best Practices ([ARIA-PRACTICES], section 3.2).
Containers that manage focus in this way are:
Editorial Note: Content is expected to come from the ARIA User Agent Implementors Guide. There are things like focused, focusable, selected, selectable, checkable, etc. Certain roles also have to be treated specially.
This section provides a brief introduction to the process of making applications accessible using ARIA. The choice and usage of roles can be complex and context dependent. It is beyond the scope of this document to explain implementations for all the possible ARIA use cases. ARIA Best Practices [ARIA-PRACTICES] provides detailed guidance on ARIA implementation methodology as well as references to sample code.
First steps to making an application accessible:
ARIA provides authors with the means to make the different elements in a Web application semantically rich. User agents use the role semantics to understand how to handle each element. Roles convey missing information that the assistive technology needs to anticipate the behavior of the elements inside the application such as how to present the corresponding ARIA states and properties to the user. The user agent will use the accessibility semantics from the host language and ARIA accessibility semantics which may override those of the host language and present them to an assistive technology through the Document Object Model or the platform accessibility API. When supporting the platform accessibility API the user agent will create accessible objects containing the accessibility semantics for each visual element on your page. It will use the chosen API to notify the assistive technology of changes to the semantics as well.
The following steps are recommended as ARIA is applied to content:
Use native markup when possible
Use the semantic elements that are defined in the host markup language. For example, with XHTML it is better to use the native checkbox than to use a div element with role checkbox as these should already be accessible through your browser. There may also be cases where ARIA can augment an existing element in the host language. For example, a grid and gridcells can reuse the functionality of a table when overlaying it. ARIA roles, states, and properties are best used when the markup language does not support all the semantics required. When a role attribute is added to an element, the semantics and behavior of the element are overridden by the role behavior.
Apply the appropriate roles from ARIA
Set roles to make sure elements behave predictably and correctly describe the behavior of each element within the application (unless elements behaviors are fully described by the native markup language). Roles for interactive elements should support all the states that the element could use. Once a role attribute is set it should not be changed as this could confuse an assistive technology. This does not preclude an element being removed which has the role attribute set. Only states and properties may be changed for a given element.
Preserve semantic structure
Structural information is critical to providing context to people with disabilities. This is achieved through preserving DOM hierarchy within structural elements and widgets; forming logical groups within within user interface widgets such as treeitems in a group. Look for groups within a page, and mark them using the most appropriate role that best describes their usage. For example: a region of the page that contains a group of elements that are likely to change through an Ajax application could be tagged as a region. The preservation of semantic web structure involves your entire web page such as through the use of document landmarks to facilitate keyboard navigation for screen reader and mobility impaired users as well as page restructuring and simplification for users with cognitive and learning impairments.
Build relationships
Look for relationships between elements, and mark them using the most appropriate property or attribute. For example: If container A contains search results, and container B contains the search widgets, then mark each container as a region and set the controls property in region B to reference region A. See relationships in WAI-ARIA.
Some relationships are determined automatically from the host language, such as by using the label tag in HTML.
Set and properties in response to events
Once the role for an element has been set, select the appropriate states and properties for that role during the element's life cycle. This is often done in response to user input events. States are special properties for widgets that may change frequently during a widget's life cycle due to user interaction, while properties are more stable attributes of objects. User agents should notify assistive technology of state changes. Conversely, assistive technology notification of property changes depends on the method by which an assistive technology communicates with the user agent. For example, the multiline property is not something that changes frequently, whereas the checked state changes frequently in response to user input.
When setting states and properties, set them until the behavior of the element is fully defined. Only use those supported for the chosen role or element as defined in this specification.
Support full, usable keyboard navigation
Usable keyboard navigation in a rich internet application is different from the tabbing paradigm in a static document. Rich internet applications behave more like desktop applications where the user tabs to significant widgets and uses the arrow keys to navigate within the widget, such as a spreadsheet or menu. The changes that ARIA introduces in keyboard navigation makes this enhanced accessibility possible. For a more in-depth understanding of keyboard navigation in ARIA, see the ARIA Best Practices [ARIA-PRACTICES]
Synchronize the visual UI with accessibility states properties for supporting user agents
This will allow the state of your UI to be perceivable to the user as well as the assistive technology. There are many ways to do this using script or by using CSS attribute selectors (in conforming user agents) For example, the author should have an associated selector that responds to a form element being required or a gridcell being selected. Refer to the ARIA Best Practices [ARIA-PRACTICES] for techniques for proper UI synchronization with the accessible state of the document.
A basic tree view allows the user to select different list items and expand and collapse embedded lists. Arrow keys are used to navigate through a tree, including left/right to collapse/expand sub trees. Double clicking with the mouse also toggles expansion.
Building this user interface element with script could leave assistive technology guessing about the role of each element. To make this feature accessible we need to:
We can do that by following the steps below:
Look at the native mark up language
There is no tree element in HTML that supports our behavior including expansion. If such an element existed, we should use that to take advantage of existing support. Since it does not, we will need to use roles.
Finding the right roles
As we did not find a tree element in the native mark up we need to add roles that do this by referencing roles from this taxonomy that support states that we need.
Our tree will need roles that support embedded list behavior and expandable/collapsible embedded lists. The roles that support tree behavior for a tree are:
Look for groups and build relationships
Tree relationships can be made simply via the DOM and logical structure of the page. A tree element will be the main container encompassing all other elements in the tree. Each selectable item in the tree will be a treeitem.
When a treeitem contains an embedded list of treeitems they will be all embedded in a group. A group should be contained inside the tree item that is the parent item.
Tree relationships are like list relationships in HTML. Group and
tree elements act like list containers (ol and ul). A tree item acts like a
list item (li) in HTML.
Because treeitems and groups commonly both use div elements it is
recommended to add a comment next to closing treeitems that contain embedded
tree groups.
<div role="tree">
<div role="treeitem">Veggies</div>
<div role="group"> <!-- veggies children ->
<div role="treeitem">Green</div>
<div role="group"> <!-- green children -->
<div role="treeitem">Asparagus</div>
<div role="treeitem">Kale</div>
<div role="treeitem">Leafy</div>
<div role="group"> <!-- leafy children -->
<div role="treeitem">Lettuce</div>
<div role="treeitem">Kale</div>
<div role="treeitem">Spinach</div>
<div role="treeitem">Chard</div>
</div> <!-- close leafy -->
<div role="treeitem">Green beans</div>
</div> <!-- close green -->
<div role="treeitem">Legumes</div>
<div role="treeitem">Yellow</div>
<div role="group"> <!-- yellow children -->
<div role="treeitem">Bell peppers</div>
<div role="treeitem">Squash</div>
</div> <!-- close yellow -->
</div> <!-- close veggies -->
</div> <-- close tree -->
Sometimes a tree structure is not explicit via the DOM and logical
structure of a page. In such cases the relationships must still be made
explicit using the states and properties. In the following example, the owns property indicates that the item with id "yellowtreegroup" should be considered a child of the div element with the property, even though it is not a child in the DOM.
<div role="treeitem" aria-owns="yellowtreegroup">Yellow<div> … <div id="yellowtreegroup" role="group"> <div role="treeitem">Bell peppers</div> <div role="treeitem">Squash</div> … </div>
If the tree is not completely represented in the DOM at all times, don't use either the structured or owns methods. Instead use level, posinset and setsize.
Use States, Properties in response to events
Control the behavior of the element in response to user input events such as from the keyboard and the mouse as shown here:
<div tabindex="-1" role="treeitem" aria-expanded="true"
onclick="return toggleExpansion(event)"
onkeydown="return processArrowKeystoToggleExpansion(event);"
>Yellow</div>
Use device independent events with supporting JavaScript to handle user interaction:
<div role="tree" tabindex="-1"
onfocus="return treeItemFocus(event);"
onclick="return treeItemEvent(event);"
ondblclick="return treeItemEvent(event);"
onkeydown="return treeItemEvent(event);">
Create JavaScript support to control the event driven behavior of the application.
This section is normative.
This specification indicates whether a section is normative or informative.
Normative sections provide requirements that must be followed for an implementation to conform to this specification. The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, RECOMMENDED, MAY, and OPTIONAL in this document are to be interpreted as described in Key words for use in RFCs to indicate requirement levels [RFC2119].
Informative sections provide information useful to understanding the specification. Such sections may contain examples of recommended practice, but it is not required to follow such recommendations in order to conform to this specification.
This section is normative.
This section defines the WAI-ARIA role taxonomy and describes the characteristics and properties of all roles. A formal RDF representation of all the information presented here is available in Appendix 8.1: Implementation.
The role taxonomy uses the following relationships to relate ARIA roles to each other and to concepts from other specifications, such as HTML and XForms.
The role that this role extends in the taxonomy. This extension causes all the properties and constraints of the parent role to propagate to the child role. Other than well known stable specifications, inheritance may be restricted to items defined inside this specification so that items cannot be changed and affect inherited classes.
For example: checkbox is a subclass or type of a option. If we
change the properties and expected behavior of an option then the
properties and behavior of checkbox will also change.
Inheritance is expressed in RDF using the RDF Schema subClassOf ([RDFS], section 3.4) property.
Informative list of roles for which this role is the parent. This is provided to facilitate reading of the specification but adds no new information as the list of child roles is the list of roles for which the current role is the parent.
Informative information about a similar or related idea from other specifications. Concepts that are related are not necessarily identical. Related concepts do not inherit properties from each other. Hence if the definition of a type changes, the properties, behavior and definition of a related concept is not affected.
For example: A grid is like a table. Therefore, a grid has a
rdfs:seeAlso of table.
However if the definition of table is modified, the ARIA definition of a grid
will not be affected.
Informative information about objects that are considered prototypes for the role. Base concept is similar to type, but without inheritance of limitations and properties. Base concepts are designed as a substitute for inheritance for external concepts. A base concept is like a relatedConcept except that base concepts are almost identical to each other.
For example: the checkbox defined in this document has the same functionality and anticipated behavior as a checkbox defined in HTML.
Therefore, a checkbox has an HTML checkbox as a baseConcept. However, if
the HTML checkbox is modified, the definition of a
checkbox in this document will not be not affected, because there is no actual inheritance of type.
Roles are defined and described by their characteristics. Characteristics define the structural function of a role, such as what a role is, concepts behind it, what instances of the role can or must contain. In the case of widgets this also includes how it interacts with the user agent based on mapping to HTML forms and XForms. States and properties from WAI-ARIA that are supported by the role are also indicated.
The Roles Taxonomy defines the following characteristics. These characteristics are implemented in RDF as properties of the OWL classes that describe the roles.
Abstract roles are the foundation upon which all other ARIA roles are built. They MUST NOT be used by authors because they are not implemented in the API binding. Abstract roles are provided to help with the following:
States and properties required for the role. Content authors MUST provide values for required states and properties.
When an object inherits from multiple ancestors and one ancestor indicates that property is supported while another ancestor indicates that it is required, the property is required in the inheriting object.
States and properties applicable to the role. User agents MUST support all supported states and properties for the role. Content authors MAY provide values for supported states and properties, but may not in all cases because default values are sufficient.
Informative list of properties that are inherited onto a role from ancestor roles. States and properties are inherited from ancestor roles in the role taxonomy, not from ancestor elements in the DOM tree. These properties are not explicitly defined on the role, as the inheritance of properties is automatic. This information is provided to facilitate reading of the specification. Inherited states and properties that are required are indicated as such in this field as well. The set of supported states and properties combined with inherited states and properties forms the full set of states and properties supported by the role.
A child element that must be contained in the DOM by this role. A child element is any descendent element specified with the required child role. For example, an element with role list must contain an element with role listitem.
When multiple required children are indicated, either of them are permitted.
Context where this role is allowed, in other words, roles for elements in which the present role MUST appear.
For example an element with role listitem MUST be contained inside an element with role list.
Computational mechanism to determine the accessible name of the object to which the role
applies. This may be computed from the descendants of the object or conditional text (e.g., the title attribute in HTML).
User agents MUST use the following approach to compute the accessible name:
Collect the name from the content subtrees pointed to by labelledby which contains the IDs for the label content. Use the IDs in the order they appear. For each ID, use a depth-first computation of the name, appending to the currently computed name.
If labelledby is unspecified:
Boolean (true | false)
The DOM children are presentational. User agents SHOULD NOT expose descendants of this element through the platform accessibility API. If user agents do not hide the children, some information may be read twice.
Some states and properties are applicable to all roles, and most are applicable to all elements regardless of role. In addition to explicitly expressed supported states and properties, the following global states and properties are supported by all roles as well. These include:
Global states and properties are applied to the role roletype, which is the base role, and therefore inherit into all roles. To facilitate reading, they are not explicitly identified as either supported or inherited states and properties in the specification. Instead, the inheritance is indicated by a link to this section.
To support the current user scenario, this specification defines roles that A, help define Widgets (For example, a tristate Checkbox) and B, help define page structure (for example, a section header).
Roles are categorized as follows:
Below is an alphabetical list of ARIA roles to be used by rich internet application authors (excluding abstract roles which are not used directly). A detailed definition of the taxonomy supporting these ARIA roles follows.
The following roles are used as base types for applied roles. Base classes are used to build a picture of the role taxonomy class hierarchy within the taxonomy. Note that while all roles in this section are abstract, not all abstract roles are in this section. This section includes only the most high-level abstractions in the taxonomy.
Roles in this section include:
roletypeBase role from which all other roles in this taxonomy inherit.
Properties of this role describe the structural and functional purpose of objects that are assigned this role (known in RDF terms as "instances"). A Role is a concept that can be used to understand and operate instances.
Note: This is used for the ontology and authors must not use this role in content.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: |
|
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: | |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
widgetA component of a Graphical User Interface (GUI).
Widgets are discrete user interface elements with which the user can interact. Widget roles all map to standard features in accessibility APIs.
Note: This is used for the ontology and authors must not use this role in content.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | roletype |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: | |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
structureA document structural element.
Roles for document structure support the accessibility of dynamic Web content by helping assistive technology to determine active content vs. static document content. Structural roles by themselves do not all map to accessibility APIs, but are used to create widget roles or assist content adaptation.
The taxonomy of structural roles is likely to evolve as new use cases are added to the scope of this specification.
Note: This is used for the ontology and authors must not use this role in content.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | roletype |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Required States and Properties: | |
| Supported States and Properties: | expanded |
| Inherited States and Properties: | |
| Name From: | |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
compositeA widget that may contain navigable descendants or owned children.
The composite widget SHOULD exist as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, it SHOULD provide a separate navigation mechanism for users to document elements that are descendants or owned children of the composite element.
Descendants of this role MUST NOT have the "nameFrom" value of "subtree" set. This role and its descendants must not have a childrenArePresentational value of "true".
Note: This is used for the ontology and authors must not use this role in content.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | widget |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Required States and Properties: | |
| Supported States and Properties: | activedescendant |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | False |
| Inherits Presentational: |
windowBrowser or application window.
Elements with this role have a window-like behavior in a GUI context, regardless of whether they are implemented as a window in the OS. This is helpful when there is the visual appearance of a window that is merely a styled section of the document.
Note: This is used for the ontology and authors must not use this role in content.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | roletype |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Required States and Properties: | |
| Supported States and Properties: | expanded |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
These roles are common widgets used to collect and maintain user input.
Roles in this section include:
inputGeneric type for widgets for which users can input a value.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | widget |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | XForms input |
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
selectA form widget that allows the user to make selections from a set of choices.
An element with role select MUST contain elements with role option.
Note: This is used for the ontology and authors must not use this role in content.
| Characteristic | Value |
|---|---|
| Is Abstract: | True |
| Parent Roles: | |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
listboxA widget that allows the user to select one or more items from a list of choices.
Items within the list are static and may contain images. List boxes contain children whose role is option.
Instances of this role MUST manage focus of descendants, as described in Managing Focus.
Although listbox inherits the expanded state, if there is a use case to use that state, authors should consider using a combobox instead.
| Characteristic | Value |
|---|---|
| Is Abstract: | |
| Parent Roles: | |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Parent Element: | |
| Required Child Elements: | option |
| Required States and Properties: | |
| Supported States and Properties: | multiselectable |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | True |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
comboboxCombobox is a presentation of a select, where users can type to select an item.
Combobox is the combined presentation of a single line textbox with a drop down select widget. The combobox may be editable. Typically editable combo boxes are used for autocomplete behavior, and the autocomplete property would be used on the child textbox.
NOTE: In XForms [XFORMS] the same select can
have one of 3 appearances: combo-box, drop-down box, or group of
radio-buttons. Many browsers (if not all of them) allow
users to type in a drop-down select as well. This specification does not constrain the presentation of the combobox.
Instances of this role MUST manage focus of descendants, as described in Managing Focus.
| Characteristic | Value |
|---|---|
| Is Abstract: | |
| Parent Roles: | select |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | |
| Parent Element: | |
| Required Child Elements: | listbox |
| Required States and Properties: | expanded |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | True |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
optionA selectable item in a list represented by a select.
An option MUST appear inside an element with select role.
| Characteristic | Value |
|---|---|
| Is Abstract: | |
| Parent Roles: | input |
| Child Roles: | |
| Base Concept: | HTML option |
| Related Concepts: | |
| Parent Element: | select |
| Required Child Elements: | |
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: |
|
| Accessible Name Required: | True |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
checkboxA widget that has three possible values: "true", "false", or "mixed".
Many checkboxes do not use the "mixed" value, and thus are effectively boolean checkboxes. However, the checked state supports the "mixed" value to support cases such as installers where an option has been partially installed.
| Characteristic | Value |
|---|---|
| Is Abstract: | |
| Parent Roles: | input |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: |
|
| Parent Element: | |
| Required Child Elements: | |
| Required States and Properties: | checked |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: |
|
| Accessible Name Required: | True |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
radiogroupA group of radio buttons.
A radiogroup is a type of select list that can only have single entries checked, not mutliple. User agents MUST enforce that only one radio
button in a radiogroup can be checked at the same time. When another button is checked, previously checked buttons become unchecked (their checked state becomes "false").
| Characteristic | Value |
|---|---|
| Is Abstract: | |
| Parent Roles: | select |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | list |
| Parent Element: | |
| Required Child Elements: | radio |
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: | |
| Name From: | author |
| Accessible Name Required: | True |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
radioAn option in single-select list.
Elements with role radio MUST be be explicitly grouped in order to indicate which ones affect the same value. This should be done by enclosing them in an element with role radiogroup. If it is not possible to make the radio buttons DOM children of the radiogroup, use the owns property on the radiogroup element to indicate the relationship.
| Characteristic | Value |
|---|---|
| Is Abstract: | |
| Parent Roles: | checkbox |
| Child Roles: | |
| Base Concept: | |
| Related Concepts: | HTML input (type : radio) |
| Parent Element: | |
| Required Child Elements: | |
| Required States and Properties: | |
| Supported States and Properties: | |
| Inherited States and Properties: |
|
| Name From: |
|
| Accessible Name Required: | True |
| Inherits Name Required: | |
| Children Presentational: | |
| Inherits Presentational: |
textboxInputs that allow free-form text as their value.
If the multiline property is true, the widget accepts line breaks within the input, as in a HTML textarea. Otherwise this is a simple text box.
Intended use is in languages that do not have a text input object (such as SVG), or cases in which an element with different semantics is repurposed as an input box. Another use is for a rich text edit textbox, or one that validat