Accessibility
WCAG 2.2 Update Notes
- 2.4.11 Focus Not Obscured - Ensure when an item gets keyboard focus, it is at least partially visible.
- 2.5.7 Dragging Movements - Make it easier for users to operate functionality through various inputs beyond keyboard.
- 2.5.8 Target Size (Minimum) - Ensure targets meet a minimum size or have sufficient spacing around them.
- 3.2.6 Consistent Help - Put help in the same place when it is on multiple pages.
- 3.3.7 Redundant Entry - Don't ask for the same information twice in the same session.
- 3.3.8 Accessible Authentication (Minimum) - Don’t make people solve, recall, or transcribe something to log in.
Text Alternatives
Non-text Content 1.1.1
Examples
Animated gif
Animated gif that shows how to do something with instructions typed out below it. Alt text is brief and refers to the tutorial text for more information.
<img src="animation.gif" alt="How to place an order with instructions below." />
<p>Instructions typed out here</p>
Map Link
An image of an interactive map allows the user to navigate to an area and get more information.
<figure aria-label="Map of Oshkosh. Select our location to see the address."></figure>
Image Link
An image is linked to another page. The alternative text should state the page it is going to.
<a href="/info/contactus"><img src="contactimg.jpg" alt="Contact 4imprint" /></a>
Decorative Image
An image that is purely decoration and should be ignored by assistive technology.
<img src="background.jpg" alt="" />
CAPTCHAs
Best to avoid, but if using you must, present at least 2 different options.
- Alternate forms using different modalities would be provided to address the needs of people with different disabilities.
- Can also provide access to a CSR who can bypass the CAPTCHA.
Acceptance Criteria
- If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.
- Use alt attributes on img elements.
- Provide link text that describes the purpose of a link for anchor elements.
- Use alt attributes on images used as submit buttons.
- Use label elements to associate text labels with form controls.
- Use title attribute to identify form controls when the label element cannot be used.
- Use null alt text and no title attribute on img elements for images that assistive technologies should ignore ex: alt="".
- Use CSS margin and padding rules instead of spacer images.
Notes
All non-text content that is presented to the user has a text alternative that serves the equivalent purpose.
Captions (Prerecorded) 1.2.2
Examples
Instructional Video Clip
A video clip shows how to use a product. The caption should read:
<p>(music) The travel tumbler has many uses including...</p>
Instructional Manual with Corresponding Video Clip
A video clip shows how to use a product. The caption should read:
An instruction manual containing a description of a part and its necessary orientation is accompanied by a synchronized media clip showing the part in its correct orientation.
No captions are provided for the synchronized media clip.
Acceptance Criteria
- People who are deaf or have a hearing loss can access the auditory information in the synchronized media content through captions.
- Captions are not needed when the synchronized media is, itself, an alternate presentation of information that is also presented via text on the Web page.
- Captions not only include dialogue, but identify who is speaking and include non-speech information conveyed through sound, including meaningful sound effects.
Notes
Captions are provided for all prerecorded audio content in synchronized media, except when the media is a media alternative for text and is clearly labeled as such.
Audio-only and Video-only 1.2.1
Examples
Audio Clip
Audio clip link is given with a link to the transcript immediately following.
<a href="#">Listen to KLT's speech at the holiday party</a>
<a href="#">Transcript of KLT's speech at the holiday party</a>
Audio Recording to an Event
<a href="#">Listen to the 4imprint Q&A</a>
<a href="#">Descriptive transcript is placed here. Includes who is speaking and if there is laughter/questions/applause/etc.</a>
Instructional Animated gif
Animated gif that shows how to do something with instructions typed out below it. Alt text is brief and refers to the tutorial text for more information.
<img src="animation.gif" alt="How to place an order with instructions given below." />
<p>Instructions typed out here</p>
Acceptance Criteria
- View the video-only content while referring to the alternative for time-based media.
- Check that the information in the transcript includes the same information that is in the video-only presentation.
- If the video includes multiple people or characters, check that the transcript identifies which person or character is associated with each action described.
- Check that at least one of the following is true:
- The transcript itself can be programmatically determined from the text alternative for the video-only content.
- The transcript is referred to from the programmatically determined text alternative for the video-only content.
- If the alternate version(s) are on a separate page, check for the availability of link(s) to allow the user to get to the other versions.
Notes
For prerecorded audio-only and prerecorded video-only media, the following are true, except when the audio or video is a media alternative for text and is clearly labeled as such.
Prerecorded Audio-only
An alternative for time-based media is provided that presents equivalent information for prerecorded audio-only content.
Prerecorded Video-only
Either an alternative for time-based media or an audio track is provided that presents equivalent information for prerecorded video-only content.
Adaptable
Info and Relationships 1.3.1
Examples
Required fields are identified
Appropriate table markup
<table class="text16">
<caption class="textLeft">Example Table</caption>
<thead>
<tr>
<th class="padding5" scope="col">Header content 1</th>
<th class="padding5" scope="col">Header content 2</th>
</tr>
</thead>
<tbody>
<tr>
<td class="padding5">Body content 1</td>
<td class="padding5">Body content 2</td>
</tr>
</tbody>
<tfoot>
<tr>
<td class="padding5">Footer content 1</td>
<td class="padding5">Footer content 2</td>
</tr>
</tfoot>
</table>
HTML5 Elements & ARIA Roles
<header role="banner">
<p>Put company logo, etc. here.</p>
</header>
<nav role="navigation">
<ul>
<li>Put navigation here</li>
</ul>
</nav>
<main role="main">
<p>Put main content here.</p>
</main>
<footer role="contentinfo">
<p>Put copyright, etc. here.</p>
</footer>
No HTML5 landmarks using ARIA Roles
Note: HTML5 landmarks and roles like above is the best way to mark up the page.
<div role="banner">
<p>Put company logo, etc. here.</p>
</div>
<div role="navigation">
<ul>
<li>Put navigation here</li>
</ul>
</div>
<div role="main">
<p>Put main content here.</p>
</div>
<div role="contentinfo">
<p>Put copyright, etc. here.</p>
</div>
Multiple landmarks of the same type and aria-label
Adding landmarks where there are more than two of the same type of landmark on the same page, and there is no existing text on the page that can be referenced as the label.
<nav id="leftnav" role="navigation" aria-labelledby="leftnavheading">
<h2 id="leftnavheading">Institutional Links</h2>
<ul>
<li>list item one</li>
<li>list item two</li>
<li>list item three</li>
</ul>
</nav>
<nav id="rightnav" role="navigation" aria-labelledby="rightnavheading">
<h2 id="rightnavheading">Related topics</h2>
<ul>
<li>list item one</li>
<li>list item two</li>
<li>list item three</li>
</ul>
</nav>
Multiple landmarks of the same type and aria-labelledby
If a navigation role is used multiple times on a Web page, each instance may have a unique label specified using aria-labelledby.
<div id="leftnav" role="navigation" aria-label="Primary">
<ul>
<li>list item one</li>
<li>list item two</li>
<li>list item three</li>
</ul>
</div>
<div id="rightnav" role="navigation" aria-label="Secondary">
<ul>
<li>list item one</li>
<li>list item two</li>
<li>list item three</li>
</ul>
</div>
Acceptance Criteria
- Use semantic elements & aria landmarks to markup structure. (nav, section, article, etc. instead of div)
- DO NOT use inline styles.
- Use standard text formatting conventions for paragraphs. (p)
- Use standard text formatting conventions for lists. (ul, ol, li)
- Use standard text formatting conventions for headings. (h1, h2, h3, etc.)
- Organize a page using headings.
- Use CSS to control visual presentation of text.
- Use the aria-describedby property to provide a descriptive label for user interface controls.
Form Acceptance Criteria
- Identify a required field with the aria-required property.
- Using OPTGROUP to group OPTION elements inside a SELECT.
- Using label elements to associate text labels with form controls.
- Use the title attribute to identify form controls when the label element cannot be used.
- Provide a description for groups of form controls using fieldset and legend elements.
- Required fields must be identified.
Table Acceptance Criteria
- Use table markup to present tabular information. Tables should ONLY be used to markup tabular information.
- Table markup needs to consist of at least the elements table, tr, th, and td.
- Use the summary attribute to associate header cells and data cells in data tables.
- Using the scope attribute to associate data cells with header cells in data tables.
- Use id and headers attributes to associate data cells with header cells in data tables.
Notes
Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
HTML 5 | ARIA Role |
---|---|
<header> | role="banner" |
<nav> | role="navigation" |
<main> | role="main" |
<footer> | role="contentinfo" |
<aside> | role="complementary" |
<section> | role="region" * |
<article> | role="article" * |
none | role="search" |
<form> | role="form" |
* The region and article roles are not ARIA landmarks. The most useful of these for most websites are header/banner, nav/navigation, main, and footer/contentinfo.
Best Practice
- Include ALL content on the page in landmarks, so that screen reader users who rely on them to navigate from section to section do not lose track of content.
- There are cases when a particular landmark role could be used more than once on a page, such as on primary and secondary navigation menus.
- In these cases, identical roles should be distinguished from each other using a valid technique for labelling regions.
Meaningful Sequence 1.3.2
Examples
Incorrect Alignment
Kari with 4imprint 12 years
Correct Alignment
Kari
with 4imprint
12 years
Acceptance Criteria
- The DOM order must match the visual order.
- Use left justified text for languages that are written left to right.
Notes
When the sequence in which content is presented affects its meaning, a correct reading sequence can be programmatically determined.
Sensory Characteristics 1.3.3
Example
Graphical Symbols
An arrow symbol is used to move to the next portion of a survey.
Use positioning, color and labeling to identify the icon.
Arrow must be clearly labeled with "Next" and instructions should also be included:
Acceptance Criteria
- Do not use a graphical symbol alone to convey information.
- Use an image with a text alternative for graphical symbols.
- See SVG Library Examples on how to use icons.
Notes
Instructions provided for understanding and operating content do not rely solely on sensory characteristics of components such as shape, size, visual location, orientation, or sound.
Orientation 1.3.4
Acceptance Criteria
None at this time.
Notes
Content does not restrict its view and operation to a single display orientation, such as portrait or landscape, unless a specific display orientation is essential opens in new window.
Identify Input Purpose 1.3.5
Example
Autocomplete attribute
<div class="form2018">
<span class="form-group">
<label for="FirstName">First Name<abbr title="required">*</abbr></label>
<input id="FirstName" class="txtReq input-control" name="FirstName" value="" title="Please enter a first name." autocomplete="given-name" aria-required="true" type="text">
<span class="errorMessage hide"></span>
</span>
</div>
Acceptance Criteria
- The input field serves a purpose identified in the Input Purposes for User Interface Components section opens in new window; and
- The content is implemented using technologies with support for identifying the expected meaning for form input data.
Notes
The purpose of each input field collecting information about the user can be programmatically determined when meeting the below acceptance criteria.
Distinguishable 1.4
Content on Hover or Focus 1.4.13
Examples
- Dismissable: A mechanism is available to dismiss the additional content without moving pointer hover or keyboard focus, unless the additional content communicates an input error or does not obscure or replace other content;
- Hoverable: If pointer hover can trigger the additional content, then the pointer can be moved over the additional content without the additional content disappearing;
- Persistent: The additional content remains visible until the hover or focus trigger is removed, the user dismisses it, or its information is no longer valid.
- Exception: The visual presentation of the additional content is controlled by the user agent and is not modified by the author.
- Examples of additional content controlled by the user agent include browser tooltips created through use of the HTML title attribute.
- Custom tooltips, sub-menus, and other nonmodal popups that display on hover and focus are examples of additional content covered by this criterion.
Acceptance Criteria
- Position the additional content so that it does not obscure any other content including the trigger, with the exception of white space and purely decorative content, such as a background graphic which provides no information.
- Provide a mechanism to easily dismiss the additional content, such as by pressing Escape or selecting a close button.
- Once new styles are set, text must fit within the bounds of its containing box without being cut off or overlapping other boxes.
- Once content appears, it should remain visible until:
- The user removes hover or focus from the trigger and the additional content, consistent with the typical user experience;
- The user dismisses the additional content via the mechanism provided to satisfy the Dismissable condition; or
- The information conveyed by the additional content becomes invalid, such as a 'busy' message that is no longer valid.
- This criterion does not affect the use and display of the title attribute in HTML when it displays as a small tooltip.
- Modal dialogs are out of scope for this criterion because they must take keyboard focus and thus should not appear on hover or focus.
- Content which can be triggered via pointer hover should also be able to be triggered by keyboard focus.
- ARIA: Use role="tooltip"
- CSS: Use hover and focus pseudo classes
Notes
Where receiving and then removing pointer hover or keyboard focus triggers additional content to become visible and then hidden, the below examples are true.
Use of Color 1.4.1
Examples
Keyboard Focus
Keyboard focus has been applied.
Disabled Form Elements
We are no longer using disabled buttons on the 4i website. Please allow user to click button and display any necessary errors.
Disabled form elements are grayed out and should not receive focus. Be sure to apply the disabled state to the element.
Acceptance Criteria
- Information that is conveyed by color differences needs to also be available in text.
- Do not identify required or error fields using color differences only. (Please see standard set up for error handling)
- Using a mouse, hover over the element - check that the background, border, or text color changes. (See link style standards.)
Notes
Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.
Audio Control 1.4.2
Acceptance Criteria
- Any sound that plays must turn off automatically within three seconds.
- Provide a control near the beginning of the Web page that turns off sounds that play automatically.
- Play sounds only on user request
Notes
If any audio on a Web page plays automatically for more than 3 seconds, either a mechanism is available to pause or stop the audio, or a mechanism is available to control audio volume independently from the overall system volume level.
Contrast (Minimum) 1.4.3
Examples
Light Gray/White Background
Blue text
Darkest gray text
Dark gray text
Blue text
Darkest gray text
Dark gray text
dkGray, darkestGray, blue Background
White text, dark gray background
White text, darkest gray background
White text, blue background
Acceptance Criteria
- 4.5:1 ratio if:
- Normal weight text size is UNDER 1.5rem / 18pt / 150% / 24px
- Bold weight text size is UNDER 1.17rem / 14pt / 116.67% / 18.67px
- 3:1 ratio if:
- Normal weight text size is OVER 1.5rem / 18pt / 150% / 24px
- Bold weight text size is OVER 1.17rem / 14pt / 116.67% / 18.67px
When Text DOES NOT have to meet contrast minimum
- Text is part of an inactive user interface component that is purely decoration, not visible to anyone.
- Text is part of a logo or brand name.
Notes
The visual presentation of text and images of text has a contrast ratio based on the below information.
Resize Text 1.4.4
Acceptance Criteria
- Ensure that text containers resize when the text resizes.
- Use measurements that are relative to other measurements in the content.
- Using rem units or percent for font sizes.
- Calculate size and position in a way that it scales with the text.
- Use predefined Grid system for layout to ensure liquid layout. DO NOT specify layout widths in px.
- User must be able to change size of all text on page up to 200 percent.
- Ensure there is no loss of content or functionality when the text resizes.
Notes
Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality.
Images of Text 1.4.5
Acceptance Criteria
- No text should be embedded in an image.
Exceptions to the Rule
- Customizable: The image of text can be visually customized to the user's requirements;
- Essential: A particular presentation of text is essential to the information being conveyed. (Logotypes (text that is part of a logo or brand name) are considered essential.)
Notes
If the technologies being used can achieve the visual presentation, text is used to convey information rather than images.
Examples
- Vertical scrolling content at a width equivalent to 320px.
- Horizontal scrolling content at a height equivalent to 256px.
- Except for parts of the content which require two-dimensional layout for usage or meaning, i.e., images, maps, data tables.
Acceptance Criteria
- In other words, ALL pages need to be responsive and utilize media queries to reflow.
- Breakpoints are not only triggered by narrower viewpoints, but also when browser zoom function is used.
- All pages must fit a minimum of 320px, which is equivalent to a desktop browser window at 1280px wide and zoomed in to 400%.
- When the browser zoom is used to scale content to 400%, it reflows - i.e., it is presented in one column so that scrolling in more than one direction is not necessary.
- It is also important that content is not hidden off-screen. i.e., zooming into a vertically scrolling page should not cause content to be hidden to one side.
- All content and funtionality must still be available, either directly, or via accessible controls.
- Do not use fixed sized containers or fixed position content (CSS).
Notes
Content can be presented without loss of information or functionality, and without requiring scrolling in two dimensions.
Non-text Contrast 1.4.11
Examples
- User Interface Components: Visual information required to identify user interface components and states, except for inactive components or where the appearance of the component is determined by the user agent and not modified by the author
- Graphical Objects: Parts of graphics required to understand the content, except when a particular presentation of graphics is essential to the information being conveyed.
- Except for parts of the content which require two-dimensional layout for usage or meaning, i.e., images, maps, data tables.
Acceptance Criteria
- All button states must meet contrast ration requirements of at least 3:1.
- Focus indicator must have sufficient contrast when the component is focused.
- Disabled or inactive UI components do not have to meet the contrast requirements. i.e., A submit button that is visible but not active until all required fields are completed.
- Graphical elements that must convey meaning, or are necessary for the user to understand the graphic, must meet contrast requirements.
Notes
The visual presentation of the examples below have a contrast ratio of at least 3:1 against adjacent color(s).
Ways to Test
- Identify each user-interface component (link, button, form control) on the page and:
- Identify the visible boundaries of the component that indicate it is a component and test the contrast ratio against the adjacent colors.
- Identify the state indicators and test the contrast ratio against the adjacent colors.
- Identify each graphic on the page that includes information required for understanding the content (i.e. excluding graphics which have visible text for the same information, or are decorative) and:
- Check the contrast of the graphical object against its adjacent colours;
- If there are multiple colours and/or a gradient, chose the least contrasting area to test;
- If it passes, move to the next graphical object;
- If the least-contrasting area is less than 3:1, assume that area is invisible, is the graphical object still understandable?
- If there is enough of the graphical object to understand, it passes, else fail.
Text Spacing 1.4.12
Examples
- Line height (line spacing) to at least 1.5 times the font size;
- Spacing following paragraphs to at least 2 times the font size;
- Letter spacing (tracking) to at least 0.12 times the font size;
- Word spacing to at least 0.16 times the font size.
Acceptance Criteria
- Bookmarklet to use for testing. opens in new window
- A user must be able to set text style properties as listed above without losing content or functionality. (This doesnt mean all text needs to be set like this for ALL users.)
- Once new styles are set, text must fit within the bounds of its containing box without being cut off or overlapping other boxes.
Notes
In content implemented using markup languages that support the following text style properties, no loss of content or functionality occurs by setting the below examples and by changing no other style property.
Keyboard Accessible 2.1
Character Key Shortcuts 2.1.4
Acceptance Criteria (must meet 1)
- Turn off: A mechanism is available to turn the shortcut off;
- Remap: A mechanism is available to remap the shortcut to use one or more non-printable keyboard characters (e.g. Ctrl, Alt, etc);
- Active only on focus: The keyboard shortcut for a user interface component is only active when that component has focus.
Notes
If a keyboard shortcut is implemented in content using only letter (including upper- and lower-case letters), punctuation, number, or symbol characters.
Examples
- Drag and drop feature must also support cut and paste or have form controls to move objects.
- Ensure the functionality provided by mousing over an element is available through the keyboard using the focus event.
- Ensure the functionality provided by mousing up on an element is available through the keyboard using the keyup event.
- Ensure the functionality provided by mousing out of an element is available through the keyboard using the blur event.
- Ensure the functionality provided by mousing down on an element is available through the keyboard using the keydown event.
Functions
- The use of physical controls such as links, menus, buttons, checkboxes, radio buttons and form fields.
- The use of features like drag and drop, selecting text, resizing regions or bringing up context menus.
- Adding or removing an item from a shopping cart.
- Initiating a chat session with a sales representative.
Acceptance Criteria
- Identify all functionality on the content.
- Check that all functionality can be accessed using only the keyboard or keyboard interface.
a, button, or input Acceptance Criteria
- In a user agent that supports Scripting:
- Click on the control with the mouse.
- Check that the scripting action executes properly.
- If the control is an anchor element, check that the URI in the href attribute of the anchor element is not invoked.
- Check that it is possible to navigate to and give focus to the control via the keyboard.
- Set keyboard focus to the control.
- Check that pressing ENTER invokes the scripting action.
- If the control is an anchor element, check that the URI in the href attribute of the anchor element is not invoked.
- In a user agent that does not support Scripting:
- Click on the control with the mouse.
- If the control is an anchor element, check that the URI in the href attribute of the anchor element is invoked.
- Check that it is possible to navigate to and give focus to the control via the keyboard.
- Set keyboard focus to the control.
- If the control is an anchor element, check that pressing ENTER invokes the URI of the anchor element's href attribute.
Notes
All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user's movement and not just the endpoints.
To implement this technique, first determine what functionality is available to users on the page. In this step, it is important to consider functions performed using both the mouse and the keyboard together.
Making Actions Keyboard Accessible by Using the Onclick Event of Anchors & Buttons
Examples: https://www.w3.org/TR/WCAG20-TECHS/SCR35.html opens in new window
Although click is in principle a mouse event handler, most HTML and XHTML user agents also process this event when a native HTML control (e.g. a button or a link) is activated, regardless of whether it was activated with the mouse or the keyboard. In practice, therefore, it is not necessary to duplicate this event when adding handlers to natively focusable HTML elements.
It is necessary when adding handlers to other events.
Since the keypress event handler reacts to any key, the event handler function should check first to ensure the Enter key was pressed before proceeding to handle the event. Otherwise, the event handler will run each time the user presses any key, even the tab key to leave the control, and this is usually not desirable.
Some mouse-specific functions (such as dblclick and mousemove) do not have a corresponding keyboard-specific function. This means that some functions may need to be implemented differently for each device (for example, including a series of buttons to execute, via keyboard, the equivalent mouse-specific functions implemented).
No Keyboard Trap 2.1.2
Examples
Widget Controls
- Widget controls (like on a calendar) should be part of the tab order of the page.
- User should be able to tab through these links and to links that follow.
Modal Dialog Box
- Modal dialog box with two buttons (cancel or submit).
- When dialog is open, user should only be allowed to focus on cancel or submit.
- When focused on the last button, tabbing should take the user to the first button.
- The dialog should only be closed if the user selects one of the two buttons.
Acceptance Criteria
- Tab through content from start to finish.
- Check to see that keyboard focus is not trapped in any of the content.
- If keyboard focus appears to be trapped in any of the content, check that help information is available explaining how to exit the content and can be accessed via the keyboard.
Notes
If keyboard focus can be moved to a component of the page using a keyboard interface, then focus can be moved away from that component using only a keyboard interface, and, if it requires more than unmodified arrow or tab keys or other standard exit methods, the user is advised of the method for moving focus away.
Pause, Stop, Hide 2.2.2
Acceptance Criteria
- If Moving, blinking, scrolling:
- Starts automatically AND
- Lasts more than five seconds AND
- Is presented in parallel with other content
- Then, there must be a mechanism for the user to pause, stop, or hide it unless the movement, blinking, or scrolling is part of an activity where it is essential.
- If Auto-updating information:
- Starts automatically AND
- Is presented in parallel with other content
- Then, there must be a mechanism for the user to pause, stop, or hide it or to control the frequency of the update unless the auto-updating is part of an activity where it is essential.
Notes
None at this time.
Timing Adjustable 2.2.1
Acceptance Criteria
- Turn off: The user is allowed to turn off the time limit before encountering it.
- Adjust: The user is allowed to adjust the time limit before encountering it over a wide range that is at least ten times the length of the default setting.
- Extend: The user is warned before time expires and given at least 20 seconds to extend the time limit with a simple action (for example, "press the space bar"), and the user is allowed to extend the time limit at least ten times.
- Real-time Exception: The time limit is a required part of a real-time event (for example, an auction), and no alternative to the time limit is possible.
- Essential Exception: The time limit is essential and extending it would invalidate the activity.
- 20 Hour Exception: The time limit is longer than 20 hours.
Notes
None at this time.
Three Flashes or Below Threshold 2.3.1
Acceptance Criteria
- Ensure no component of the content flashes more than three times in any 1-second period.
- Any video scene involving bright flashes is edited so that the flashes occur no more than three times in any 1-second period.
Notes
Web pages do not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds.
Navigable 2.4
Focus Visible 2.4.7
Acceptance Criteria
- Use user interface components that are highlighted by the user agent when they receive focus
- Use CSS to change the presentation of a user interface component when it receives focus
- Highlight a link or control when the mouse hovers over it
- Provide a highly visible highlighting mechanism for links or controls when they receive keyboard focus
Notes
Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible.
Bypass Blocks 2.4.1
Example
Skip to Content
<a href="#mainContent" class="skip">Skip to Content</a>
Acceptance Criteria
- Create links to skip blocks of repeated material:
- Add a link at the top of each page that goes directly to the main content area, or
- Add a link at the beginning of a block of repeated content to go to the end of the block.
Notes
A mechanism is available to bypass blocks of content that are repeated on multiple Web pages.
Use ARIA Landmarks to Identify Regions of a Page
Landmarks are inserted into the page using the role attribute on an element that marks the section. The value of the attribute is the name of the landmark.
ARIA Landmark Role Values
- banner: A region that contains the prime heading or internal title of a page.
- complementary: Any section of the document that supports the main content, yet is separate and meaningful on its own.
- contentinfo: A region that contains information about the parent document such as copyrights and links to privacy statements.
- form: A region of the document that represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing.
- main: Main content in a document. In almost all cases a page will have only one role="main".
- navigation: A collection of links suitable for use when navigating the document or related documents.
- search: The search tool of a Web document.
- application: A region declared as a web application, as opposed to a web document. (note: The role of application should only be used with caution because it gives a signal to screen reading software to turn off normal web navigation controls. Simple widgets should generally not be given the application role, nor should an entire web page be given the application role, unless it is not to be used at all like a web page, and not without much user testing with assistive technology.)
Use heading elements at the beginning of each section of content to convey the structure
- Heading markup can be used for the following:
- To indicate start of main content
- To mark up section headings within the main content area
- To demarcate different navigational sections like top or main navigation, left or secondary navigation and footer navigation
- To mark up images of text that are used as headings
- To allow users the ability to navigate a page by sections or skip repeated blocks of information
- Make the h1, h2, h3 etc be meaningful
- When headings are nested hierarchically, the most important information is given the highest logical level, and subsections are given subsequent logical levels.(i.e., h2 is a subsection of h1). Providing this type of structure will help users understand the overall organization of the content more easily.
Page Titled 2.4.2
Example
<title>4imprint Promotional Products</title>
Acceptance Criteria
- The descriptive title of an HTML Web page is marked up with the <title> element so that it will be displayed in the title bar.
Notes
Web pages have titles that describe topic or purpose.
Focus Order 2.4.3
Examples
Interactive Controls
On a web page that contains a tree of interactive controls, the user can use the up and down arrow keys to move from tree node to tree node. Pressing the right arrow key expands a node, then using the down arrow key moves into the newly expanded nodes.
Modal Dialogs via Scripting
- A web page implements modal dialogs via scripting.
- When the trigger button is activated, a dialog opens and focus is set to the first interactive element in the dialog.
- As long as the dialog is open, focus is limited to the elements of the dialog.
- When the dialog is dismissed, focus returns to the button or the element following the button.
Acceptance Criteria
- Place the interactive elements in an order that follows sequences and relationships within the content
- Give focus to elements in an order that follows sequences and relationships within the content by:
- Creating a logical tab order through links, form controls, and objects
- Making the DOM order match the visual order
Notes
If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability.
Link Purpose 2.4.4
Examples
Link Text (correct)
For more information on how these customer testimonials and product reviews are collected, please click here to read more.
Link Text (incorrect)
Acceptance Criteria
- Provide link text that describes the purpose of a link.
- Provide a supplemental description of the purpose of a link using one of the following techniques:
- Supplementing link text with the title attribute.
- Using CSS to hide a portion of the link text. (can use class visually-hidden)
- Identify the purpose of a link using link text combined with programmatically determined link context using one of the following techniques:
- Identifying the purpose of a link using link text combined with its enclosing list item.
- Identifying the purpose of a link using link text combined with its enclosing paragraph.
- Identifying the purpose of a link in a nested list using link text combined with the parent list item under which the list is nested.
- DO NOT use a null alt on an image where the image is the only content in a link.
Notes
The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.
Multiple Ways 2.4.5
Acceptance Criteria
- Provide links to navigate to related Web pages
- Provide a search function to help users find content
- Provide a list of links to all other Web pages
Notes
More than one way is available to locate a Web page within a set of Web pages except where the Web Page is the result of, or a step in, a process.
Headings and Labels 2.4.6
Examples
Descriptive Heading (correct)
<h1>Disaster preparation</h1>
<h2>Flood preparation</h2>
<h2>Fire preparation</h2>
Descriptive Heading (incorrect)
<h1>Preparation for Disasters</h1>
<h2>Preparation for Floods</h2>
<h2>Preparation for Fires</h2>
Form Labels & Inputs
<div>
<label for="firstName">First Name</label>
<input id="firstName" type="text">
</div>
<div>
<label for="lastName">Last Name</labe>
<input id="lastName" type="text">
</div>
Descriptive Labels
- A Web application presents maps of a city. Users can "zoom in" to view part of the map in greater detail, and can "zoom out" to make it show a larger part of the city. The controls can be operated using either a mouse or a keyboard. The controls are labeled "Zoom in (Ctrl + Shift + L)" And "Zoom out (Ctrl + Shift + R)."
- A form asks the name of the user. It consists of two input fields to ask for the first and last name. The first field is labeled "First name", the second is labeled "Last name".
- A purchasing form includes several fields that are required. In addition to identifying the field, the label for each required field includes the word "required" in parentheses.
Acceptance Criteria
- Providing descriptive headings opens in new window.
- Providing descriptive labels opens in new window.
- Use required form control. View examples opens in new window of required form controls.
Notes
Headings and labels describe topic or purpose.
Descriptive Headings
An HTML page that describes the range of tasks for disaster preparation may have the following headings: Note that the level 2 headings have the distinguishing information at the beginning (ie, instead of "Preparation for floods", "Preparation for fires", etc).
Focus Not Obscured (Minimum) 2.4.11
Acceptance Criteria
- When a user interface component receives keyboard focus, the component is not entirely hidden due to author-created content.
Notes
Where content in a configurable interface can be repositioned by the user, then only the initial positions of user-movable content are considered for testing and conformance of this Success Criterion.
Content opened by the user may obscure the component receiving focus. If the user can reveal the focused component without advancing the keyboard focus, the component with focus is not considered hidden due to author-created content.
Input Modalities 2.5
Motion Actuation 2.5.4
Acceptance Criteria
- After text is input in a field, shaking a device shows a dialog offering users to undo the input. A cancel button next to the text field offers the same functionality.
- A user can tilt a device to advance to the next or a previous page. Buttons or links are also provided to perform the same function.
- A user can move or pan a device to change the view in an interactive photo. A control is also available to perform these same functions.
- A user can gesture towards the device to navigate content. Controls are also available to navigate.
- A user can choose an application setting which turns off Shake to Undo features.
Exceptions
- Supported Interface: The motion is used to operate functionality through an accessibility supported interface;
- Essential: The motion is essential for the function and doing so would invalidate the activity.
Notes
Functionality that can be operated by device motion or user motion can also be operated by user interface components and responding to the motion can be disabled to prevent accidental actuation.
Pointer Gestures 2.5.1
Acceptance Criteria
- Ensure all content can be operated without complex gestures.
- Examples of single-point activation on a touchscreen or touchpad include taps, double taps, and long presses.
- Examples for a mouse, trackpad, head-pointer, or similar device include single clicks, click-and-hold and double clicks.
- Pinch gesture for zooming and drag gestures to move the visible area must also contain [+] and [-] buttons to zoom in and out, and arrow buttons to pan in all directions.
- Slider controls that use swiping or dragging must also have buttons on both sides to allow scrolling or increment/decrement the selected value and update the posiiton.
Notes
All functionality that uses multipoint or path-based gestures for operation can be operated with a single pointer without a path-based gesture, unless a multipoint or path-based gesture is essential.
Pointer Cancellation 2.5.2
Acceptance Criteria (must meet 1)
- No Down-Event: The down-event of the pointer is not used to execute any part of the function;
- Abort or Undo: Completion of the function is on the up-event, and a mechanism is available to abort the function before completion or to undo the function after completion;
- Up Reversal: The up-event reverses any outcome of the preceding down-event;
- Essential: Completing the function on the down-event is essential. (ex: functions that emulate a keyboard or numeric keypad key press.)
Notes
For functionality that can be operated using a single pointer, at least one of the below criteria is true.
Label in Name 2.5.3
Examples
aria-label (incorrect)
This would not work because the user sees "Next" written on the page so they speak "next". The aria-label over-rides everything so they would need to say "Go to..." which they cannot see.
<a href="#" aria-label="Go to next page">Next</a>
aria-label (correct)
It would, however, be okay to do something like this, as long as the text represented on the screen is what the aria-label starts with, you've met the success criterion.
<a href="#" aria-label="Next page">Next</a>
visually-hidden (incorrect)
This would not work because what shows up on the screen is "Next Page" so that is what the user would speak. However, the for assistive technology, the link is going to show up as "Go to Next Page" and will be looking for the user to say this.
<a href="#"><span class="visually-hidden">Go to </span>Next Page</a>
visually-hidden (correct)
This would work as long as the user would say "Next Page". It would still be best to use aria-label as above than use "visually-hidden" class to hide text.
<a href="#">Next<span class="visually-hidden"> Page</span></a>
Acceptance Criteria
- Visible text labels of controls must match their accessible names.
- The accessible name of a button begins with the same text as the visible label.
Notes
For user interface components with labels that include text or images of text, the name contains the text that is presented visually.
Dragging Movements 2.5.7
Acceptance Criteria
- Check that the value of the control slider (range) can be set with a tap or click using a pointer.
- Check that single pointer operable controls exist over or adjacent to the content slider that advance to adjacent chunks of content.
Notes
All functionality that uses a dragging movement for operation can be achieved by a single pointer without dragging, unless dragging is essential or the functionality is determined by the user agent and not modified by the author.
Target Size 2.5.8
Acceptance Criteria
- The size of the target for pointer inputs is at least 24 by 24 CSS pixels, except where:
- Spacing: Undersized targets (those less than 24 by 24 CSS pixels) are positioned so that if a 24 CSS pixel diameter circle is centered on the bounding box of each, the circles do not intersect another target or the circle for another undersized target;
- Equivalent: The function can be achieved through a different control on the same page that meets this criterion;
- Inline: The target is in a sentence or its size is otherwise constrained by the line-height of non-target text;
- User agent control: The size of the target is determined by the user agent and is not modified by the author;
- Essential: A particular presentation of the target is essential or is legally required for the information being conveyed.
Notes
Targets that allow for values to be selected spatially based on position within the target are considered one target for the purpose of the success criterion. Examples include sliders, color pickers displaying a gradient of colors, or editable areas where you position the cursor.
For inline targets the line-height should be interpreted as perpendicular to the flow of text. For example, in a language displayed vertically, the line-height would be horizontal.
Language of Parts 3.1.2
Example
<blockquote xml:lang="de">
<p>
Da dachte der Herr daran, ihn aus dem Futter zu schaffen,
aber der Esel merkte, daß kein guter Wind wehte, lief fort
und machte sich auf den Weg nach Bremen: dort, meinte er,
könnte er ja Stadtmusikant werden.
</p>
</blockquote>
Acceptance Criteria
- Use language attributes on the html element.
- Specify the default language in the HTTP header
Notes
The human language of each passage or phrase in the content can be programmatically determined except for proper names, technical terms, words of indeterminate language, and words or phrases that have become part of the vernacular of the immediately surrounding text.
If you have to change the language
This example demonstrates the use of the xml:lang attribute defining a quote written in German. This snippet could be included by an XHTML 1.1 document where lang is not allowed.
Language of Page 3.1.1
Example
<lang="en">
Acceptance Criteria
- Use language attributes on the html element.
- specify the default language in the HTTP header
Notes
The default human language of each Web page can be programmatically determined.
Predictable 3.2
Consistent Identification 3.2.4
Examples
- A printer icon allows the user to print receipts and invoices. In one part of the application, the printer icon is labeled "Print receipt" and is used to print receipts, while in another part it is labeled "Print invoice" and is used to print invoices. The labeling is consistent ("Print x"), but the labels are different to reflect the different functions of the icons. Therefore, this example does not fail the Success Criterion.
- A document icon is used to indicate document download throughout a site. The text alternative for the icon always begins with the word “Download," followed by a shortened form of the document title. Using different text alternatives to identify document names for different documents is a consistent use of text alternatives.
- A check mark icon functions as "approved", on one page but as "included" on another. Since they serve different functions, they have different text alternatives.
Acceptance Criteria
- Use labels, names, and text alternatives consistently for content that has the same functionality AND following the sufficient techniques for Success Criterion 1.1.1 and sufficient techniques for Success Criterion 4.1.2 for providing labels, names, and text alternatives
- Ensure that the text alternative conveys the function of the component and what will happen when the user activates it.
- Use the same non-text content for a given function whenever possible
Notes
Components that have the same functionality within a set of Web pages are identified consistently.
Text alternatives that are "consistent" are not always "identical
For instance, you may have an graphical arrow at the bottom of a Web page that links to the next Web page. The text alternative may say " Go to page 4." Naturally, it would not be appropriate to repeat this exact text alternative on the next Web page. It would be more appropriate to say "Go to page 5" . Although these text alternatives would not be identical, they would be consistent, and therefore would satisfy this Success Criterion.
A single non-text-content-item may be used to serve different functions
In such cases, different text alternatives are necessary and should be used. Examples can be commonly found with the use of icons such as check marks, cross marks, and traffic signs. Their functions can be different depending on the context of the Web page. A check mark icon may function as "approved", "completed", or "included", to name a few, depending on the situation. Using "check mark" as text alternative across all Web pages does not help users understand the function of the icon. Different text alternatives can be used when the same non-text content serves multiple functions.
Acceptance Criteria
- Open new windows and tabs from a link only when necessary.
- Give users advanced warning when opening a new window.
- A page pops up a new window only when the user clicks(or uses spacebar) on a button rather than using onfocus to pop up a new window.
- A submit button is used to move on to the next data entry screen rather than having the next screen appear automatically when the user tabbed onto a 'done' button.
- The objective of this technique is to provide a method for activating things that is predictable by the user. Users with cognitive disabilities and people using screen readers or screen magnifiers may be confused by an unexpected event such as automatic form submission or activation of a function that causes a change of context.
Notes
When any component receives focus, it does not initiate a change of context.
Examples
Useful Link
When user hovers over link, tooltip pops up saying it will open a new window, see below from w3.org: Pop up warning example opens in new window
Form Field for Phone Number
- A form contains fields representing US phone numbers.
- All of the numbers have a three digit area code followed by a three digit prefix and finally a four digit number, and each part of the phone number is entered into a separate field.
- When the user completes the entry of one field the focus automatically moves to the next field of the phone number.
- This behavior of phone fields is described for the user at the beginning of the form.
Acceptance Criteria
- Changing the setting of any user interface component does not automatically cause a change of context unless the user has been advised of the behavior before using the component.
- Providing a submit button to initiate a change of context using one of the following techniques:
- Providing submit buttons
- Using a button with a select element to perform an action
- Describing what will happen before a change to a form control that causes a change of context to occur is made
- Using an onchange event on a select element without causing a change of context
- Giving users advanced warning when opening a new window
Notes
Changing the setting of any user interface component does not automatically cause a change of context unless the user has been advised of the behavior before using the component.
Selecting elements causes data within dropdown to update accordingly. See example on how to set up. opens in new window
Consistent Navigation 3.2.3
Example
Skip to content link, navigational menu, search bar, etc. -- all items appear in the same spot across all pages.
Acceptance Criteria
- Use templates to ensure consistency across multiple Web pages.
- Create layout, positioning, layering, and alignment.
Notes
Navigational mechanisms that are repeated on multiple Web pages within a set of Web pages occur in the same relative order each time they are repeated, unless a change is initiated by the user.
Consistent Help 3.2.6
Acceptance Criteria
- If a web page contains any of the following help mechanisms, and those mechanisms are repeated on multiple web pages within a set of web pages, they occur in the same relative order to other page content, unless a change is initiated by the user:
- Human contact details;
- Human contact mechanism;
- Self-help option;
- A fully automated contact mechanism.
- Help mechanisms may be provided directly on the page, or may be provided via a direct link to a different page containing the information.
Notes
Put help in the same place when it is on multiple pages.
Input Assistance 3.3
Error Prevention (Legal, Financial, Data) 3.3.4
Acceptance Criteria
- Reversible: Submissions are reversible.
- Checked: Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
- Confirmed: A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
If an Application Causes a Legal Transaction to Occur, Such as Making a Purchase
- Provide a stated time within which an online request (or transaction) may be amended or canceled by the user after making the request.
- Provide the ability for the user to review and correct answers before submitting.
If an Action Causes Information to be Deleted
- Provide the ability to recover deleted information.
- Request confirmation to continue with selected action.
Notes
For Web pages that cause legal commitments or financial transactions for the user to occur, that modify or delete user-controllable data in data storage systems, or that submit user test responses, at least one of the below criteria is true.
Error Identification 3.3.1
Acceptance Criteria
- Provide text descriptions to identify required fields that were not completed.
- Provide client-side validation and alert (if applicable).
- Provide a text description when the user provides information that is not in the list of allowed values.
- Provide a text description when user input falls outside the required format or values.
- Highlight errors where they occur.
- Need asterisk by required fields. Also, need note stating what asterisk means: Starred(*) fields are required.
Notes
If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text.
Labels or Instructions 3.3.2
Example
<label for="password">Password</label>
<input id="password" type="text" aria-describedby="passwordDesc">
<p id="passwordDesc">Must use 1 uppercase letter and 1 number.</p>
Acceptance Criteria
- Provide text instructions at the beginning of a form or set of fields that describes the necessary input.
- Position labels to maximize predictability of relationships.
- Indicate required form controls using label or legend.
- Use label elements to associate text labels with form controls.
- Provide a description for groups of form controls using fieldset and legend elements.
- Use the title attribute to identify form controls when the label element cannot be used.
Form Labeling
More Information on ARIA within Forms opens in new window
Meeting Acceptance Criteria on Form Labeling
- Use <label> element when you can. It has excellent browser and screen reader support, and users can click on the label to select the associated form control.
- Use aria-labelledby to overcome the 1:1 limitations of <label>.
- Use aria-describedby in addition to a label when you need to associate descriptive text to the form control.
- Use a hidden <label> or title or aria-label when a visible text label is not available.
Notes
Labels or instructions are provided when content requires user input.
Error Suggestion 3.3.3
Acceptance Criteria
- Create a mechanism that allows users to jump to errors.
- Make error messages easy to understand and distinguishable from other text in the Web page.
- When mandatory information has not been provided, including descriptions or examples of correct information in addition to identifying the field as mandatory.
- Repeat and emphasize suggestions for correcting each input error in the context of its form field.
- Provide a way for the user to skip from each item in a list of suggestions to its corresponding form field.
- Provide additional contextual help for the form field requiring change.
- Accept input data in a variety of formats.
- Provide success feedback when data is submitted successfully
If a Mandatory Field Contains No Information
- Provide text descriptions to identify required fields that were not completed.
- Identify a required field with the aria-required property.
If Information for a Field is Required to be in a Specific Data Format
- Use aria-alertdialog to Identify Errors.
- Provide a text description when user input falls outside the required format or values.
- Provide suggested correction text.
- Provide client-side validation and alert.
- Provide client-side validation and adding error text via the DOM.
Notes
If an input error is automatically detected and suggestions for correction are known, then the suggestions are provided to the user, unless it would jeopardize the security or purpose of the content.
Accessible Authentication (Minimum) 3.3.8
Acceptance Criteria
- A cognitive function test opens in new window (such as remembering a password or solving a puzzle) is not required for any step in an authentication process unless that step provides at least one of the following:
- Alternative: Another authentication method that does not rely on a cognitive function test.
- Mechanism: A mechanism is available to assist the user in completing the cognitive function test.
- Object Recognition: The cognitive function test is to recognize objects.
- Personal Content: The cognitive function test is to identify non-text content the user provided to the website.
Notes
Don’t make people solve, recall, or transcribe something to log in.
Parsing 4.1.1
Example
Duplicate Attribute; Do not do.
<style>
.sampleText { font-weight: bold; }
</style>
<p class="textBold sampleText">
Sample text here.
</p>
Acceptance Criteria
- Validate web pages.
- Ensure that opening and closing tags are used according to specs.
- Ensure that id attributes are unique on the web page.
- Avoid using duplicate attributes on elements.
Notes
In content implemented using markup languages, elements have complete start and end tags, elements are nested according to their specifications, elements do not contain duplicate attributes, and any IDs are unique, except where the specifications allow these features.
Name, Role, Value 4.1.2
Acceptance Criteria
- Use the title attribute of the frame and iframe elements.
- Use the title attribute to identify form controls when the label element cannot be used.
- Use label elements to associate text labels with form controls.
Notes
For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
Status Messages 4.1.3
Examples
- After a user presses a Search button, the page content is updated to include the results of the search, which are displayed in a section below the Search button. The change to content also includes the message "5 results returned" near the top of this new content. This text is given an appropriate role for a status message. A screen reader announces, "Five results returned".
- After a user presses an Add to Shopping Cart button, a section of content near the Shopping Cart icon adds the text "5 items". A screen reader announces "Five items" or "Shopping cart, five items".
- After a user enters incorrect text in an input called Postal Code, a message appears above the input reading "Invalid entry". The screen reader announces, "Invalid entry" or "Postal code, invalid entry".
- After a user activates a process, an icon symbolizing 'busy' appears on the screen. The screen reader announces "application busy".
- After a user submits a form, text is added to the existing form which reads, "Your form was successfully submitted." The screen reader announces the same message.
- After a user unsuccessfully fills in a form because some of the data is in the incorrect format, text is added to the existing form which reads "5 errors on page". The screen reader announces the same message.
Acceptance Criteria
- If status message advises on the success or results of an action, use role="status". Ex: When providing success feedback when data is submitted successfully.
- If status message conveys a suggestion or warning, use role="alert". Ex: Validation summary.
- If status message conveys information on the progress of a process, use role="progressbar".
- Do not use role="alert" or aria-live="assertive" on content which is not important and time-sensitive.
Notes
In content implemented using markup languages, status messages can be programmatically determined through role or properties such that they can be presented to the user by assistive technologies without receiving focus.
Abstract Roles
Used to support the WAI-ARIA role taxonomy for the purpose of defining general role concepts.
Role | Description | Related Elements | Required States/Properties | Supported States/Properties | Inherited States/Properties |
---|---|---|---|---|---|
command opens in new window | A form of widget that performs an action but does not receive input data. | menuitem | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
opens in new window | A widget that may contain navigable descendants or owned children. | aria-activedescendant | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
input opens in new window | A generic type of widget that allows user input. | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |||
landmark opens in new window | A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology. | 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 | |||
range opens in new window | An input representing a range of values that can be set by the user. | aria-valuemax aria-valuemin aria-valuenow aria-valuetext | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
roletype opens in new window | The base role from which all other roles in this taxonomy inherit. | rel | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
section opens in new window | A renderable structural containment unit in a document or application. | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |||
sectionhead opens in new window | A structure that labels or summarizes the topic of its related section. | aria-expanded (state) | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
select opens in new window | A form widget that allows the user to make selections from a set of choices. | aria-orientation | 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 | ||
structure opens in new window | A document structural element. | aria-orientation | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
widget opens in new window | An interactive component of a graphical user interface (GUI). | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |||
window opens in new window | A browser or application window. | aria-expanded aria-modal | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 |
Landmark Roles
Used on regions of the page intended as navigational landmarks.
Role | Description | Related Elements | Required States/Properties | Supported States/Properties | Inherited States/Properties |
---|---|---|---|---|---|
banner opens in new window | A region that contains mostly site-oriented content, rather than page-specific content. | 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 | |||
complementary opens in new window | A supporting section of the document, designed to be complementary to the main content at a similar level in the DOM hierarchy, but remains meaningful when separated from the main content. | 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 | |||
contentinfo opens in new window | A large perceivable region that contains information about the parent document. | 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 | |||
form opens in new window | A landmark region that contains a collection of items and objects that, as a whole, combine to create a form. See related search. | form | 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 | ||
main opens in new window | The main content of a document. | 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 | |||
navigation opens in new window | A collection of navigational elements (usually links) for navigating the document or related documents. | nav | 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 | ||
region opens in new window | A perceivable section containing content that is relevant to a specific, author-specified purpose and sufficiently important that users will likely want to be able to navigate to the section easily and to have it listed in a summary of the page. Such a page summary could be generated dynamically by a user agent or assistive technology. | frame section | 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 | ||
search opens in new window | A landmark region that contains a collection of items and objects that, as a whole, combine to create a search facility. See related form and searchbox. | 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 |
Live Region Roles
Live regions that may be modified by live region attributes.
Role | Description | Related Elements | Required States/Properties | Supported States/Properties | Inherited States/Properties |
---|---|---|---|---|---|
alert opens in new window | A type of live region with important, and usually time-sensitive, information. See related alertdialog and status. | 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 | |||
log opens in new window | A type of live region where new information is added in meaningful order and old information may disappear. See related marquee. | 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 | |||
marquee opens in new window | A type of live region where non-essential information changes frequently. See related log. | 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 | |||
status opens in new window | A type of live region whose content is advisory information for the user but is not important enough to justify an alert, often but not necessarily presented as a status bar. | 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 | |||
timer opens in new window | A type of live region containing a numerical counter which indicates an amount of elapsed time from a start point, or the time remaining until an end point. | 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 |
Structural Roles
Describes structures that organize content in a page. Document structures are not usually interactive.
Role | Description | Related Elements | Required States/Properties | Supported States/Properties | Inherited States/Properties |
---|---|---|---|---|---|
application opens in new window | A structure containing one or more focusable elements requiring user input, such as keyboard or gesture events, that do not follow a standard interaction pattern supported by a widget role. | aria-activedescendant | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
article opens in new window | A section of a page that consists of a composition that forms an independent part of a document, page, or site. | article | aria-posinset aria-setsize | 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 | |
cell opens in new window | A cell in a tabular container. See related gridcell. | td | aria-colindex aria-colspan aria-rowindex aria-rowspan | 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 | |
columnheader opens in new window | A cell containing header information for a column. | th[scope="col"] | aria-sort | aria-atomic aria-busy (state) aria-colindex aria-colspan 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-readonly aria-relevant aria-required aria-roledescription aria-rowindex aria-rowspan aria-selected (state) | |
definition opens in new window | A definition of a term or concept. See related term. | dd dfn | 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 | ||
directory opens in new window | A list of references to members of a group, such as a static table of contents. | 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 | |||
document opens in new window | An element containing content that assistive technology users may want to browse in a reading mode. | aria-expanded | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
feed opens in new window | A scrollable list of articles where scrolling may cause articles to be added to or removed from either end of the list. | 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 | |||
figure opens in new window | A perceivable section of content that typically contains a graphical document, images, code snippets, or example text. The parts of a figure MAY be user-navigable. | figure | 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 | ||
group opens in new window | A set of user interface objects which are not intended to be included in a page summary or table of contents by assistive technologies. | fieldset | 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 | |
heading opens in new window | A heading for a section of the page. | h1, h2, h3, h4, h5, h6 | aria-level | 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 | |
img opens in new window | A container for a collection of elements that form an image. | img | 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 | ||
list opens in new window | A section containing listitem elements. See related listbox. | ol, ul | 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 | ||
listitem opens in new window | A single item in a list or directory. | li | aria-level aria-posinset aria-setsize | 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 | |
math opens in new window | Content that represents a mathematical expression. | li | 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 | ||
none opens in new window | An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym presentation. | 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 | |||
note opens in new window | A section whose content is parenthetic or ancillary to the main content of the resource. | 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 | |||
presentation opens in new window | An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym none. | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |||
row opens in new window | A row of cells in a tabular container. | tr | aria-colindex aria-level aria-rowindex aria-selected | 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 | |
rowgroup opens in new window | A structure containing one or more row elements in a tabular container. | tbody, tfoot, thead | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
rowheader opens in new window | A cell containing header information for a row in a grid. | th[scope="row"] | aria-sort | aria-atomic aria-busy (state) aria-colindex aria-colspan 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-readonly aria-relevant aria-required aria-roledescription aria-rowindex aria-rowspan aria-selected (state) | |
separator opens in new window | A divider that separates and distinguishes sections of content or groups of menuitems. | hr | aria-valuemax (if focusable) aria-valuemin (if focusable) aria-valuenow (if focusable) | aria-orientation aria-valuetext (if focusable) | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 |
table opens in new window | A section containing data arranged in rows and columns. See related grid. | table | aria-colcount aria-rowcount | 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 | |
term opens in new window | A word or phrase with a corresponding definition. See related definition. | dt | 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 | ||
toolbar opens in new window | A collection of commonly used function buttons or controls represented in compact visual form. | aria-orientation | 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 | ||
tooltip opens in new window | A contextual popup that displays a description for an element. | 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 |
Widget Roles
Act as standalone user interface widgets or as part of larger, composite widgets.
Role | Description | Related Elements | Required States/Properties | Supported States/Properties | Inherited States/Properties |
---|---|---|---|---|---|
button opens in new window | An input that allows for user-triggered actions when clicked or pressed. See related link. | link | aria-expanded aria-pressed | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |
checkbox opens in new window | A checkable input that has three possible values: true, false, or mixed. | input[type="checkbox"] option | aria-checked | aria-readonly | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-relevant aria-roledescription |
combobox opens in new window | A composite widget containing a single-line textbox and another element, such as a listbox or grid, that can dynamically pop up to help the user set the value of the textbox. | select | aria-controls aria-expanded | aria-autocomplete aria-readonly aria-required | aria-activedescendant aria-atomic aria-busy (state) aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-live aria-orientation aria-owns aria-relevant aria-roledescription |
grid opens in new window | A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys. | table | aria-level aria-multiselectable aira-readonly | aria-activedescendant aria-atomic aria-busy (state) aria-colcount 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 aria-rowcount | |
gridcell opens in new window | A cell in a grid or treegrid. | td | aria-readonly aria-required aria-selected | aria-atomic aria-busy (state) aria-colindex aria-colspan 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 aria-rowindex aria-rowspan | |
link opens in new window | An interactive reference to an internal or external resource that, when activated, causes the user agent to navigate to that resource. See related button. | a link | aria-expanded | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |
listbox opens in new window | A widget that allows the user to select one or more items from a list of choices. See related combobox and list. | list select | aria-multiselectable aria-readonly aria-required | aria-activedescendant aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-live aria-orientation aria-owns aria-relevant aria-roledescription | |
menu opens in new window | A type of widget that offers a list of choices to the user. | list | 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-orientation aria-owns aria-relevant aria-roledescription | ||
menubar opens in new window | A presentation of menu that usually remains visible and is usually presented horizontally. | toolbar | 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-orientation aria-owns aria-relevant aria-roledescription | ||
menu item opens in new window | An option in a set of choices contained by a menu or menubar. | menuitem listitem option | aria-posinset aria-setsize | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |
menuitemcheckbox opens in new window | A menuitem with a checkable state whose possible values are true, false, or mixed. | menuitem | aria-checked (state) | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-live aria-owns aria-posinset aria-readonly aria-relevant aria-roledescription aria-setsize | |
menuitemradio opens in new window | A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time. | menuitem | aria-checked (state) | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-live aria-owns aria-posinset aria-readonly aria-relevant aria-roledescription aria-setsize | |
option opens in new window | A selectable item in a select list. | listitem | aria-selected | aria-checked aria-posinset aria-setsize | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 |
progressbar opens in new window | An element that displays the progress status for tasks that take a long time. | status | 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 aria-valuemax aria-valuemin aria-valuenow aria-valuetext | ||
radio opens in new window | A checkable input in a group of elements with the same role, only one of which can be checked at a time. | input[type="radio"] | aria-checked | aria-posinset aria-setsize | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 |
radiogroup opens in new window | A group of radio buttons. | aria-readonly aria-required | 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-orientation aria-owns aria-relevant aria-roledescription | ||
scrollbar opens in new window | A graphical object that controls the scrolling of content within a viewing area, regardless of whether the content is fully displayed within the viewing area. | aria-controls aria-orientation aria-valuemax aria-valuemin aria-valuenow | aria-atomic aria-busy (state) aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 aria-valuetext | ||
searchbox opens in new window | A type of textbox intended for specifying search criteria. See related textbox and search. | input[type="search"] | aria-activedescendant aria-atomic aria-autocomplete aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-live aria-multiline aria-owns aria-placeholder aria-readonly aria-relevant aria-required aria-roledescription | ||
separator opens in new window | A divider that separates and distinguishes sections of content or groups of menuitems. | hr | aria-valuemax (if focusable) aria-valuemin (if focusable) aria-valuenow (if focusable) | aria-orientation aria-valuetext (if focusable) | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 |
slider opens in new window | A user input where the user selects a value from within a given range. | aria-valuemax aria-valuemin aria-valuenow | aria-orientation aria-readonly | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 aria-valuetext | |
spinbutton opens in new window | A form of range that expects the user to select from among discrete choices. | aria-valuemax aria-valuemin aria-valuenow | aria-readonly aria-required | aria-activedescendant aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 aria-valuetext | |
switch opens in new window | A type of checkbox that represents on/off values, as opposed to checked/unchecked values. See related checkbox. | button | aria-checked | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage aria-flowto aria-grabbed (state) aria-haspopup aria-hidden (state) aria-invalid (state) aria-keyshortcuts aria-label aria-labelledby aria-live aria-owns aria-readonly aria-relevant aria-roledescription | |
tab opens in new window | A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user. | aria-posinset aria-selected aria-setsize | 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 | ||
tabpanel opens in new window | A container for the resources associated with a tab, where each tab is contained in a tablist. | 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 | |||
tablist opens in new window | A list of tab elements, which are references to tabpanel elements. | aria-level aria-multiselectable aria-orientation | aria-activedescendant aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | ||
textbox opens in new window | A type of input that allows free-form text as its value. | textarea input[type="text"] | aria-activedescendant aria-autocomplete aria-multiline aria-placeholder aria-readonly aria-required | aria-atomic aria-busy (state) aria-controls aria-current (state) aria-describedby aria-details aria-disabled (state) aria-dropeffect aria-errormessage 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 | |
tree opens in new window | A type of list that may contain sub-level nested groups that can be collapsed and expanded. | aria-multiselectable aria-required | 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-orientation aria-owns aria-relevant aria-roledescription | ||
treeitem opens in new window | An option item of a tree. This is an element within a tree that may be expanded or collapsed if it contains a sub-level group of tree item elements. | aria-selected (state) | aria-atomic aria-busy (state) aria-checked(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-level aria-live aria-owns aria-posinset aria-relevant aria-roledescription aria-setsize | ||
treegrid opens in new window | A grid whose rows can be expanded and collapsed in the same manner as for a tree. | aria-activedescendant aria-atomic aria-busy (state) aria-colcount 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-level aria-live aria-multiselectable aria-orientation aria-owns aria-readonly aria-relevant aria-required aria-roledescription aria-rowcount |
Window Roles
Act as windows within the browser or application.
Role | Description | Related Elements | Required States/Properties | Supported States/Properties | Inherited States/Properties |
---|---|---|---|---|---|
alertdialog opens in new window | A type of dialog that contains an alert message, where initial focus goes to an element within the dialog. See related alert and dialog. | 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-modal aria-owns aria-relevant aria-roledescription | |||
dialog opens in new window | A dialog is a descendant window of the primary window of a web application. For HTML pages, the primary application window is the entire web document, i.e., the body element. | 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-modal aria-owns aria-relevant aria-roledescription |
European Accessibility Act (EAA)
European Accessibility Act Compliance
Acceptance Criteria
- Websites and mobile apps must fulfill the success criteria for Level A and Level AA per the WCAG 2.1 standard.
- Companies must have a publicly posted, regularly updated accessibility statement explaining accessible content standards and they must provide users with a link to provide feedback.