From f27ac347743aa2c52882fa9706fb1ae039f79b8f Mon Sep 17 00:00:00 2001 From: Eric Eggert <mail@yatil.net> Date: Thu, 6 Mar 2025 16:27:51 +0100 Subject: [PATCH 1/2] Change all dismissable instances to dismissible in Understanding Content on Hover or Focus --- .../21/content-on-hover-or-focus.html | 261 +++++++++--------- 1 file changed, 132 insertions(+), 129 deletions(-) diff --git a/understanding/21/content-on-hover-or-focus.html b/understanding/21/content-on-hover-or-focus.html index cff83df5d1..e5bae6a9fa 100644 --- a/understanding/21/content-on-hover-or-focus.html +++ b/understanding/21/content-on-hover-or-focus.html @@ -1,137 +1,140 @@ <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> - <head> - <meta charset="UTF-8" /> - <title>Understanding Content on Hover or Focus</title> - <link rel="stylesheet" type="text/css" href="../../css/sources.css" class="remove" /> - </head> - <body> - <h1>Understanding Content on Hover or Focus</h1> - <section id="intent"> - <h2>Intent</h2> - <p>Additional content that appears and disappears in coordination with keyboard focus or pointer hover often leads to accessibility issues. Reasons for such issues include:</p> - <ol> - <li>the user may not have intended to trigger the interaction</li> - <li>the user may not know new content has appeared</li> - <li>the new content may intefere with a user's ability to do a task</li> - </ol> - <p>Examples of such interactions can include custom tooltips, sub-menus and other nonmodal popups which display on hover and focus. The intent of this success criterion is to ensure that authors who cause additional content to appear and disappear in this manner must design the interaction in such a way that users can:</p> - <ul> - <li>perceive the additional content AND</li> - <li>dismiss it without disrupting their page experience.</li> - </ul> + <head> + <meta charset="UTF-8" /> + <title>Understanding Content on Hover or Focus</title> + <link rel="stylesheet" type="text/css" href="../../css/sources.css" class="remove" /> + </head> - <p>There are usually more predictable and accessible means of adding content to the page, which authors are recommended to employ. If an author <em>does</em> choose to make additional content appear and disappear in coordination with hover and keyboard focus, this success criterion specifies three conditions that must be met:</p> - <ul> - <li>dismissable</li> - <li>hoverable</li> - <li>persistent</li> - </ul> - <p>Each of these is discussed in a separate section.</p> - <p class="note">This SC covers content that appears in addition to the triggering component itself. Therefore, a non-visible component, like a Skip to Main link, that is made visible on keyboard focus (with no <em>additional</em> content beyond the trigger becoming visible) is not covered by the SC. - </p> + <body> + <h1>Understanding Content on Hover or Focus</h1> + <section id="intent"> + <h2>Intent</h2> + <p>Additional content that appears and disappears in coordination with keyboard focus or pointer hover often leads to accessibility issues. Reasons for such issues include:</p> + <ol> + <li>the user may not have intended to trigger the interaction</li> + <li>the user may not know new content has appeared</li> + <li>the new content may intefere with a user's ability to do a task</li> + </ol> - <section> - <h3>Dismissable</h3> - <p>The intent of this condition is to ensure that the additional content does not interfere with viewing or operating the page's original content. When magnified, the portion of the page visible in the viewport can be significantly reduced. Mouse users frequently move the pointer to pan the magnified viewport and display another portion of the screen. However, almost the entire portion of the page visible in this restricted viewport may trigger the additional content, making it difficult for a user to pan without re-triggering the content. A keyboard means of dismissing the additional content provides a workaround.</p> - <p>Alternatively, low vision users who can only navigate via the keyboard do not want the small area of their magnified viewport cluttered with hover text. They need a keyboard method of dismissing something that is obscuring the current focal area.</p> - <p>Two methods may be used to satisfy this condition and prevent such interference:</p> - <ol> - <li>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.</li> - <li>Provide a mechanism to easily dismiss the additional content, such as by pressing Escape.</li> - </ol> - <p>For most triggers of relatively small size, it is desirable for both methods to be implemented. If the trigger is large, noticing the additional content may be of concern if it appears away from the trigger. In those cases, only the second method may be appropriate.</p> - <p>The success criterion allows for input error messages to persist as there are cases that require attention, explicit confirmation or remedial action.</p> - </section> - <section> - <h3>Hoverable</h3> - <p>The intent of this condition is to ensure that additional content which may appear on hover of a target may also be hovered itself. Content which appears on hover can be difficult or impossible to perceive if a user is required to keep their mouse pointer over the trigger. When the added content is large, magnified views may mean that the user needs to scroll or pan to completely view it, which is impossible unless the user is able to move their pointer off the trigger without the additional content disappearing.</p> - <p>Another common situation is when large pointers have been selected via platform settings or assistive technology. Here, the pointer can obscure a significant area of the additional content. A technique to view the content fully in both situations is to move the mouse pointer directly from the trigger onto the new content. This capability also offers significant advantages for users who utilize screen reader feedback on mouse interactions. This condition generally implies that the additional content overlaps or is positioned adjacent to the target.</p> - </section> - <section> - <h3>Persistent</h3> - <p>The intent of this condition is to ensure users have adequate time to perceive the additional content after it becomes visible. Users with disabilities may require more time for many reasons, such as to change magnification, move the pointer, or simply to bring the new content into their visual field. Once it appears, the content should remain visible until:</p> - <ul> - <li>The user removes hover or focus from the trigger and the additional content, consistent with the typical user experience;</li> - <li>The user dismisses the additional content via the mechanism provided to satisfy the Dismissable condition; or</li> - <li>The information conveyed by the additional content becomes invalid, such as a 'busy' message that is no longer valid.</li> - </ul> - </section> - <section> - <h3>Additional Notes</h3> - <ul> - <li>This criterion does not attempt to solve such issues when the appearance of the additional content is completely controlled by the user agent. A prominent example is the common behavior of browsers to display the <code>title</code> attribute in HTML as a small tooltip.</li> - <li>Modal dialogs are out of scope for this criterion because they must take keyboard focus and thus should not appear on hover or focus. Refer to <a href="https://www.w3.org/TR/WCAG21/#on-focus">Success Criterion 3.2.1, On Focus</a>.</li> - <li>Content which can be triggered via pointer hover should also be able to be triggered by keyboard focus. Refer to <a href="https://www.w3.org/TR/WCAG21/#keyboard">Success Criterion 2.1.1, Keyboard</a>.</li> - </ul> - </section> - </section> - - <section id="benefits"> - <h2>Benefits</h2> - <ul> - <li>Users with low vision who view content under magnification will be better able to view content on hover or focus without reducing their desired magnification.</li> - <li>Users who increase the size of mouse cursors via platform settings or assistive technology will be able to employ a technique to view obscured content on hover.</li> - <li>Users with low vision or cognitive disabilities will have adequate time to perceive additional content appearing on hover or focus and to view the trigger content with less distraction.</li> - <li>users with low pointer accuracy will be able to more easily dismiss unintentionally-triggered additional content</li> - </ul> - </section> - - <section id="examples"> - <h2>Examples</h2> - - <section class="example"> - <h3>Example 1: Dismissable Tooltip</h3> - <figure id="figure-mouse-tooltip-below"> - <img src="img/button-pointer-tooltip.png" alt="Screenshot of a button with a mouse pointer over it, and a tooltip displayed below the button" /> - <img src="img/button-pointer.png" alt="Screenshot of a button with a mouse pointer over it, and no tooltip" /> - <figcaption>A tooltip is displayed below a LVTF button on hover so as not to obscure the button itself. It does however obscure content below the button (the next red button, called ~comment-zoom-content). To meet the Dismissible requirement, a user can press the Escape key to clear the tooltip without moving the mouse, as demonstrated in the second image.</figcaption> - </figure> - <figure id="figure-focused-button-no-tooltip"> - <img src="img/button-focus-indicator.png" alt="Screenshot of a button with a focus indicator on it, and no tooltip" /> - <figcaption>The button's tooltip also appears on focus and can be removed with the Escape key. The screen shot shows the same LVTF button with focus, but the tooltip has been dismissed and is no longer visible.</figcaption> - </figure> - </section> - - <section class="example"> - <h3>Example 2: Hoverable Tooltip</h3> - <figure id="figure-large-pointer-tooltip"> - <img src="img/button-pointer-on-tooltip.png" alt="Screenshot of a button with a large mouse pointer over it, and a tooltip displayed below the button which is obscured by the large pointer" /> - <img src="img/button-pointer-below-tooltip.png" alt="Screenshot of a button with a tooltip below it, and a large mouse pointer at the bottom of the tooltip" /> - <figcaption>A button's tooltip is displayed directly below it on mouse hover which can easily be obscured by a large pointer. The tooltip itself is able to be hovered so the mouse pointer can be moved down to its bottom edge in order to view the tooltip text.</figcaption> - </figure> - </section> + <p>Examples of such interactions can include custom tooltips, sub-menus and other nonmodal popups which display on hover and focus. The intent of this success criterion is to ensure that authors who cause additional content to appear and disappear in this manner must design the interaction in such a way that users can:</p> + <ul> + <li>perceive the additional content AND</li> + <li>dismiss it without disrupting their page experience.</li> + </ul> - </section> - <section id="resources"> - <h2>Resources</h2> - <ul> - <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/">Tooltip design described in WAI-ARIA Authoring Practices</a></li> - </ul> - </section> - - <section id="techniques"> - <h2>Techniques</h2> - <section id="sufficient"> - <h3>Sufficient</h3> - <ul> - <li><a href="../../techniques/client-side-script/SCR39.html">Making content on focus or hover hoverable, dismissible, and persistent</a></li> - <li>ARIA: Using role="tooltip" (Potential future technique)</li> - <li>CSS: Using hover and focus pseudo classes (Potential future technique)</li> - </ul> - </section> - <!--<section id="advisory"> + <p>There are usually more predictable and accessible means of adding content to the page, which authors are recommended to employ. If an author <em>does</em> choose to make additional content appear and disappear in coordination with hover and keyboard focus, this success criterion specifies three conditions that must be met:</p> + <ul> + <li>dismissible</li> + <li>hoverable</li> + <li>persistent</li> + </ul> + <p>Each of these is discussed in a separate section.</p> + <p class="note">This SC covers content that appears in addition to the triggering component itself. Therefore, a non-visible component, like a Skip to Main link, that is made visible on keyboard focus (with no <em>additional</em> content beyond the trigger becoming visible) is not covered by the SC. + </p> + + <section> + <h3>Dismissible</h3> + <p>The intent of this condition is to ensure that the additional content does not interfere with viewing or operating the page's original content. When magnified, the portion of the page visible in the viewport can be significantly reduced. Mouse users frequently move the pointer to pan the magnified viewport and display another portion of the screen. However, almost the entire portion of the page visible in this restricted viewport may trigger the additional content, making it difficult for a user to pan without re-triggering the content. A keyboard means of dismissing the additional content provides a workaround.</p> + <p>Alternatively, low vision users who can only navigate via the keyboard do not want the small area of their magnified viewport cluttered with hover text. They need a keyboard method of dismissing something that is obscuring the current focal area.</p> + <p>Two methods may be used to satisfy this condition and prevent such interference:</p> + <ol> + <li>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.</li> + <li>Provide a mechanism to easily dismiss the additional content, such as by pressing Escape.</li> + </ol> + <p>For most triggers of relatively small size, it is desirable for both methods to be implemented. If the trigger is large, noticing the additional content may be of concern if it appears away from the trigger. In those cases, only the second method may be appropriate.</p> + <p>The success criterion allows for input error messages to persist as there are cases that require attention, explicit confirmation or remedial action.</p> + </section> + <section> + <h3>Hoverable</h3> + <p>The intent of this condition is to ensure that additional content which may appear on hover of a target may also be hovered itself. Content which appears on hover can be difficult or impossible to perceive if a user is required to keep their mouse pointer over the trigger. When the added content is large, magnified views may mean that the user needs to scroll or pan to completely view it, which is impossible unless the user is able to move their pointer off the trigger without the additional content disappearing.</p> + <p>Another common situation is when large pointers have been selected via platform settings or assistive technology. Here, the pointer can obscure a significant area of the additional content. A technique to view the content fully in both situations is to move the mouse pointer directly from the trigger onto the new content. This capability also offers significant advantages for users who utilize screen reader feedback on mouse interactions. This condition generally implies that the additional content overlaps or is positioned adjacent to the target.</p> + </section> + <section> + <h3>Persistent</h3> + <p>The intent of this condition is to ensure users have adequate time to perceive the additional content after it becomes visible. Users with disabilities may require more time for many reasons, such as to change magnification, move the pointer, or simply to bring the new content into their visual field. Once it appears, the content should remain visible until:</p> + <ul> + <li>The user removes hover or focus from the trigger and the additional content, consistent with the typical user experience;</li> + <li>The user dismisses the additional content via the mechanism provided to satisfy the Dismissible condition; or</li> + <li>The information conveyed by the additional content becomes invalid, such as a 'busy' message that is no longer valid.</li> + </ul> + </section> + <section> + <h3>Additional Notes</h3> + <ul> + <li>This criterion does not attempt to solve such issues when the appearance of the additional content is completely controlled by the user agent. A prominent example is the common behavior of browsers to display the <code>title</code> attribute in HTML as a small tooltip.</li> + <li>Modal dialogs are out of scope for this criterion because they must take keyboard focus and thus should not appear on hover or focus. Refer to <a href="https://www.w3.org/TR/WCAG21/#on-focus">Success Criterion 3.2.1, On Focus</a>.</li> + <li>Content which can be triggered via pointer hover should also be able to be triggered by keyboard focus. Refer to <a href="https://www.w3.org/TR/WCAG21/#keyboard">Success Criterion 2.1.1, Keyboard</a>.</li> + </ul> + </section> + </section> + + <section id="benefits"> + <h2>Benefits</h2> + <ul> + <li>Users with low vision who view content under magnification will be better able to view content on hover or focus without reducing their desired magnification.</li> + <li>Users who increase the size of mouse cursors via platform settings or assistive technology will be able to employ a technique to view obscured content on hover.</li> + <li>Users with low vision or cognitive disabilities will have adequate time to perceive additional content appearing on hover or focus and to view the trigger content with less distraction.</li> + <li>users with low pointer accuracy will be able to more easily dismiss unintentionally-triggered additional content</li> + </ul> + </section> + + <section id="examples"> + <h2>Examples</h2> + + <section class="example"> + <h3>Example 1: Dismissible Tooltip</h3> + <figure id="figure-mouse-tooltip-below"> + <img src="img/button-pointer-tooltip.png" alt="Screenshot of a button with a mouse pointer over it, and a tooltip displayed below the button" /> + <img src="img/button-pointer.png" alt="Screenshot of a button with a mouse pointer over it, and no tooltip" /> + <figcaption>A tooltip is displayed below a LVTF button on hover so as not to obscure the button itself. It does however obscure content below the button (the next red button, called ~comment-zoom-content). To meet the Dismissible requirement, a user can press the Escape key to clear the tooltip without moving the mouse, as demonstrated in the second image.</figcaption> + </figure> + <figure id="figure-focused-button-no-tooltip"> + <img src="img/button-focus-indicator.png" alt="Screenshot of a button with a focus indicator on it, and no tooltip" /> + <figcaption>The button's tooltip also appears on focus and can be removed with the Escape key. The screen shot shows the same LVTF button with focus, but the tooltip has been dismissed and is no longer visible.</figcaption> + </figure> + </section> + + <section class="example"> + <h3>Example 2: Hoverable Tooltip</h3> + <figure id="figure-large-pointer-tooltip"> + <img src="img/button-pointer-on-tooltip.png" alt="Screenshot of a button with a large mouse pointer over it, and a tooltip displayed below the button which is obscured by the large pointer" /> + <img src="img/button-pointer-below-tooltip.png" alt="Screenshot of a button with a tooltip below it, and a large mouse pointer at the bottom of the tooltip" /> + <figcaption>A button's tooltip is displayed directly below it on mouse hover which can easily be obscured by a large pointer. The tooltip itself is able to be hovered so the mouse pointer can be moved down to its bottom edge in order to view the tooltip text.</figcaption> + </figure> + </section> + + </section> + <section id="resources"> + <h2>Resources</h2> + <ul> + <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/">Tooltip design described in WAI-ARIA Authoring Practices</a></li> + </ul> + </section> + + <section id="techniques"> + <h2>Techniques</h2> + <section id="sufficient"> + <h3>Sufficient</h3> + <ul> + <li><a href="../../techniques/client-side-script/SCR39.html">Making content on focus or hover hoverable, dismissible, and persistent</a></li> + <li>ARIA: Using role="tooltip" (Potential future technique)</li> + <li>CSS: Using hover and focus pseudo classes (Potential future technique)</li> + </ul> + </section> + <!--<section id="advisory"> <h2>Advisory</h2> </section>--> - <section id="failure"> - <h2>Failure</h2> - <ul> - <li><a href="../../techniques/failures/F95.html">F95</a></li> - <li>Failure to make content dismissable without moving pointer hover or keyboard focus (Potential future technique)</li> - <li>Failure to meet by content on hover or focus not remaining visible until dismissed or invalid (Potential future technique)</li> - </ul> - </section> - </section> - </body> -</html> + <section id="failure"> + <h2>Failure</h2> + <ul> + <li><a href="../../techniques/failures/F95.html">F95</a></li> + <li>Failure to make content dismissible without moving pointer hover or keyboard focus (Potential future technique)</li> + <li>Failure to meet by content on hover or focus not remaining visible until dismissed or invalid (Potential future technique)</li> + </ul> + </section> + </section> + </body> + +</html> \ No newline at end of file From b65fb37df0d4317a158c4392567d73fca3fb92b3 Mon Sep 17 00:00:00 2001 From: Eric Eggert <mail@yatil.net> Date: Tue, 11 Mar 2025 09:40:52 +0100 Subject: [PATCH 2/2] Change wcag.json, too --- guidelines/wcag.json | 3179 +++++++++++++++++++++--------------------- 1 file changed, 1589 insertions(+), 1590 deletions(-) diff --git a/guidelines/wcag.json b/guidelines/wcag.json index 62e9866614..b62cf10258 100644 --- a/guidelines/wcag.json +++ b/guidelines/wcag.json @@ -1,7 +1,7 @@ { "principles": [ - + { "id": "WCAG2:perceivable", "num": "1", @@ -9,7 +9,7 @@ "handle": "Perceivable", "title": "Information and user interface components must be presentable to users in ways they can perceive.", "guidelines": [ - + { "id": "WCAG2:text-alternatives", "alt_id": ["text-equiv"], @@ -18,7 +18,7 @@ "handle": "Text Alternatives", "title": "Provide text alternatives for any non-text content so that it can be changed into other forms people need, such as large print, braille, speech, symbols or simpler language.", "successcriteria": [ - + { "id": "WCAG2:non-text-content", "alt_id": ["text-equiv-all"], @@ -27,11 +27,11 @@ "level": "A", "handle": "Non-text Content", "title": "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below.", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Controls, Input", "text": "If non-text content is a control or accepts user input, then it has a name that describes its purpose. (Refer to Success Criterion 4.1.2 for additional requirements for controls and content that accepts user input.)" @@ -58,20 +58,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If a short description can serve the same purpose and present the same information as the non-text content:", "techniques": [ - + { "id": "TECH:G94" , - "title": + "title": "Providing short text alternative for non-text content that serves the same purpose and presents the same information as the non-text content" } , @@ -79,7 +79,7 @@ "id": "TECH:ARIA6" , - "title": + "title": "Using aria-label to provide labels for objects" } , @@ -87,7 +87,7 @@ "id": "TECH:ARIA10" , - "title": + "title": "Using aria-labelledby to provide a text alternative for non-text content" } , @@ -95,7 +95,7 @@ "id": "TECH:G196" , - "title": + "title": "Using a text alternative on one item within a group of images that describes all items in the group" } , @@ -103,7 +103,7 @@ "id": "TECH:H2" , - "title": + "title": "Combining adjacent image and text links for the same resource" } , @@ -111,7 +111,7 @@ "id": "TECH:H37" , - "title": + "title": "Using alt attributes on img elements" } , @@ -119,7 +119,7 @@ "id": "TECH:H53" , - "title": + "title": "Using the body of the object element" } , @@ -127,7 +127,7 @@ "id": "TECH:H86" , - "title": + "title": "Providing text alternatives for emojis, emoticons, ASCII art, and leetspeak" } , @@ -135,19 +135,19 @@ "id": "TECH:PDF1" , - "title": + "title": "Applying text alternatives to images with the Alt entry in PDF documents" } - + ]}, {"title": "Situation B: If a short description can not serve the same purpose and present the same information as the non-text content (e.g., a chart or diagram):", "techniques": [ - + { "id": "TECH:G95" , - "title": + "title": "Providing short text alternatives that provide a brief description of the non-text content" } , @@ -155,7 +155,7 @@ "id": "TECH:ARIA6" , - "title": + "title": "Using aria-label to provide labels for objects" } , @@ -163,7 +163,7 @@ "id": "TECH:ARIA10" , - "title": + "title": "Using aria-labelledby to provide a text alternative for non-text content" } , @@ -171,7 +171,7 @@ "id": "TECH:G196" , - "title": + "title": "Using a text alternative on one item within a group of images that describes all items in the group" } , @@ -179,7 +179,7 @@ "id": "TECH:H2" , - "title": + "title": "Combining adjacent image and text links for the same resource" } , @@ -187,7 +187,7 @@ "id": "TECH:H35" , - "title": + "title": "" } , @@ -195,7 +195,7 @@ "id": "TECH:H37" , - "title": + "title": "Using alt attributes on img elements" } , @@ -203,7 +203,7 @@ "id": "TECH:H53" , - "title": + "title": "Using the body of the object element" } , @@ -211,7 +211,7 @@ "id": "TECH:H86" , - "title": + "title": "Providing text alternatives for emojis, emoticons, ASCII art, and leetspeak" } , @@ -219,7 +219,7 @@ "id": "TECH:PDF1" , - "title": + "title": "Applying text alternatives to images with the Alt entry in PDF documents" } , @@ -227,7 +227,7 @@ "id": "TECH:ARIA15" , - "title": + "title": "Using aria-describedby to provide descriptions of images" } , @@ -235,7 +235,7 @@ "id": "TECH:G73" , - "title": + "title": "Providing a long description in another location with a link to it that is immediately adjacent to the non-text content" } , @@ -243,7 +243,7 @@ "id": "TECH:G74" , - "title": + "title": "Providing a long description in text near the non-text content, with a reference to the location of the long description in the short description" } , @@ -251,7 +251,7 @@ "id": "TECH:G92" , - "title": + "title": "Providing long description for non-text content that serves the same purpose and presents the same information" } , @@ -259,19 +259,19 @@ "id": "TECH:H53" , - "title": + "title": "Using the body of the object element" } - + ]}, {"title": "Situation C: If non-text content is a control or accepts user input:", "techniques": [ - + { "id": "TECH:G82" , - "title": + "title": "Providing a text alternative that identifies the purpose of the non-text content" } , @@ -279,7 +279,7 @@ "id": "TECH:ARIA6" , - "title": + "title": "Using aria-label to provide labels for objects" } , @@ -287,7 +287,7 @@ "id": "TECH:ARIA9" , - "title": + "title": "Using aria-labelledby to concatenate a label from several text nodes" } , @@ -295,7 +295,7 @@ "id": "TECH:H24" , - "title": + "title": "Providing text alternatives for the area elements of image maps" } , @@ -303,7 +303,7 @@ "id": "TECH:H30" , - "title": + "title": "Providing link text that describes the purpose of a link for anchor elements" } , @@ -311,7 +311,7 @@ "id": "TECH:H36" , - "title": + "title": "Using alt attributes on images used as submit buttons" } , @@ -319,7 +319,7 @@ "id": "TECH:H44" , - "title": + "title": "Using label elements to associate text labels with form controls" } , @@ -327,19 +327,19 @@ "id": "TECH:H65" , - "title": + "title": "Using the title attribute to identify form controls when the label element cannot be used" } - + ]}, {"title": "Situation D: If non-text content is time-based media (including live video-only and live audio-only); a test or exercise that would be invalid if presented in text; or primarily intended to create a specific sensory experience:", "techniques": [ - + { "id": "TECH:future-non-text-content-1" , - "title": + "title": "Providing a descriptive label using one of the following :" } , @@ -347,7 +347,7 @@ "id": "TECH:G68" , - "title": + "title": "Providing a short text alternative that describes the purpose of live audio-only and live video-only content" } , @@ -355,7 +355,7 @@ "id": "TECH:G100" , - "title": + "title": "Providing a short text alternative which is the accepted name or a descriptive name of the non-text content" } , @@ -363,7 +363,7 @@ "id": "TECH:ARIA6" , - "title": + "title": "Using aria-label to provide labels for objects" } , @@ -371,7 +371,7 @@ "id": "TECH:ARIA10" , - "title": + "title": "Using aria-labelledby to provide a text alternative for non-text content" } , @@ -379,7 +379,7 @@ "id": "TECH:G196" , - "title": + "title": "Using a text alternative on one item within a group of images that describes all items in the group" } , @@ -387,7 +387,7 @@ "id": "TECH:H2" , - "title": + "title": "Combining adjacent image and text links for the same resource" } , @@ -395,7 +395,7 @@ "id": "TECH:H37" , - "title": + "title": "Using alt attributes on img elements" } , @@ -403,7 +403,7 @@ "id": "TECH:H53" , - "title": + "title": "Using the body of the object element" } , @@ -411,7 +411,7 @@ "id": "TECH:H86" , - "title": + "title": "Providing text alternatives for emojis, emoticons, ASCII art, and leetspeak" } , @@ -419,21 +419,21 @@ "id": "TECH:PDF1" , - "title": + "title": "Applying text alternatives to images with the Alt entry in PDF documents" } - + ]}, {"title": "Situation E: If non-text content is a CAPTCHA:", "techniques": [ - + {"and": [ - + { "id": "TECH:G143" , - "title": + "title": "Providing a text alternative that describes the purpose of the CAPTCHA" } , @@ -441,21 +441,21 @@ "id": "TECH:G144" , - "title": + "title": "Ensuring that the web page contains another CAPTCHA serving the same purpose using a different modality" } - + ]} - + ]}, {"title": "Situation F: If the non-text content should be ignored by assistive technology:", "techniques": [ - + { "id": "TECH:future-non-text-content-1" , - "title": + "title": "Implementing or marking the non-text content so that it will be ignored by assistive technology using one of the following :" } , @@ -463,7 +463,7 @@ "id": "TECH:C9" , - "title": + "title": "Using CSS to include decorative images" } , @@ -471,7 +471,7 @@ "id": "TECH:H67" , - "title": + "title": "Using null alt text and no title attribute on img elements for images that assistive technology should ignore" } , @@ -479,24 +479,24 @@ "id": "TECH:PDF4" , - "title": + "title": "Hiding decorative images with the Artifact tag in PDF documents" } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F3" , - "title": + "title": "Failure of Success Criterion 1.1.1 due to using CSS to include images that convey important information" } , @@ -504,7 +504,7 @@ "id": "TECH:F13" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 1.4.1 due to having a text alternative that does not include information that is conveyed by color differences in the image" } , @@ -512,7 +512,7 @@ "id": "TECH:F20" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 4.1.2 due to not updating text alternatives when changes to non-text content occur" } , @@ -520,7 +520,7 @@ "id": "TECH:F30" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives (e.g., filenames or placeholder text)" } , @@ -528,7 +528,7 @@ "id": "TECH:F38" , - "title": + "title": "Failure of Success Criterion 1.1.1 due to not marking up decorative images in HTML in a way that allows assistive technology to ignore them" } , @@ -536,7 +536,7 @@ "id": "TECH:F39" , - "title": + "title": "Failure of Success Criterion 1.1.1 due to providing a text alternative that is not null (e.g., alt=\"spacer\" or alt=\"image\") for images that should be ignored by assistive technology" } , @@ -544,7 +544,7 @@ "id": "TECH:F65" , - "title": + "title": "Failure of Success Criterion 1.1.1 due to omitting the alt attribute or text alternative on img elements, area elements, and input elements of type \"image\"" } , @@ -552,7 +552,7 @@ "id": "TECH:F67" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 1.2.1 due to providing long descriptions for non-text content that does not serve the same purpose or does not present the same information" } , @@ -560,7 +560,7 @@ "id": "TECH:F71" , - "title": + "title": "Failure of Success Criterion 1.1.1 due to using text look-alikes to represent text without providing a text alternative" } , @@ -568,10 +568,10 @@ "id": "TECH:F72" , - "title": + "title": "Failure of Success Criterion 1.1.1 due to using ASCII art without providing a text alternative" } - + ]}] } ], @@ -585,7 +585,7 @@ "handle": "Time-based Media", "title": "Provide alternatives for time-based media.", "successcriteria": [ - + { "id": "WCAG2:audio-only-and-video-only-prerecorded", "alt_id": ["media-equiv-av-only-alt"], @@ -594,11 +594,11 @@ "level": "A", "handle": "Audio-only and Video-only (Prerecorded)", "title": "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:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Prerecorded Audio-only", "text": "An alternative for time-based media is provided that presents equivalent information for prerecorded audio-only content." @@ -609,32 +609,32 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If the content is prerecorded audio-only:", "techniques": [ - + { "id": "TECH:G158" , - "title": + "title": "Providing an alternative for time-based media for audio-only content" } - + ]}, {"title": "Situation B: If the content is prerecorded video-only:", "techniques": [ - + { "id": "TECH:G159" , - "title": + "title": "Providing an alternative for time-based media for video-only content" } , @@ -642,32 +642,32 @@ "id": "TECH:G166" , - "title": + "title": "Providing audio that describes the important video content and describing it as such" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:H96" , - "title": + "title": "Using the track element to provide audio descriptions" } - + ]}, {"failure": [ - + { "id": "TECH:F30" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 1.2.1 due to using text alternatives that are not alternatives (e.g., filenames or placeholder text)" } , @@ -675,10 +675,10 @@ "id": "TECH:F67" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 1.2.1 due to providing long descriptions for non-text content that does not serve the same purpose or does not present the same information" } - + ]}] }, { @@ -689,15 +689,15 @@ "level": "A", "handle": "Captions (Prerecorded)", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G93" , - "title": + "title": "Providing open (always visible) captions" } , @@ -705,7 +705,7 @@ "id": "TECH:G87" , - "title": + "title": "Providing closed captions" } , @@ -713,16 +713,16 @@ "id": "TECH:G87" , - "title": + "title": "Providing closed captions" , "using": [ - + { "id": "TECH:SM11" , - "title": + "title": "Providing captions through synchronized text streams in SMIL 1.0" } , @@ -730,7 +730,7 @@ "id": "TECH:SM12" , - "title": + "title": "Providing captions through synchronized text streams in SMIL 2.0" } , @@ -738,25 +738,25 @@ "id": "TECH:H95" , - "title": + "title": "Using the track element to provide captions" } - + ] - + } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F8" , - "title": + "title": "Failure of Success Criterion 1.2.2 due to captions omitting some dialogue or important sound effects" } , @@ -764,7 +764,7 @@ "id": "TECH:F75" , - "title": + "title": "Failure of Success Criterion 1.2.2 by providing synchronized media without captions when the synchronized media presents more information than is presented on the page" } , @@ -772,10 +772,10 @@ "id": "TECH:F74" , - "title": + "title": "Failure of Success Criterion 1.2.2 and 1.2.8 due to not labeling a synchronized media alternative to text as an alternative" } - + ]}] }, { @@ -786,57 +786,57 @@ "level": "A", "handle": "Audio Description or Media Alternative (Prerecorded)", "title": "An alternative for time-based media or audio description of the prerecorded video content is provided for synchronized media, except when the media is a media alternative for text and is clearly labeled as such.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G69" , - "title": + "title": "Providing an alternative for time based media" , "using": [ - + { "id": "TECH:G58" , - "title": + "title": "Placing a link to the alternative for time-based media immediately next to the non-text content" } - + ] - + } , { "id": "TECH:future-audio-description-or-media-alternative-prerecorded-1" , - "title": + "title": "Linking to the alternative for time-based media using one of the following techniques" , "using": [ - + { "id": "TECH:H53" , - "title": + "title": "Using the body of the object element" } - + ] - + } , { "id": "TECH:G78" , - "title": + "title": "Providing a second, user-selectable, audio track that includes audio descriptions" } , @@ -844,16 +844,16 @@ "id": "TECH:G173" , - "title": + "title": "Providing a version of a movie with audio descriptions" , "using": [ - + { "id": "TECH:SM6" , - "title": + "title": "Providing audio description in SMIL 1.0" } , @@ -861,7 +861,7 @@ "id": "TECH:SM7" , - "title": + "title": "Providing audio description in SMIL 2.0" } , @@ -869,28 +869,28 @@ "id": "TECH:future-audio-description-or-media-alternative-prerecorded-1" , - "title": + "title": "Using any player that supports audio and video" } - + ] - + } , { "id": "TECH:G8" , - "title": + "title": "Providing a movie with extended audio descriptions" , "using": [ - + { "id": "TECH:SM1" , - "title": + "title": "Adding extended audio description in SMIL 1.0" } , @@ -898,7 +898,7 @@ "id": "TECH:SM2" , - "title": + "title": "Adding extended audio description in SMIL 2.0" } , @@ -906,36 +906,36 @@ "id": "TECH:future-audio-description-or-media-alternative-prerecorded-1" , - "title": + "title": "Using any player that supports audio and video" } - + ] - + } , { "id": "TECH:G203" , - "title": + "title": "Using a static text alternative to describe a talking head video" } - + ]}, {"advisory": [ - + { "id": "TECH:H96" , - "title": + "title": "Using the track element to provide audio descriptions" } - + ]}, {"failure": [ - + ]}] }, { @@ -946,17 +946,17 @@ "level": "AA", "handle": "Captions (Live)", "title": "Captions are provided for all live audio content in synchronized media.", - + "techniques": [ {"sufficient": [ - + {"and": [ - + { "id": "TECH:G9" , - "title": + "title": "Creating captions for live synchronized media" } , @@ -964,19 +964,19 @@ "id": "TECH:G93" , - "title": + "title": "Providing open (always visible) captions" } - + ]} , {"and": [ - + { "id": "TECH:G9" , - "title": + "title": "Creating captions for live synchronized media" } , @@ -984,28 +984,28 @@ "id": "TECH:G87" , - "title": + "title": "Providing closed captions" } - + ]} , {"and": [ - + { "id": "TECH:G9" , - "title": + "title": "Creating captions for live synchronized media" , "using": [ - + { "id": "TECH:SM11" , - "title": + "title": "Providing captions through synchronized text streams in SMIL 1.0" } , @@ -1013,28 +1013,28 @@ "id": "TECH:SM12" , - "title": + "title": "Providing captions through synchronized text streams in SMIL 2.0" } - + ] - + } , { "id": "TECH:G87" , - "title": + "title": "Providing closed captions" , "using": [ - + { "id": "TECH:SM11" , - "title": + "title": "Providing captions through synchronized text streams in SMIL 1.0" } , @@ -1042,22 +1042,22 @@ "id": "TECH:SM12" , - "title": + "title": "Providing captions through synchronized text streams in SMIL 2.0" } - + ] - + } - + ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -1068,15 +1068,15 @@ "level": "AA", "handle": "Audio Description (Prerecorded)", "title": "Audio description is provided for all prerecorded video content in synchronized media.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G78" , - "title": + "title": "Providing a second, user-selectable, audio track that includes audio descriptions" } , @@ -1084,16 +1084,16 @@ "id": "TECH:G173" , - "title": + "title": "Providing a version of a movie with audio descriptions" , "using": [ - + { "id": "TECH:SM6" , - "title": + "title": "Providing audio description in SMIL 1.0" } , @@ -1101,7 +1101,7 @@ "id": "TECH:SM7" , - "title": + "title": "Providing audio description in SMIL 2.0" } , @@ -1109,28 +1109,28 @@ "id": "TECH:future-audio-description-prerecorded-1" , - "title": + "title": "Using any player that supports audio and video" } - + ] - + } , { "id": "TECH:G8" , - "title": + "title": "Providing a movie with extended audio descriptions" , "using": [ - + { "id": "TECH:SM1" , - "title": + "title": "Adding extended audio description in SMIL 1.0" } , @@ -1138,7 +1138,7 @@ "id": "TECH:SM2" , - "title": + "title": "Adding extended audio description in SMIL 2.0" } , @@ -1146,36 +1146,36 @@ "id": "TECH:future-audio-description-prerecorded-1" , - "title": + "title": "Using any player that supports audio and video" } - + ] - + } , { "id": "TECH:G203" , - "title": + "title": "Using a static text alternative to describe a talking head video" } - + ]}, {"advisory": [ - + { "id": "TECH:H96" , - "title": + "title": "Using the track element to provide audio descriptions" } - + ]}, {"failure": [ - + ]}] }, { @@ -1186,15 +1186,15 @@ "level": "AAA", "handle": "Sign Language (Prerecorded)", "title": "Sign language interpretation is provided for all prerecorded audio content in synchronized media.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G54" , - "title": + "title": "Including a sign language interpreter in the video stream" } , @@ -1202,16 +1202,16 @@ "id": "TECH:G81" , - "title": + "title": "Providing a synchronized video of the sign language interpreter that can be displayed in a different viewport or overlaid on the image by the player" , "using": [ - + { "id": "TECH:SM13" , - "title": + "title": "Providing sign language interpretation through synchronized video streams in SMIL 1.0" } , @@ -1219,20 +1219,20 @@ "id": "TECH:SM14" , - "title": + "title": "Providing sign language interpretation through synchronized video streams in SMIL 2.0" } - + ] - + } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -1243,24 +1243,24 @@ "level": "AAA", "handle": "Extended Audio Description (Prerecorded)", "title": "Where pauses in foreground audio are insufficient to allow audio descriptions to convey the sense of the video, extended audio description is provided for all prerecorded video content in synchronized media.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G8" , - "title": + "title": "Providing a movie with extended audio descriptions" , "using": [ - + { "id": "TECH:SM1" , - "title": + "title": "Adding extended audio description in SMIL 1.0" } , @@ -1268,7 +1268,7 @@ "id": "TECH:SM2" , - "title": + "title": "Adding extended audio description in SMIL 2.0" } , @@ -1276,28 +1276,28 @@ "id": "TECH:future-extended-audio-description-prerecorded-1" , - "title": + "title": "Using any player that supports audio and video" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:H96" , - "title": + "title": "Using the track element to provide audio descriptions" } - + ]}, {"failure": [ - + ]}] }, { @@ -1308,86 +1308,86 @@ "level": "AAA", "handle": "Media Alternative (Prerecorded)", "title": "An alternative for time-based media is provided for all prerecorded synchronized media and for all prerecorded video-only media.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If the content is prerecorded synchronized media:", "techniques": [ - + { "id": "TECH:G69" , - "title": + "title": "Providing an alternative for time based media" , "using": [ - + { "id": "TECH:G58" , - "title": + "title": "Placing a link to the alternative for time-based media immediately next to the non-text content" } - + ] - + } , { "id": "TECH:future-media-alternative-prerecorded-1" , - "title": + "title": "Linking to the alternative for time-based media using one of the following techniques" , "using": [ - + { "id": "TECH:H53" , - "title": + "title": "Using the body of the object element" } - + ] - + } - + ]}, {"title": "Situation B: If the content is prerecorded video-only:", "techniques": [ - + { "id": "TECH:G159" , - "title": + "title": "Providing an alternative for time-based media for video-only content" } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F74" , - "title": + "title": "Failure of Success Criterion 1.2.2 and 1.2.8 due to not labeling a synchronized media alternative to text as an alternative" } - + ]}] }, { @@ -1398,15 +1398,15 @@ "level": "AAA", "handle": "Audio-only (Live)", "title": "An alternative for time-based media that presents equivalent information for live audio-only content is provided.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G151" , - "title": + "title": "Providing a link to a text transcript of a prepared statement or script if the script is followed" } , @@ -1414,7 +1414,7 @@ "id": "TECH:G150" , - "title": + "title": "Providing text based alternatives for live audio-only content" } , @@ -1422,16 +1422,16 @@ "id": "TECH:G157" , - "title": + "title": "Incorporating a live audio captioning service into a web page" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] } ], @@ -1445,7 +1445,7 @@ "handle": "Adaptable", "title": "Create content that can be presented in different ways (for example simpler layout) without losing information or structure.", "successcriteria": [ - + { "id": "WCAG2:info-and-relationships", "alt_id": ["content-structure-separation-programmatic"], @@ -1454,20 +1454,20 @@ "level": "A", "handle": "Info and Relationships", "title": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: The technology provides semantic structure to make information and relationships conveyed through presentation programmatically determinable:", "techniques": [ - + { "id": "TECH:ARIA11" , - "title": + "title": "Using ARIA landmarks to identify regions of a page" } , @@ -1475,7 +1475,7 @@ "id": "TECH:H101" , - "title": + "title": "Using semantic HTML elements to identify regions of a page" } , @@ -1483,7 +1483,7 @@ "id": "TECH:ARIA12" , - "title": + "title": "Using role=heading to identify headings" } , @@ -1491,7 +1491,7 @@ "id": "TECH:ARIA13" , - "title": + "title": "Using aria-labelledby to name regions and landmarks" } , @@ -1499,7 +1499,7 @@ "id": "TECH:ARIA16" , - "title": + "title": "Using aria-labelledby to provide a name for user interface controls" } , @@ -1507,7 +1507,7 @@ "id": "TECH:ARIA17" , - "title": + "title": "Using grouping roles to identify related form controls" } , @@ -1515,17 +1515,17 @@ "id": "TECH:ARIA20" , - "title": + "title": "Using the region role to identify a region of the page" } , {"and": [ - + { "id": "TECH:G115" , - "title": + "title": "Using semantic elements to mark up structure" } , @@ -1533,17 +1533,17 @@ "id": "TECH:H49" , - "title": + "title": "Using semantic markup to mark emphasized or special text" } - + ]} , { "id": "TECH:G117" , - "title": + "title": "Using text to convey information that is conveyed by variations in presentation of text" } , @@ -1551,7 +1551,7 @@ "id": "TECH:G140" , - "title": + "title": "Separating information and structure from presentation to enable different presentations" } , @@ -1559,7 +1559,7 @@ "id": "TECH:ARIA24" , - "title": + "title": "Semantically identifying a font icon with role=\"img\"" } , @@ -1567,16 +1567,16 @@ "id": "TECH:future-info-and-relationships-1" , - "title": + "title": "Making information and relationships conveyed through presentation programmatically determinable using the following techniques:" , "using": [ - + { "id": "TECH:G138" , - "title": + "title": "Using semantic markup whenever color cues are used" } , @@ -1584,7 +1584,7 @@ "id": "TECH:H51" , - "title": + "title": "Using table markup to present tabular information" } , @@ -1592,7 +1592,7 @@ "id": "TECH:PDF6" , - "title": + "title": "Using table elements for table markup in PDF Documents" } , @@ -1600,7 +1600,7 @@ "id": "TECH:PDF20" , - "title": + "title": "Using Adobe Acrobat Pro's Table Editor to repair mistagged tables" } , @@ -1608,7 +1608,7 @@ "id": "TECH:H39" , - "title": + "title": "Using caption elements to associate data table captions with data tables" } , @@ -1616,7 +1616,7 @@ "id": "TECH:H63" , - "title": + "title": "Using the scope attribute to associate header cells and data cells in data tables" } , @@ -1624,7 +1624,7 @@ "id": "TECH:H43" , - "title": + "title": "Using id and headers attributes to associate data cells with header cells in data tables" } , @@ -1632,7 +1632,7 @@ "id": "TECH:H44" , - "title": + "title": "Using label elements to associate text labels with form controls" } , @@ -1640,7 +1640,7 @@ "id": "TECH:H65" , - "title": + "title": "Using the title attribute to identify form controls when the label element cannot be used" } , @@ -1648,7 +1648,7 @@ "id": "TECH:PDF10" , - "title": + "title": "Providing labels for interactive form controls in PDF documents" } , @@ -1656,7 +1656,7 @@ "id": "TECH:PDF12" , - "title": + "title": "Providing name, role, value information for form fields in PDF documents" } , @@ -1664,7 +1664,7 @@ "id": "TECH:H71" , - "title": + "title": "Providing a description for groups of form controls using fieldset and legend elements" } , @@ -1672,7 +1672,7 @@ "id": "TECH:H85" , - "title": + "title": "Using optgroup to group option elements inside a select" } , @@ -1680,7 +1680,7 @@ "id": "TECH:H48" , - "title": + "title": "Using ol, ul and dl for lists or groups of links" } , @@ -1688,7 +1688,7 @@ "id": "TECH:H42" , - "title": + "title": "Using h1-h6 to identify headings" } , @@ -1696,7 +1696,7 @@ "id": "TECH:PDF9" , - "title": + "title": "Providing headings by marking content with heading tags in PDF documents" } , @@ -1704,7 +1704,7 @@ "id": "TECH:SCR21" , - "title": + "title": "Using functions of the Document Object Model (DOM) to add content to a page" } , @@ -1712,7 +1712,7 @@ "id": "TECH:PDF11" , - "title": + "title": "Providing links and link text using the Link annotation and the /Link structure element in PDF documents" } , @@ -1720,7 +1720,7 @@ "id": "TECH:PDF17" , - "title": + "title": "Specifying consistent page numbering for PDF documents" } , @@ -1728,7 +1728,7 @@ "id": "TECH:PDF21" , - "title": + "title": "Using List tags for lists in PDF documents" } , @@ -1736,23 +1736,23 @@ "id": "TECH:H97" , - "title": + "title": "Grouping related links using the nav element" } - + ] - + } - + ]}, {"title": "Situation B: The technology in use does NOT provide the semantic structure to make the information and relationships conveyed through presentation programmatically determinable:", "techniques": [ - + { "id": "TECH:G117" , - "title": + "title": "Using text to convey information that is conveyed by variations in presentation of text" } , @@ -1760,16 +1760,16 @@ "id": "TECH:future-info-and-relationships-1" , - "title": + "title": "Making information and relationships conveyed through presentation programmatically determinable or available in text using the following techniques:" , "using": [ - + { "id": "TECH:T1" , - "title": + "title": "Using standard text formatting conventions for paragraphs" } , @@ -1777,7 +1777,7 @@ "id": "TECH:T2" , - "title": + "title": "Using standard text formatting conventions for lists" } , @@ -1785,25 +1785,25 @@ "id": "TECH:T3" , - "title": + "title": "Using standard text formatting conventions for headings" } - + ] - + } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:C22" , - "title": + "title": "Using CSS to control visual presentation of text" } , @@ -1811,7 +1811,7 @@ "id": "TECH:G162" , - "title": + "title": "Positioning labels to maximize predictability of relationships" } , @@ -1819,7 +1819,7 @@ "id": "TECH:ARIA1" , - "title": + "title": "Using the aria-describedby property to provide a descriptive label for user interface controls" } , @@ -1827,7 +1827,7 @@ "id": "TECH:ARIA2" , - "title": + "title": "Identifying a required field with the aria-required property" } , @@ -1835,18 +1835,18 @@ "id": "TECH:G141" , - "title": + "title": "Organizing a page using headings" } - + ]}, {"failure": [ - + { "id": "TECH:F2" , - "title": + "title": "Failure of Success Criterion 1.3.1 due to using changes in text presentation to convey information without using the appropriate markup or text" } , @@ -1854,7 +1854,7 @@ "id": "TECH:F33" , - "title": + "title": "Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to create multiple columns in plain text content" } , @@ -1862,7 +1862,7 @@ "id": "TECH:F34" , - "title": + "title": "Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to format tables in plain text content" } , @@ -1870,7 +1870,7 @@ "id": "TECH:F42" , - "title": + "title": "Failure of Success Criteria 1.3.1, 2.1.1, 2.1.3, or 4.1.2 when emulating links" } , @@ -1878,7 +1878,7 @@ "id": "TECH:F43" , - "title": + "title": "Failure of Success Criterion 1.3.1 due to using structural markup in a way that does not represent relationships in the content" } , @@ -1886,7 +1886,7 @@ "id": "TECH:F46" , - "title": + "title": "Failure of Success Criterion 1.3.1 due to using th elements, layout tables" } , @@ -1894,7 +1894,7 @@ "id": "TECH:F48" , - "title": + "title": "Failure of Success Criterion 1.3.1 due to using the pre element to markup tabular information" } , @@ -1902,7 +1902,7 @@ "id": "TECH:F87" , - "title": + "title": "Failure of Success Criterion 1.3.1 due to inserting non-decorative content by using ::before and ::after pseudo-elements and the 'content' property in CSS" } , @@ -1910,7 +1910,7 @@ "id": "TECH:F90" , - "title": + "title": "Failure of Success Criterion 1.3.1 for incorrectly associating table headers and content via the headers and id attributes" } , @@ -1918,7 +1918,7 @@ "id": "TECH:F91" , - "title": + "title": "Failure of Success Criterion 1.3.1 for not correctly marking up table headers" } , @@ -1926,10 +1926,10 @@ "id": "TECH:F92" , - "title": + "title": "Failure of Success Criterion 1.3.1 due to the use of role presentation on content which conveys semantic information" } - + ]}] }, { @@ -1940,15 +1940,15 @@ "level": "A", "handle": "Meaningful Sequence", "title": "When the sequence in which content is presented affects its meaning, a correct reading sequence can be programmatically determined.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G57" , - "title": + "title": "Ordering the content in a meaningful sequence" } , @@ -1956,16 +1956,16 @@ "id": "TECH:G57" , - "title": + "title": "Ordering the content in a meaningful sequence" , "using": [ - + { "id": "TECH:H34" , - "title": + "title": "Using a Unicode right-to-left mark (RLM) or left-to-right mark (LRM) to mix text direction inline" } , @@ -1973,7 +1973,7 @@ "id": "TECH:H56" , - "title": + "title": "Using the dir attribute on an inline element to resolve problems with nested directional runs" } , @@ -1981,7 +1981,7 @@ "id": "TECH:C6" , - "title": + "title": "Positioning content based on structural markup" } , @@ -1989,19 +1989,19 @@ "id": "TECH:C8" , - "title": + "title": "Using CSS letter-spacing to control spacing within a word" } - + ] - + } , { "id": "TECH:C27" , - "title": + "title": "Making the DOM order match the visual order" } , @@ -2009,21 +2009,21 @@ "id": "TECH:PDF3" , - "title": + "title": "Ensuring correct tab and reading order in PDF documents" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F34" , - "title": + "title": "Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to format tables in plain text content" } , @@ -2031,7 +2031,7 @@ "id": "TECH:F33" , - "title": + "title": "Failure of Success Criterion 1.3.1 and 1.3.2 due to using white space characters to create multiple columns in plain text content" } , @@ -2039,7 +2039,7 @@ "id": "TECH:F32" , - "title": + "title": "Failure of Success Criterion 1.3.2 due to using white space characters to control spacing within a word" } , @@ -2047,7 +2047,7 @@ "id": "TECH:F49" , - "title": + "title": "Failure of Success Criterion 1.3.2 due to using an HTML layout table that does not make sense when linearized" } , @@ -2055,10 +2055,10 @@ "id": "TECH:F1" , - "title": + "title": "Failure of Success Criterion 1.3.2 due to changing the meaning of content by positioning information with CSS" } - + ]}] }, { @@ -2069,29 +2069,29 @@ "level": "A", "handle": "Sensory Characteristics", "title": "Instructions provided for understanding and operating content do not rely solely on sensory characteristics of components such as shape, color, size, visual location, orientation, or sound.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G96" , - "title": + "title": "Providing textual identification of items that otherwise rely only on sensory information to be understood" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F14" , - "title": + "title": "Failure of Success Criterion 1.3.3 due to identifying content only by its shape or location" } , @@ -2099,10 +2099,10 @@ "id": "TECH:F26" , - "title": + "title": "Failure of Success Criterion 1.3.3 due to using a graphical symbol alone to convey information" } - + ]}] }, { @@ -2113,29 +2113,29 @@ "level": "AA", "handle": "Orientation", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G214" , - "title": + "title": "Using a control to allow access to content in different orientations which is otherwise restricted" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F97" , - "title": + "title": "Failure due to locking the orientation to landscape or portrait view" } , @@ -2143,10 +2143,10 @@ "id": "TECH:F100" , - "title": + "title": "Failure of Success Criterion 1.3.4 due to showing a message asking to reorient device" } - + ]}] }, { @@ -2157,32 +2157,32 @@ "level": "AA", "handle": "Identify Input Purpose", "title": "The purpose of each input field collecting information about the user can be programmatically determined when:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:H98" , - "title": + "title": "Using HTML 5.2 autocomplete attributes" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F107" , - "title": + "title": "Failure of Success Criterion 1.3.5 due to incorrect autocomplete attribute values" } - + ]}] }, { @@ -2193,15 +2193,15 @@ "level": "AAA", "handle": "Identify Purpose", "title": "In content implemented using markup languages, the purpose of user interface components, icons, and regions can be programmatically determined.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:future-identify-purpose-1" , - "title": + "title": "Programmatically indicating the purpose of icons, regions and user interface components" } , @@ -2209,7 +2209,7 @@ "id": "TECH:ARIA11" , - "title": + "title": "Using ARIA landmarks to identify regions of a page" } , @@ -2217,18 +2217,18 @@ "id": "TECH:future-identify-purpose-1" , - "title": + "title": "Using microdata to markup user interface components (future link)" } - + ]}, {"advisory": [ - + { "id": "TECH:future-identify-purpose-1" , - "title": + "title": "Enabling user agents to find the version of the content that best fits their needs" } , @@ -2236,7 +2236,7 @@ "id": "TECH:future-identify-purpose-1" , - "title": + "title": "Using semantics to identify important features (e.g., coga-simplification=\"simplest\")" } , @@ -2244,13 +2244,13 @@ "id": "TECH:future-identify-purpose-1" , - "title": + "title": "Using aria-invalid and aria-required" } - + ]}, {"failure": [ - + ]}] } ], @@ -2264,7 +2264,7 @@ "handle": "Distinguishable", "title": "Make it easier for users to see and hear content including separating foreground from background.", "successcriteria": [ - + { "id": "WCAG2:use-of-color", "alt_id": ["visual-audio-contrast-without-color"], @@ -2273,20 +2273,20 @@ "level": "A", "handle": "Use of Color", "title": "Color is not used as the only visual means of conveying information, indicating an action, prompting a response, or distinguishing a visual element.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If the color of particular words, backgrounds, or other content is used to indicate information:", "techniques": [ - + { "id": "TECH:G14" , - "title": + "title": "Ensuring that information conveyed by color differences is also available in text" } , @@ -2294,7 +2294,7 @@ "id": "TECH:G205" , - "title": + "title": "Including a text cue for colored form control labels" } , @@ -2302,7 +2302,7 @@ "id": "TECH:G182" , - "title": + "title": "Ensuring that additional visual cues are available when text color differences are used to convey information" } , @@ -2310,19 +2310,19 @@ "id": "TECH:G183" , - "title": + "title": "Using a contrast ratio of 3:1 with surrounding text and providing additional visual cues on hover for links or controls where color alone is used to identify them" } - + ]}, {"title": "Situation B: If color is used within an image to convey information:", "techniques": [ - + { "id": "TECH:G111" , - "title": + "title": "Using color and pattern" } , @@ -2330,32 +2330,32 @@ "id": "TECH:G14" , - "title": + "title": "Ensuring that information conveyed by color differences is also available in text" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:C15" , - "title": + "title": "Using CSS to change the presentation of a user interface component when it receives focus" } - + ]}, {"failure": [ - + { "id": "TECH:F13" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 1.4.1 due to having a text alternative that does not include information that is conveyed by color differences in the image" } , @@ -2363,7 +2363,7 @@ "id": "TECH:F73" , - "title": + "title": "Failure of Success Criterion 1.4.1 due to creating links that are not visually evident without color vision" } , @@ -2371,10 +2371,10 @@ "id": "TECH:F81" , - "title": + "title": "Failure of Success Criterion 1.4.1 due to identifying required or error fields using color differences only" } - + ]}] }, { @@ -2385,15 +2385,15 @@ "level": "A", "handle": "Audio Control", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G60" , - "title": + "title": "Playing a sound that turns off automatically within three seconds" } , @@ -2401,7 +2401,7 @@ "id": "TECH:G170" , - "title": + "title": "Providing a control near the beginning of the web page that turns off sounds that play automatically" } , @@ -2409,21 +2409,21 @@ "id": "TECH:G171" , - "title": + "title": "Playing sounds only on user request" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F23" , - "title": + "title": "Failure of 1.4.2 due to playing a sound longer than 3 seconds where there is no mechanism to turn it off" } , @@ -2431,10 +2431,10 @@ "id": "TECH:F93" , - "title": + "title": "Failure of Success Criterion 1.4.2 for absence of a way to pause or stop an HTML5 media element that autoplays" } - + ]}] }, { @@ -2445,11 +2445,11 @@ "level": "AA", "handle": "Contrast (Minimum)", "title": "The visual presentation of text and images of text has a contrast ratio of at least 4.5:1, except for the following:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Large Text", "text": "Large-scale text and images of large-scale text have a contrast ratio of at least 3:1;" @@ -2464,20 +2464,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: text is less than 18 point if not bold and less than 14 point if bold", "techniques": [ - + { "id": "TECH:G18" , - "title": + "title": "Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text" } , @@ -2485,7 +2485,7 @@ "id": "TECH:G148" , - "title": + "title": "Not specifying background color, not specifying text color, and not using technology features that change those defaults" } , @@ -2493,19 +2493,19 @@ "id": "TECH:G174" , - "title": + "title": "Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast" } - + ]}, {"title": "Situation B: text is at least 18 point if not bold and at least 14 point if bold", "techniques": [ - + { "id": "TECH:G145" , - "title": + "title": "Ensuring that a contrast ratio of at least 3:1 exists between text (and images of text) and background behind the text" } , @@ -2513,7 +2513,7 @@ "id": "TECH:G148" , - "title": + "title": "Not specifying background color, not specifying text color, and not using technology features that change those defaults" } , @@ -2521,32 +2521,32 @@ "id": "TECH:G174" , - "title": + "title": "Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:G156" , - "title": + "title": "Using a technology that has commonly-available user agents that can change the foreground and background of blocks of text" } - + ]}, {"failure": [ - + { "id": "TECH:F24" , - "title": + "title": "Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa" } , @@ -2554,10 +2554,10 @@ "id": "TECH:F83" , - "title": + "title": "Failure of Success Criterion 1.4.3 and 1.4.6 due to using background images that do not provide sufficient contrast with foreground text (or images of text)" } - + ]}] }, { @@ -2568,15 +2568,15 @@ "level": "AA", "handle": "Resize Text", "title": "Except for captions and images of text, text can be resized without assistive technology up to 200 percent without loss of content or functionality.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G142" , - "title": + "title": "Using a technology that has commonly-available user agents that support zoom" } , @@ -2584,16 +2584,16 @@ "id": "TECH:future-resize-text-1" , - "title": + "title": "Ensuring that text containers resize when the text resizes AND using measurements that are relative to other measurements in the content by using one or more of the following techniques:" , "using": [ - + { "id": "TECH:C28" , - "title": + "title": "Specifying the size of text containers using em units" } , @@ -2601,16 +2601,16 @@ "id": "TECH:future-resize-text-1" , - "title": + "title": "Techniques for relative measurements" , "using": [ - + { "id": "TECH:C12" , - "title": + "title": "Using percent for font sizes" } , @@ -2618,7 +2618,7 @@ "id": "TECH:C13" , - "title": + "title": "Using named font sizes" } , @@ -2626,28 +2626,28 @@ "id": "TECH:C14" , - "title": + "title": "Using em units for font sizes" } - + ] - + } , { "id": "TECH:future-resize-text-1" , - "title": + "title": "Techniques for text container resizing" , "using": [ - + { "id": "TECH:SCR34" , - "title": + "title": "Calculating size and position in a way that scales with text size" } , @@ -2655,23 +2655,23 @@ "id": "TECH:G146" , - "title": + "title": "Using liquid layout" } - + ] - + } - + ] - + } , { "id": "TECH:G178" , - "title": + "title": "Providing controls on the web page that allow users to incrementally change the size of all text on the page up to 200 percent" } , @@ -2679,18 +2679,18 @@ "id": "TECH:G179" , - "title": + "title": "Ensuring that there is no loss of content or functionality when the text resizes and text containers do not change their width" } - + ]}, {"advisory": [ - + { "id": "TECH:C17" , - "title": + "title": "Scaling form elements which contain text" } , @@ -2698,7 +2698,7 @@ "id": "TECH:C20" , - "title": + "title": "Using relative measurements to set column widths so that lines can average 80 characters or less when the browser is resized" } , @@ -2706,18 +2706,18 @@ "id": "TECH:C22" , - "title": + "title": "Using CSS to control visual presentation of text" } - + ]}, {"failure": [ - + { "id": "TECH:F69" , - "title": + "title": "Failure of Success Criterion 1.4.4 when resizing visually rendered text up to 200 percent causes the text, image or controls to be clipped, truncated or obscured" } , @@ -2725,7 +2725,7 @@ "id": "TECH:F80" , - "title": + "title": "Failure of Success Criterion 1.4.4 when text-based form controls do not resize when visually rendered text is resized up to 200%" } , @@ -2733,10 +2733,10 @@ "id": "TECH:F94" , - "title": + "title": "Failure of Success Criterion 1.4.4 due to incorrect use of viewport units to resize text" } - + ]}] }, { @@ -2747,11 +2747,11 @@ "level": "AA", "handle": "Images of Text", "title": "If the technologies being used can achieve the visual presentation, text is used to convey information rather than images of text except for the following:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Customizable", "text": "The image of text can be visually customized to the user's requirements;" @@ -2762,15 +2762,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C22" , - "title": + "title": "Using CSS to control visual presentation of text" } , @@ -2778,7 +2778,7 @@ "id": "TECH:C30" , - "title": + "title": "Using CSS to replace text with images of text and providing user interface controls to switch" } , @@ -2786,7 +2786,7 @@ "id": "TECH:G140" , - "title": + "title": "Separating information and structure from presentation to enable different presentations" } , @@ -2794,16 +2794,16 @@ "id": "TECH:PDF7" , - "title": + "title": "Performing OCR on a scanned PDF document to provide actual text" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -2814,11 +2814,11 @@ "level": "AAA", "handle": "Contrast (Enhanced)", "title": "The visual presentation of text and images of text has a contrast ratio of at least 7:1, except for the following:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Large Text", "text": "Large-scale text and images of large-scale text have a contrast ratio of at least 4.5:1;" @@ -2833,20 +2833,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: text is less than 18 point if not bold and less than 14 point if bold", "techniques": [ - + { "id": "TECH:G17" , - "title": + "title": "Ensuring that a contrast ratio of at least 7:1 exists between text (and images of text) and background behind the text" } , @@ -2854,7 +2854,7 @@ "id": "TECH:G148" , - "title": + "title": "Not specifying background color, not specifying text color, and not using technology features that change those defaults" } , @@ -2862,19 +2862,19 @@ "id": "TECH:G174" , - "title": + "title": "Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast" } - + ]}, {"title": "Situation B: text is as least 18 point if not bold and at least 14 point if bold", "techniques": [ - + { "id": "TECH:G18" , - "title": + "title": "Ensuring that a contrast ratio of at least 4.5:1 exists between text (and images of text) and background behind the text" } , @@ -2882,7 +2882,7 @@ "id": "TECH:G148" , - "title": + "title": "Not specifying background color, not specifying text color, and not using technology features that change those defaults" } , @@ -2890,32 +2890,32 @@ "id": "TECH:G174" , - "title": + "title": "Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:G156" , - "title": + "title": "Using a technology that has commonly-available user agents that can change the foreground and background of blocks of text" } - + ]}, {"failure": [ - + { "id": "TECH:F24" , - "title": + "title": "Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa" } , @@ -2923,10 +2923,10 @@ "id": "TECH:F83" , - "title": + "title": "Failure of Success Criterion 1.4.3 and 1.4.6 due to using background images that do not provide sufficient contrast with foreground text (or images of text)" } - + ]}] }, { @@ -2937,11 +2937,11 @@ "level": "AAA", "handle": "Low or No Background Audio", "title": "For prerecorded audio-only content that (1) contains primarily speech in the foreground, (2) is not an audio CAPTCHA or audio logo, and (3) is not vocalization intended to be primarily musical expression such as singing or rapping, at least one of the following is true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "No Background", "text": "The audio does not contain background sounds." @@ -2956,24 +2956,24 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G56" , - "title": + "title": "Mixing audio files so that non-speech sounds are at least 20 decibels lower than the speech audio content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -2984,21 +2984,21 @@ "level": "AAA", "handle": "Visual Presentation", "title": "For the visual presentation of blocks of text, a mechanism is available to achieve the following:", - + "techniques": [ {"sufficient": [ - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F24" , - "title": + "title": "Failure of Success Criterion 1.4.3, 1.4.6 and 1.4.8 due to specifying foreground colors without specifying background colors or vice versa" } , @@ -3006,10 +3006,10 @@ "id": "TECH:F88" , - "title": + "title": "Failure of Success Criterion 1.4.8 due to using text that is justified (aligned to both the left and the right margins)" } - + ]}] }, { @@ -3020,15 +3020,15 @@ "level": "AAA", "handle": "Images of Text (No Exception)", "title": "Images of text are only used for pure decoration or where a particular presentation of text is essential to the information being conveyed.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C22" , - "title": + "title": "Using CSS to control visual presentation of text" } , @@ -3036,7 +3036,7 @@ "id": "TECH:C30" , - "title": + "title": "Using CSS to replace text with images of text and providing user interface controls to switch" } , @@ -3044,7 +3044,7 @@ "id": "TECH:G140" , - "title": + "title": "Separating information and structure from presentation to enable different presentations" } , @@ -3052,18 +3052,18 @@ "id": "TECH:PDF7" , - "title": + "title": "Performing OCR on a scanned PDF document to provide actual text" } - + ]}, {"advisory": [ - + { "id": "TECH:C12" , - "title": + "title": "Using percent for font sizes" } , @@ -3071,7 +3071,7 @@ "id": "TECH:C13" , - "title": + "title": "Using named font sizes" } , @@ -3079,7 +3079,7 @@ "id": "TECH:C14" , - "title": + "title": "Using em units for font sizes" } , @@ -3087,7 +3087,7 @@ "id": "TECH:C8" , - "title": + "title": "Using CSS letter-spacing to control spacing within a word" } , @@ -3095,13 +3095,13 @@ "id": "TECH:C6" , - "title": + "title": "Positioning content based on structural markup" } - + ]}, {"failure": [ - + ]}] }, { @@ -3112,15 +3112,15 @@ "level": "AA", "handle": "Reflow", "title": "Content can be presented without loss of information or functionality, and without requiring scrolling in two dimensions for:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C32" , - "title": + "title": "Using media queries and grid CSS to reflow columns" } , @@ -3128,7 +3128,7 @@ "id": "TECH:C31" , - "title": + "title": "Using CSS Flexbox to reflow content" } , @@ -3136,7 +3136,7 @@ "id": "TECH:C33" , - "title": + "title": "Allowing for Reflow with Long URLs and Strings of Text" } , @@ -3144,7 +3144,7 @@ "id": "TECH:C38" , - "title": + "title": "Using CSS width, max-width and flexbox to fit labels and inputs" } , @@ -3152,7 +3152,7 @@ "id": "TECH:SCR34" , - "title": + "title": "Calculating size and position in a way that scales with text size" } , @@ -3160,7 +3160,7 @@ "id": "TECH:G206" , - "title": + "title": "Providing options within the content to switch to a layout that does not require the user to scroll horizontally to read a line of text" } , @@ -3168,18 +3168,18 @@ "id": "TECH:future-reflow-1" , - "title": + "title": "Using PDF/UA when creating PDFs (Potential future technique)" } - + ]}, {"advisory": [ - + { "id": "TECH:C34" , - "title": + "title": "Using media queries to un-fixing sticky headers / footers" } , @@ -3187,7 +3187,7 @@ "id": "TECH:C37" , - "title": + "title": "Using CSS max-width and height to fit images" } , @@ -3195,7 +3195,7 @@ "id": "TECH:future-reflow-1" , - "title": + "title": "CSS, Reflowing simple data tables (Potential future technique)" } , @@ -3203,7 +3203,7 @@ "id": "TECH:future-reflow-1" , - "title": + "title": "CSS, Fitting data cells within the width of the viewport (Potential future technique)" } , @@ -3211,21 +3211,21 @@ "id": "TECH:future-reflow-1" , - "title": + "title": "Mechanism to allow mobile view at any time (Potential future technique)" } - + ]}, {"failure": [ - + { "id": "TECH:F102" , - "title": + "title": "Failure of Success Criterion 1.4.10 due to content disappearing and not being available when content has reflowed" } - + ]}] }, { @@ -3236,11 +3236,11 @@ "level": "AA", "handle": "Non-text Contrast", "title": "The visual presentation of the following have a contrast ratio of at least 3:1 against adjacent color(s):", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "User Interface Components", "text": "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;" @@ -3251,20 +3251,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: Color is used to identify user interface components or used to identify user interface component states", "techniques": [ - + { "id": "TECH:G195" , - "title": + "title": "Using an author-supplied, visible focus indicator" } , @@ -3272,19 +3272,19 @@ "id": "TECH:G174" , - "title": + "title": "Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast" } - + ]}, {"title": "Situation B: Color is required to understand graphical content", "techniques": [ - + { "id": "TECH:G207" , - "title": + "title": "Ensuring that a contrast ratio of 3:1 is provided for icons" } , @@ -3292,27 +3292,27 @@ "id": "TECH:G209" , - "title": + "title": "Provide sufficient contrast at the boundaries between adjoining colors" } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F78" , - "title": + "title": "Failure of Success Criterion 2.4.7 due to styling element outlines and borders in a way that removes or renders non-visible the visual focus indicator" } - + ]}] }, { @@ -3323,15 +3323,15 @@ "level": "AA", "handle": "Text Spacing", "title": "In content implemented using markup languages that support the following text style properties, no loss of content or functionality occurs by setting all of the following and by changing no other style property:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C36" , - "title": + "title": "Allowing for text spacing override" } , @@ -3339,18 +3339,18 @@ "id": "TECH:C35" , - "title": + "title": "Allowing for text spacing without wrapping" } - + ]}, {"advisory": [ - + { "id": "TECH:C8" , - "title": + "title": "Using CSS letter-spacing to control spacing within a word" } , @@ -3358,7 +3358,7 @@ "id": "TECH:C21" , - "title": + "title": "Specifying line spacing in CSS" } , @@ -3366,21 +3366,21 @@ "id": "TECH:C28" , - "title": + "title": "Specifying the size of text containers using em units" } - + ]}, {"failure": [ - + { "id": "TECH:F104" , - "title": + "title": "Failure of Success Criterion 1.4.12 due to clipped or overlapped content when text spacing is adjusted" } - + ]}] }, { @@ -3391,11 +3391,11 @@ "level": "AA", "handle": "Content on Hover or Focus", "title": "Where receiving and then removing pointer hover or keyboard focus triggers additional content to become visible and then hidden, the following are true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Dismissible", "text": "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;" @@ -3410,15 +3410,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:SCR39" , - "title": + "title": "Making content on focus or hover hoverable, dismissible, and persistent" } , @@ -3426,7 +3426,7 @@ "id": "TECH:future-content-on-hover-or-focus-1" , - "title": + "title": "ARIA: Using role=\"tooltip\" (Potential future technique)" } , @@ -3434,21 +3434,21 @@ "id": "TECH:future-content-on-hover-or-focus-1" , - "title": + "title": "CSS: Using hover and focus pseudo classes (Potential future technique)" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F95" , - "title": + "title": "Failure of Success Criterion 1.4.13 due to content shown on hover not being hoverable" } , @@ -3456,18 +3456,18 @@ "id": "TECH:future-content-on-hover-or-focus-1" , - "title": - "Failure to make content dismissable without moving pointer hover or keyboard focus (Potential future technique)" + "title": + "Failure to make content dismissible without moving pointer hover or keyboard focus (Potential future technique)" } , { "id": "TECH:future-content-on-hover-or-focus-1" , - "title": + "title": "Failure to meet by content on hover or focus not remaining visible until dismissed or invalid (Potential future technique)" } - + ]}] } ], @@ -3482,7 +3482,7 @@ "handle": "Operable", "title": "User interface components and navigation must be operable.", "guidelines": [ - + { "id": "WCAG2:keyboard-accessible", "alt_id": ["keyboard-operation"], @@ -3491,7 +3491,7 @@ "handle": "Keyboard Accessible", "title": "Make all functionality available from a keyboard.", "successcriteria": [ - + { "id": "WCAG2:keyboard", "alt_id": ["keyboard-operation-keyboard-operable"], @@ -3500,15 +3500,15 @@ "level": "A", "handle": "Keyboard", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G202" , - "title": + "title": "Ensuring keyboard control for all functionality" } , @@ -3516,16 +3516,16 @@ "id": "TECH:future-keyboard-1" , - "title": + "title": "Ensuring keyboard control by using one of the following techniques." , "using": [ - + { "id": "TECH:H91" , - "title": + "title": "Using HTML form controls and links" } , @@ -3533,7 +3533,7 @@ "id": "TECH:PDF3" , - "title": + "title": "Ensuring correct tab and reading order in PDF documents" } , @@ -3541,7 +3541,7 @@ "id": "TECH:PDF11" , - "title": + "title": "Providing links and link text using the Link annotation and the /Link structure element in PDF documents" } , @@ -3549,28 +3549,28 @@ "id": "TECH:PDF23" , - "title": + "title": "Providing interactive form controls in PDF documents" } - + ] - + } , { "id": "TECH:G90" , - "title": + "title": "Providing keyboard-triggered event handlers" , "using": [ - + { "id": "TECH:SCR20" , - "title": + "title": "Using both keyboard and other device-specific functions" } , @@ -3578,7 +3578,7 @@ "id": "TECH:SCR35" , - "title": + "title": "Making actions keyboard accessible by using the onclick event of anchors and buttons" } , @@ -3586,33 +3586,33 @@ "id": "TECH:SCR2" , - "title": + "title": "Using redundant keyboard and mouse event handlers" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:SCR29" , - "title": + "title": "Adding keyboard-accessible actions to static HTML elements" } - + ]}, {"failure": [ - + { "id": "TECH:F54" , - "title": + "title": "Failure of Success Criterion 2.1.1 due to using only pointing-device-specific event handlers (including gesture) for a function" } , @@ -3620,7 +3620,7 @@ "id": "TECH:F55" , - "title": + "title": "Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received" } , @@ -3628,10 +3628,10 @@ "id": "TECH:F42" , - "title": + "title": "Failure of Success Criteria 1.3.1, 2.1.1, 2.1.3, or 4.1.2 when emulating links" } - + ]}] }, { @@ -3642,32 +3642,32 @@ "level": "A", "handle": "No Keyboard Trap", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G21" , - "title": + "title": "Ensuring that users are not trapped in content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F10" , - "title": + "title": "Failure of Success Criterion 2.1.2 and Conformance Requirement 5 due to combining multiple content formats in a way that traps users inside one format type" } - + ]}] }, { @@ -3678,16 +3678,16 @@ "level": "AAA", "handle": "Keyboard (No Exception)", "title": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes.", - + "techniques": [ {"sufficient": [ - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -3698,11 +3698,11 @@ "level": "A", "handle": "Character Key Shortcuts", "title": "If a keyboard shortcut is implemented in content using only letter (including upper- and lower-case letters), punctuation, number, or symbol characters, then at least one of the following is true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Turn off", "text": "A mechanism is available to turn the shortcut off;" @@ -3717,32 +3717,32 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G217" , - "title": + "title": "Providing a mechanism to allow users to remap or turn off character key shortcuts" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F99" , - "title": + "title": "Failure of Success Criterion 2.1.4 due to implementing character key shortcuts that cannot be turned off or remapped" } - + ]}] } ], @@ -3756,7 +3756,7 @@ "handle": "Enough Time", "title": "Provide users enough time to read and use content.", "successcriteria": [ - + { "id": "WCAG2:timing-adjustable", "alt_id": ["time-limits-required-behaviors"], @@ -3765,11 +3765,11 @@ "level": "A", "handle": "Timing Adjustable", "title": "For each time limit that is set by the content, at least one of the following is true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Turn off", "text": "The user is allowed to turn off the time limit before encountering it; or" @@ -3796,20 +3796,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If there are session time limits:", "techniques": [ - + { "id": "TECH:G133" , - "title": + "title": "Providing a checkbox on the first page of a multipart form that allows users to ask for longer session time limit or no session time limit" } , @@ -3817,19 +3817,19 @@ "id": "TECH:G198" , - "title": + "title": "Providing a way for the user to turn the time limit off" } - + ]}, {"title": "Situation B: If a time limit is controlled by a script on the page:", "techniques": [ - + { "id": "TECH:G198" , - "title": + "title": "Providing a way for the user to turn the time limit off" } , @@ -3837,17 +3837,17 @@ "id": "TECH:G180" , - "title": + "title": "Providing the user with a means to set the time limit to 10 times the default time limit" } , {"and": [ - + { "id": "TECH:SCR16" , - "title": + "title": "Providing a script that warns the user a time limit is about to expire" } , @@ -3855,21 +3855,21 @@ "id": "TECH:SCR1" , - "title": + "title": "Allowing the user to extend the default time limit" } - + ]} - + ]}, {"title": "Situation C: If there are time limits on reading:", "techniques": [ - + { "id": "TECH:G4" , - "title": + "title": "Allowing the content to be paused and restarted from where it was paused" } , @@ -3877,7 +3877,7 @@ "id": "TECH:G198" , - "title": + "title": "Providing a way for the user to turn the time limit off" } , @@ -3885,7 +3885,7 @@ "id": "TECH:SCR33" , - "title": + "title": "Using script to scroll content, and providing a mechanism to pause it" } , @@ -3893,24 +3893,24 @@ "id": "TECH:SCR36" , - "title": + "title": "Providing a mechanism to allow users to display moving, scrolling, or auto-updating text in a static window or area" } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F40" , - "title": + "title": "Failure due to using meta redirect with a time limit" } , @@ -3918,7 +3918,7 @@ "id": "TECH:F41" , - "title": + "title": "Failure of Success Criterion 2.2.1, 2.2.4, and 3.2.5 due to using meta refresh to reload the page" } , @@ -3926,10 +3926,10 @@ "id": "TECH:F58" , - "title": + "title": "Failure of Success Criterion 2.2.1 due to using server-side techniques to automatically redirect pages after a time-out" } - + ]}] }, { @@ -3940,11 +3940,11 @@ "level": "A", "handle": "Pause, Stop, Hide", "title": "For moving, blinking, scrolling, or auto-updating information, all of the following are true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Moving, blinking, scrolling", "text": "For any moving, blinking or scrolling information that (1) starts automatically, (2) lasts more than five seconds, and (3) is presented in parallel with other content, there is 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; and" @@ -3955,15 +3955,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G4" , - "title": + "title": "Allowing the content to be paused and restarted from where it was paused" } , @@ -3971,7 +3971,7 @@ "id": "TECH:SCR33" , - "title": + "title": "Using script to scroll content, and providing a mechanism to pause it" } , @@ -3979,7 +3979,7 @@ "id": "TECH:G11" , - "title": + "title": "Creating content that blinks for less than 5 seconds" } , @@ -3987,7 +3987,7 @@ "id": "TECH:G187" , - "title": + "title": "Using a technology to include blinking content that can be turned off via the user agent" } , @@ -3995,7 +3995,7 @@ "id": "TECH:G152" , - "title": + "title": "Setting animated gif images to stop blinking after n cycles (within 5 seconds)" } , @@ -4003,7 +4003,7 @@ "id": "TECH:SCR22" , - "title": + "title": "Using scripts to control blinking and stop it in five seconds or less" } , @@ -4011,7 +4011,7 @@ "id": "TECH:G186" , - "title": + "title": "Using a control in the web page that stops moving, blinking, or auto-updating content" } , @@ -4019,21 +4019,21 @@ "id": "TECH:G191" , - "title": + "title": "Providing a link, button, or other mechanism that reloads the page without any blinking content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F16" , - "title": + "title": "Failure of Success Criterion 2.2.2 due to including scrolling content where movement is not essential to the activity without also including a mechanism to pause and restart the content" } , @@ -4041,7 +4041,7 @@ "id": "TECH:F47" , - "title": + "title": "Failure of Success Criterion 2.2.2 due to using the blink element" } , @@ -4049,7 +4049,7 @@ "id": "TECH:F4" , - "title": + "title": "Failure of Success Criterion 2.2.2 due to using text-decoration:blink without a mechanism to stop it in less than five seconds" } , @@ -4057,7 +4057,7 @@ "id": "TECH:F50" , - "title": + "title": "Failure of Success Criterion 2.2.2 due to a script that causes a blink effect without a mechanism to stop the blinking at 5 seconds or less" } , @@ -4065,10 +4065,10 @@ "id": "TECH:F7" , - "title": + "title": "Failure of Success Criterion 2.2.2 due to an object or applet for more than five seconds" } - + ]}] }, { @@ -4079,24 +4079,24 @@ "level": "AAA", "handle": "No Timing", "title": "Timing is not an essential part of the event or activity presented by the content, except for non-interactive synchronized media and real-time events.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G5" , - "title": + "title": "Allowing users to complete an activity without any time limit" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -4107,15 +4107,15 @@ "level": "AAA", "handle": "Interruptions", "title": "Interruptions can be postponed or suppressed by the user, except interruptions involving an emergency.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G75" , - "title": + "title": "Providing a mechanism to postpone any updating of content" } , @@ -4123,7 +4123,7 @@ "id": "TECH:G76" , - "title": + "title": "Providing a mechanism to request an update of the content instead of updating automatically" } , @@ -4131,21 +4131,21 @@ "id": "TECH:SCR14" , - "title": + "title": "Using scripts to make nonessential alerts optional" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F40" , - "title": + "title": "Failure due to using meta redirect with a time limit" } , @@ -4153,10 +4153,10 @@ "id": "TECH:F41" , - "title": + "title": "Failure of Success Criterion 2.2.1, 2.2.4, and 3.2.5 due to using meta refresh to reload the page" } - + ]}] }, { @@ -4167,24 +4167,24 @@ "level": "AAA", "handle": "Re-authenticating", "title": "When an authenticated session expires, the user can continue the activity without loss of data after re-authenticating.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:future-re-authenticating-1" , - "title": + "title": "Providing options to continue without loss of data using one of the following techniques:" , "using": [ - + { "id": "TECH:G105" , - "title": + "title": "Saving data so that it can be used after a user re-authenticates" } , @@ -4192,28 +4192,28 @@ "id": "TECH:G181" , - "title": + "title": "Encoding user data as hidden or encrypted data in a re-authorization page" } - + ] - + } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F12" , - "title": + "title": "Failure of Success Criterion 2.2.5 due to having a session time limit without a mechanism re-authentication" } - + ]}] }, { @@ -4224,15 +4224,15 @@ "level": "AAA", "handle": "Timeouts", "title": "Users are warned of the duration of any user inactivity that could cause data loss, unless the data is preserved for more than 20 hours when the user does not take any actions.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:future-timeouts-1" , - "title": + "title": "Setting a session timeout to occur following at least 20 hours of inactivity." } , @@ -4240,7 +4240,7 @@ "id": "TECH:future-timeouts-1" , - "title": + "title": "Store user data for more than 20 hours." } , @@ -4248,16 +4248,16 @@ "id": "TECH:future-timeouts-1" , - "title": + "title": "Provide a warning of the duration of user inactivity at the start of a process." } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] } ], @@ -4271,7 +4271,7 @@ "handle": "Seizures and Physical Reactions", "title": "Do not design content in a way that is known to cause seizures or physical reactions.", "successcriteria": [ - + { "id": "WCAG2:three-flashes-or-below-threshold", "alt_id": ["seizure-does-not-violate"], @@ -4280,15 +4280,15 @@ "level": "A", "handle": "Three Flashes or Below Threshold", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G19" , - "title": + "title": "Ensuring that no component of the content flashes more than three times in any 1-second period" } , @@ -4296,7 +4296,7 @@ "id": "TECH:G176" , - "title": + "title": "Keeping the flashing area small enough" } , @@ -4304,16 +4304,16 @@ "id": "TECH:G15" , - "title": + "title": "Using a tool to ensure that content does not violate the general flash threshold or red flash threshold" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -4324,24 +4324,24 @@ "level": "AAA", "handle": "Three Flashes", "title": "Web pages do not contain anything that flashes more than three times in any one second period.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G19" , - "title": + "title": "Ensuring that no component of the content flashes more than three times in any 1-second period" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -4352,15 +4352,15 @@ "level": "AAA", "handle": "Animation from Interactions", "title": "Motion animation triggered by interaction can be disabled, unless the animation is essential to the functionality or the information being conveyed.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C39" , - "title": + "title": "Using the CSS reduce-motion query to prevent motion" } , @@ -4368,16 +4368,16 @@ "id": "TECH:future-animation-from-interactions-1" , - "title": + "title": "Gx: Allowing users to set a preference that prevents animation." } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] } ], @@ -4391,7 +4391,7 @@ "handle": "Navigable", "title": "Provide ways to help users navigate, find content, and determine where they are.", "successcriteria": [ - + { "id": "WCAG2:bypass-blocks", "alt_id": ["navigation-mechanisms-skip"], @@ -4400,24 +4400,24 @@ "level": "A", "handle": "Bypass Blocks", "title": "A mechanism is available to bypass blocks of content that are repeated on multiple web pages.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:future-bypass-blocks-1" , - "title": + "title": "Creating links to skip blocks of repeated material using one of the following techniques:" , "using": [ - + { "id": "TECH:G1" , - "title": + "title": "Adding a link at the top of each page that goes directly to the main content area" } , @@ -4425,7 +4425,7 @@ "id": "TECH:G123" , - "title": + "title": "Adding a link at the beginning of a block of repeated content to go to the end of the block" } , @@ -4433,28 +4433,28 @@ "id": "TECH:G124" , - "title": + "title": "Adding links at the top of the page to each area of the content" } - + ] - + } , { "id": "TECH:future-bypass-blocks-1" , - "title": + "title": "Grouping blocks of repeated material in a way that can be skipped, using one of the following techniques:" , "using": [ - + { "id": "TECH:ARIA11" , - "title": + "title": "Using ARIA landmarks to identify regions of a page" } , @@ -4462,7 +4462,7 @@ "id": "TECH:H69" , - "title": + "title": "Providing heading elements at the beginning of each section of content" } , @@ -4470,17 +4470,17 @@ "id": "TECH:PDF9" , - "title": + "title": "Providing headings by marking content with heading tags in PDF documents" } , {"and": [ - + { "id": "TECH:H70" , - "title": + "title": "Using frame elements to group blocks of repeated material" } , @@ -4488,32 +4488,32 @@ "id": "TECH:H64" , - "title": + "title": "Using the title attribute of the iframe element" } - + ]} , { "id": "TECH:SCR28" , - "title": + "title": "Using an expandable and collapsible menu to bypass block of content" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:C6" , - "title": + "title": "Positioning content based on structural markup" } , @@ -4521,13 +4521,13 @@ "id": "TECH:H97" , - "title": + "title": "Grouping related links using the nav element" } - + ]}, {"failure": [ - + ]}] }, { @@ -4538,24 +4538,24 @@ "level": "A", "handle": "Page Titled", "title": "Web pages have titles that describe topic or purpose.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G88" , - "title": + "title": "Providing descriptive titles for web pages" , "using": [ - + { "id": "TECH:H25" , - "title": + "title": "Providing a title using the title element" } , @@ -4563,36 +4563,36 @@ "id": "TECH:PDF18" , - "title": + "title": "Specifying the document title using the Title entry in the document information dictionary of a PDF document" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:G127" , - "title": + "title": "Identifying a web page's relationship to a larger collection of web pages" } - + ]}, {"failure": [ - + { "id": "TECH:F25" , - "title": + "title": "Failure of Success Criterion 2.4.2 due to the title of a web page not identifying the contents" } - + ]}] }, { @@ -4603,15 +4603,15 @@ "level": "A", "handle": "Focus Order", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G59" , - "title": + "title": "Placing the interactive elements in an order that follows sequences and relationships within the content" } , @@ -4619,16 +4619,16 @@ "id": "TECH:future-focus-order-1" , - "title": + "title": "Giving focus to elements in an order that follows sequences and relationships within the content using one of the following techniques:" , "using": [ - + { "id": "TECH:C27" , - "title": + "title": "Making the DOM order match the visual order" } , @@ -4636,28 +4636,28 @@ "id": "TECH:PDF3" , - "title": + "title": "Ensuring correct tab and reading order in PDF documents" } - + ] - + } , { "id": "TECH:future-focus-order-1" , - "title": + "title": "Changing a web page dynamically using one of the following techniques:" , "using": [ - + { "id": "TECH:SCR26" , - "title": + "title": "Inserting dynamic content into the Document Object Model immediately following its trigger element" } , @@ -4665,7 +4665,7 @@ "id": "TECH:SCR37" , - "title": + "title": "Creating Custom Dialogs in a Device Independent Way" } , @@ -4673,25 +4673,25 @@ "id": "TECH:SCR27" , - "title": + "title": "Reordering page sections using the Document Object Model" } - + ] - + } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F44" , - "title": + "title": "Failure of Success Criterion 2.4.3 due to using tabindex to create a tab order that does not preserve meaning and operability" } , @@ -4699,10 +4699,10 @@ "id": "TECH:F85" , - "title": + "title": "Failure of Success Criterion 2.4.3 due to using dialogs or menus that are not adjacent to their trigger control in the sequential navigation order" } - + ]}] }, { @@ -4713,15 +4713,15 @@ "level": "A", "handle": "Link Purpose (In Context)", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G91" , - "title": + "title": "Providing link text that describes the purpose of a link" } , @@ -4729,7 +4729,7 @@ "id": "TECH:H30" , - "title": + "title": "Providing link text that describes the purpose of a link for anchor elements" } , @@ -4737,7 +4737,7 @@ "id": "TECH:H24" , - "title": + "title": "Providing text alternatives for the area elements of image maps" } , @@ -4745,16 +4745,16 @@ "id": "TECH:future-link-purpose-in-context-1" , - "title": + "title": "Allowing the user to choose short or long link text using one of the techniques below:" , "using": [ - + { "id": "TECH:G189" , - "title": + "title": "Providing a control near the beginning of the web page that changes the link text" } , @@ -4762,19 +4762,19 @@ "id": "TECH:SCR30" , - "title": + "title": "Using scripts to change the link text" } - + ] - + } , { "id": "TECH:G53" , - "title": + "title": "Identifying the purpose of a link using link text combined with the text of the enclosing sentence" } , @@ -4782,16 +4782,16 @@ "id": "TECH:future-link-purpose-in-context-1" , - "title": + "title": "Providing a supplemental description of the purpose of a link using one of the following techniques:" , "using": [ - + { "id": "TECH:H33" , - "title": + "title": "Supplementing link text with the title attribute" } , @@ -4799,28 +4799,28 @@ "id": "TECH:C7" , - "title": + "title": "Using CSS to hide a portion of the link text" } - + ] - + } , { "id": "TECH:future-link-purpose-in-context-1" , - "title": + "title": "Identifying the purpose of a link using link text combined with programmatically determined link context using one of the following techniques:" , "using": [ - + { "id": "TECH:ARIA7" , - "title": + "title": "Using aria-labelledby for link purpose" } , @@ -4828,7 +4828,7 @@ "id": "TECH:ARIA8" , - "title": + "title": "Using aria-label for link purpose" } , @@ -4836,7 +4836,7 @@ "id": "TECH:H77" , - "title": + "title": "Identifying the purpose of a link using link text combined with its enclosing list item" } , @@ -4844,7 +4844,7 @@ "id": "TECH:H78" , - "title": + "title": "Identifying the purpose of a link using link text combined with its enclosing paragraph" } , @@ -4852,7 +4852,7 @@ "id": "TECH:H79" , - "title": + "title": "Identifying the purpose of a link in a data table using the link text combined with its enclosing table cell and associated table header cells" } , @@ -4860,28 +4860,28 @@ "id": "TECH:H81" , - "title": + "title": "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" } - + ] - + } , { "id": "TECH:G91" , - "title": + "title": "Providing link text that describes the purpose of a link" , "using": [ - + { "id": "TECH:PDF11" , - "title": + "title": "Providing links and link text using the Link annotation and the /Link structure element in PDF documents" } , @@ -4889,22 +4889,22 @@ "id": "TECH:PDF13" , - "title": + "title": "Providing replacement text using the /Alt entry for links in PDF documents" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:H2" , - "title": + "title": "Combining adjacent image and text links for the same resource" } , @@ -4912,18 +4912,18 @@ "id": "TECH:H80" , - "title": + "title": "Identifying the purpose of a link using link text combined with the preceding heading element" } - + ]}, {"failure": [ - + { "id": "TECH:F63" , - "title": + "title": "Failure of Success Criterion 2.4.4 due to providing link context only in content that is not related to the link" } , @@ -4931,10 +4931,10 @@ "id": "TECH:F89" , - "title": + "title": "Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link" } - + ]}] }, { @@ -4945,24 +4945,24 @@ "level": "AA", "handle": "Multiple Ways", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:future-multiple-ways-1" , - "title": + "title": "Using two or more of the following techniques:" , "using": [ - + { "id": "TECH:G125" , - "title": + "title": "Providing links to navigate to related web pages" } , @@ -4970,7 +4970,7 @@ "id": "TECH:G64" , - "title": + "title": "Providing a Table of Contents" } , @@ -4978,7 +4978,7 @@ "id": "TECH:G63" , - "title": + "title": "Providing a site map" } , @@ -4986,7 +4986,7 @@ "id": "TECH:G161" , - "title": + "title": "Providing a search function to help users find content" } , @@ -4994,7 +4994,7 @@ "id": "TECH:G126" , - "title": + "title": "Providing a list of links to all other web pages" } , @@ -5002,22 +5002,22 @@ "id": "TECH:G185" , - "title": + "title": "Linking to all of the pages on the site from the home page" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:H59" , - "title": + "title": "Using the link element and navigation tools" } , @@ -5025,13 +5025,13 @@ "id": "TECH:PDF2" , - "title": + "title": "Creating bookmarks in PDF documents" } - + ]}, {"failure": [ - + ]}] }, { @@ -5042,15 +5042,15 @@ "level": "AA", "handle": "Headings and Labels", "title": "Headings and labels describe topic or purpose.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G130" , - "title": + "title": "Providing descriptive headings" } , @@ -5058,16 +5058,16 @@ "id": "TECH:G131" , - "title": + "title": "Providing descriptive labels" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -5078,15 +5078,15 @@ "level": "AA", "handle": "Focus Visible", "title": "Any keyboard operable user interface has a mode of operation where the keyboard focus indicator is visible.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G149" , - "title": + "title": "Using user interface components that are highlighted by the user agent when they receive focus" } , @@ -5094,7 +5094,7 @@ "id": "TECH:C15" , - "title": + "title": "Using CSS to change the presentation of a user interface component when it receives focus" } , @@ -5102,7 +5102,7 @@ "id": "TECH:G165" , - "title": + "title": "Using the default focus indicator for the platform so that high visibility default focus indicators will carry over" } , @@ -5110,7 +5110,7 @@ "id": "TECH:G195" , - "title": + "title": "Using an author-supplied, visible focus indicator" } , @@ -5118,7 +5118,7 @@ "id": "TECH:C40" , - "title": + "title": "Creating a two-color focus indicator to ensure sufficient contrast with all components" } , @@ -5126,21 +5126,21 @@ "id": "TECH:SCR31" , - "title": + "title": "Using script to change the background color or border of the element with focus" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F55" , - "title": + "title": "Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received" } , @@ -5148,10 +5148,10 @@ "id": "TECH:F78" , - "title": + "title": "Failure of Success Criterion 2.4.7 due to styling element outlines and borders in a way that removes or renders non-visible the visual focus indicator" } - + ]}] }, { @@ -5162,15 +5162,15 @@ "level": "AAA", "handle": "Location", "title": "Information about the user's location within a set of web pages is available.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G65" , - "title": + "title": "Providing a breadcrumb trail" } , @@ -5178,7 +5178,7 @@ "id": "TECH:G63" , - "title": + "title": "Providing a site map" } , @@ -5186,7 +5186,7 @@ "id": "TECH:G128" , - "title": + "title": "Indicating current location within navigation bars" } , @@ -5194,31 +5194,31 @@ "id": "TECH:G127" , - "title": + "title": "Identifying a web page's relationship to a larger collection of web pages" , "using": [ - + { "id": "TECH:H59" , - "title": + "title": "Using the link element and navigation tools" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:PDF14" , - "title": + "title": "Providing running headers and footers in PDF documents" } , @@ -5226,13 +5226,13 @@ "id": "TECH:PDF17" , - "title": + "title": "Specifying consistent page numbering for PDF documents" } - + ]}, {"failure": [ - + ]}] }, { @@ -5243,15 +5243,15 @@ "level": "AAA", "handle": "Link Purpose (Link Only)", "title": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:ARIA8" , - "title": + "title": "Using aria-label for link purpose" } , @@ -5259,7 +5259,7 @@ "id": "TECH:G91" , - "title": + "title": "Providing link text that describes the purpose of a link" } , @@ -5267,7 +5267,7 @@ "id": "TECH:H30" , - "title": + "title": "Providing link text that describes the purpose of a link for anchor elements" } , @@ -5275,7 +5275,7 @@ "id": "TECH:H24" , - "title": + "title": "Providing text alternatives for the area elements of image maps" } , @@ -5283,16 +5283,16 @@ "id": "TECH:future-link-purpose-link-only-1" , - "title": + "title": "Allowing the user to choose short or long link text using one of the techniques below:" , "using": [ - + { "id": "TECH:G189" , - "title": + "title": "Providing a control near the beginning of the web page that changes the link text" } , @@ -5300,49 +5300,49 @@ "id": "TECH:SCR30" , - "title": + "title": "Using scripts to change the link text" } - + ] - + } , { "id": "TECH:future-link-purpose-link-only-1" , - "title": + "title": "Providing a supplemental description of the purpose of a link using one of the following techniques:" , "using": [ - + { "id": "TECH:C7" , - "title": + "title": "Using CSS to hide a portion of the link text" } - + ] - + } , { "id": "TECH:future-link-purpose-link-only-1" , - "title": + "title": "Semantically indicating links using one of the following techniques:" , "using": [ - + { "id": "TECH:PDF11" , - "title": + "title": "Providing links and link text using the Link annotation and the /Link structure element in PDF documents" } , @@ -5350,22 +5350,22 @@ "id": "TECH:PDF13" , - "title": + "title": "Providing replacement text using the /Alt entry for links in PDF documents" } - + ] - + } - + ]}, {"advisory": [ - + { "id": "TECH:H2" , - "title": + "title": "Combining adjacent image and text links for the same resource" } , @@ -5373,18 +5373,18 @@ "id": "TECH:H33" , - "title": + "title": "Supplementing link text with the title attribute" } - + ]}, {"failure": [ - + { "id": "TECH:F84" , - "title": + "title": "Failure of Success Criterion 2.4.9 due to using a non-specific link such as \"click here\" or \"more\" without a mechanism to change the link text to specific text." } , @@ -5392,10 +5392,10 @@ "id": "TECH:F89" , - "title": + "title": "Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link" } - + ]}] }, { @@ -5406,15 +5406,15 @@ "level": "AAA", "handle": "Section Headings", "title": "Section headings are used to organize the content.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G141" , - "title": + "title": "Organizing a page using headings" } , @@ -5422,16 +5422,16 @@ "id": "TECH:H69" , - "title": + "title": "Providing heading elements at the beginning of each section of content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -5442,32 +5442,32 @@ "level": "AA", "handle": "Focus Not Obscured (Minimum)", "title": "When a user interface component receives keyboard focus, the component is not entirely hidden due to author-created content.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C43" , - "title": + "title": "Using CSS margin and scroll-margin to un-obscure content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F110" , - "title": + "title": "Failure of Success Criterion 2.4.11 due to a sticky footers or headers hiding focused elements" } - + ]}] }, { @@ -5478,32 +5478,32 @@ "level": "AAA", "handle": "Focus Not Obscured (Enhanced)", "title": "When a user interface component receives keyboard focus, no part of the component is hidden by author-created content.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C43" , - "title": + "title": "Using CSS margin and scroll-margin to un-obscure content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:future-focus-not-obscured-enhanced-1" , - "title": + "title": "An interaction that causes content to appear over the component with keyboard focus, visually covering part of the focus indicator. This behavior might be encountered with advertising or promotional material meant to provide more information about a product as the user navigates through a catalogue." } - + ]}] }, { @@ -5514,15 +5514,15 @@ "level": "AAA", "handle": "Focus Appearance", "title": "When the keyboard focus indicator is visible, an area of the focus indicator meets all the following:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G195" , - "title": + "title": "Using an author-supplied, visible focus indicator" } , @@ -5530,7 +5530,7 @@ "id": "TECH:C40" , - "title": + "title": "Creating a two-color focus indicator to ensure sufficient contrast with all components" } , @@ -5538,24 +5538,24 @@ "id": "TECH:C41" , - "title": + "title": "Creating a strong focus indicator within the component" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:future-focus-appearance-1" , - "title": + "title": "Using a CSS border for inline text which can wrap (Potential future technique)" } - + ]}] } ], @@ -5569,7 +5569,7 @@ "handle": "Input Modalities", "title": "Make it easier for users to operate functionality through various inputs beyond keyboard.", "successcriteria": [ - + { "id": "WCAG2:pointer-gestures", "alt_id": [], @@ -5578,15 +5578,15 @@ "level": "A", "handle": "Pointer Gestures", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G215" , - "title": + "title": "Providing controls to achieve the same result as path based or multipoint gestures" } , @@ -5594,24 +5594,24 @@ "id": "TECH:G216" , - "title": + "title": "Providing single point activation for a control slider" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F105" , - "title": + "title": "Failure of Success Criterion 2.5.1 due to providing functionality via a path-based gesture without simple pointer alternative" } - + ]}] }, { @@ -5622,11 +5622,11 @@ "level": "A", "handle": "Pointer Cancellation", "title": "For functionality that can be operated using a single pointer, at least one of the following is true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "No Down-Event", "text": "The down-event of the pointer is not used to execute any part of the function;" @@ -5645,15 +5645,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G210" , - "title": + "title": "Ensuring that drag-and-drop actions can be cancelled" } , @@ -5661,7 +5661,7 @@ "id": "TECH:G212" , - "title": + "title": "Using native controls to ensure functionality is triggered on the up-event." } , @@ -5669,24 +5669,24 @@ "id": "TECH:future-pointer-cancellation-1" , - "title": + "title": "Touch events are only triggered when touch is removed from a control (Potential future technique)" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F101" , - "title": + "title": "Failure of Success Criterion 2.5.2 due to activating a control on the down-event" } - + ]}] }, { @@ -5697,15 +5697,15 @@ "level": "A", "handle": "Label in Name", "title": "For user interface components with labels that include text or images of text, the name contains the text that is presented visually.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G208" , - "title": + "title": "Including the text of the visible label as part of the accessible name" } , @@ -5713,29 +5713,29 @@ "id": "TECH:G211" , - "title": + "title": "Matching the accessible name to the visible label" } - + ]}, {"advisory": [ - + { "id": "TECH:future-label-in-name-1" , - "title": + "title": "If an icon has no accompanying text, consider using its hover text as its accessible name (Potential future technique)" } - + ]}, {"failure": [ - + { "id": "TECH:F96" , - "title": + "title": "Failure due to the accessible name not containing the visible label text" } , @@ -5743,7 +5743,7 @@ "id": "TECH:future-label-in-name-1" , - "title": + "title": "Accessible name contains the visible label text, but the words of the visible label are not in the same order as they are in the visible label text (Potential future technique)" } , @@ -5751,10 +5751,10 @@ "id": "TECH:future-label-in-name-1" , - "title": + "title": "Accessible name contains the visible label text, but one or more other words are interspersed in the label (Potential future technique)" } - + ]}] }, { @@ -5765,11 +5765,11 @@ "level": "A", "handle": "Motion Actuation", "title": "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, except when:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Supported Interface", "text": "The motion is used to operate functionality through an accessibility supported interface;" @@ -5780,15 +5780,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G213" , - "title": + "title": "Provide conventional controls and an application setting for motion activated input" } , @@ -5796,21 +5796,21 @@ "id": "TECH:future-motion-actuation-1" , - "title": + "title": "GXXX: Supporting system level features which allow the user to disable motion actuation" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F106" , - "title": + "title": "Failure due to inability to deactivate motion actuation" } , @@ -5818,10 +5818,10 @@ "id": "TECH:future-motion-actuation-1" , - "title": + "title": "FXXX: Failure of Success Criterion 2.5.4 due to disrupting or disabling system level features which allow the user to disable motion actuation" } - + ]}] }, { @@ -5832,11 +5832,11 @@ "level": "AAA", "handle": "Target Size (Enhanced)", "title": "The size of the target for pointer inputs is at least 44 by 44 CSS pixels except when:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Equivalent", "text": "The target is available through an equivalent link or control on the same page that is at least 44 by 44 CSS pixels;" @@ -5855,20 +5855,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "", "techniques": [ - + { "id": "TECH:future-target-size-enhanced-1" , - "title": + "title": "Ensuring that targets are at least 44 by 44 CSS pixels." } , @@ -5876,35 +5876,35 @@ "id": "TECH:future-target-size-enhanced-1" , - "title": + "title": "Ensuring inline links provide sufficiently large activation target." } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:future-target-size-enhanced-1" , - "title": + "title": "none documented" } - + ]}, {"failure": [ - + { "id": "TECH:future-target-size-enhanced-1" , - "title": + "title": "Failure of success criterion 2.5.5 due to target being less than 44 by 44 CSS pixels." } - + ]}] }, { @@ -5915,32 +5915,32 @@ "level": "AAA", "handle": "Concurrent Input Mechanisms", "title": "Web content does not restrict use of input modalities available on a platform except where the restriction is essential, required to ensure the security of the content, or required to respect user settings.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:future-concurrent-input-mechanisms-1" , - "title": + "title": "Only using high-level, input-agnostic event handlers, such as focus, blur, click, in Javascript (Potential future technique)." } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F98" , - "title": + "title": "Failure due to interactions being limited to touch-only on touchscreen devices" } - + ]}] }, { @@ -5951,32 +5951,32 @@ "level": "AA", "handle": "Dragging Movements", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G219" , - "title": + "title": "Ensuring that an alternative is available for dragging movements that operate on content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F108" , - "title": + "title": "Failure of Success Criterion 2.5.7 Dragging Movements due to not providing a single pointer method for the user to operate a function that does not require a dragging movement" } - + ]}] }, { @@ -5987,24 +5987,24 @@ "level": "AA", "handle": "Target Size (Minimum)", "title": "The size of the target for pointer inputs is at least 24 by 24 CSS pixels, except where:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:C42" , - "title": + "title": "Using min-height and min-width to ensure sufficient target spacing" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] } ], @@ -6019,7 +6019,7 @@ "handle": "Understandable", "title": "Information and the operation of the user interface must be understandable.", "guidelines": [ - + { "id": "WCAG2:readable", "alt_id": ["meaning"], @@ -6028,7 +6028,7 @@ "handle": "Readable", "title": "Make text content readable and understandable.", "successcriteria": [ - + { "id": "WCAG2:language-of-page", "alt_id": ["meaning-doc-lang-id"], @@ -6037,15 +6037,15 @@ "level": "A", "handle": "Language of Page", "title": "The default human language of each web page can be programmatically determined.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:H57" , - "title": + "title": "Using the language attribute on the HTML element" } , @@ -6053,7 +6053,7 @@ "id": "TECH:PDF16" , - "title": + "title": "Setting the default language using the /Lang entry in the document catalog of a PDF document" } , @@ -6061,24 +6061,24 @@ "id": "TECH:PDF19" , - "title": + "title": "Specifying the language for a passage or phrase with the Lang entry in PDF documents" } - + ]}, {"advisory": [ - + { "id": "TECH:SVR5" , - "title": + "title": "Specifying the default language in the HTTP header" } - + ]}, {"failure": [ - + ]}] }, { @@ -6089,15 +6089,15 @@ "level": "AA", "handle": "Language of Parts", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:H58" , - "title": + "title": "Using language attributes to identify changes in the human language" } , @@ -6105,16 +6105,16 @@ "id": "TECH:PDF19" , - "title": + "title": "Specifying the language for a passage or phrase with the Lang entry in PDF documents" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -6125,105 +6125,105 @@ "level": "AAA", "handle": "Unusual Words", "title": "A mechanism is available for identifying specific definitions of words or phrases used in an unusual or restricted way, including idioms and jargon.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If the word or phrase has a unique meaning within the web page:", "techniques": [ - + { "id": "TECH:G101" , - "title": + "title": "Providing the definition of a word or phrase used in an unusual or restricted way" , "using": [ - + { "id": "TECH:G55" , - "title": + "title": "Linking to definitions" , "using": [ - + { "id": "TECH:H40" , - "title": + "title": "Using description lists" } - + ] - + } , { "id": "TECH:G112" , - "title": + "title": "Using inline definitions" , "using": [ - + { "id": "TECH:H54" , - "title": + "title": "Using the dfn element to identify the defining instance of a word" } - + ] - + } - + ] - + } , { "id": "TECH:G101" , - "title": + "title": "Providing the definition of a word or phrase used in an unusual or restricted way" , "using": [ - + { "id": "TECH:G55" , - "title": + "title": "Linking to definitions" , "using": [ - + { "id": "TECH:H40" , - "title": + "title": "Using description lists" } - + ] - + } , { "id": "TECH:G62" , - "title": + "title": "Providing a glossary" } , @@ -6231,82 +6231,82 @@ "id": "TECH:G70" , - "title": + "title": "Providing a function to search an online dictionary" } - + ] - + } - + ]}, {"title": "Situation B: If the word or phrase means different things within the same web page:", "techniques": [ - + { "id": "TECH:G101" , - "title": + "title": "Providing the definition of a word or phrase used in an unusual or restricted way" , "using": [ - + { "id": "TECH:G55" , - "title": + "title": "Linking to definitions" , "using": [ - + { "id": "TECH:H40" , - "title": + "title": "Using description lists" } - + ] - + } , { "id": "TECH:G112" , - "title": + "title": "Using inline definitions" , "using": [ - + { "id": "TECH:H54" , - "title": + "title": "Using the dfn element to identify the defining instance of a word" } - + ] - + } - + ] - + } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -6317,29 +6317,29 @@ "level": "AAA", "handle": "Abbreviations", "title": "A mechanism for identifying the expanded form or meaning of abbreviations is available.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If the abbreviation has only one meaning within the web page:", "techniques": [ - + { "id": "TECH:G102" , - "title": + "title": "Providing the expansion or explanation of an abbreviation" , "using": [ - + { "id": "TECH:G97" , - "title": + "title": "Providing the first use of an abbreviation immediately before or after the expanded form" } , @@ -6347,7 +6347,7 @@ "id": "TECH:G55" , - "title": + "title": "Linking to definitions" } , @@ -6355,7 +6355,7 @@ "id": "TECH:H28" , - "title": + "title": "Providing definitions for abbreviations by using the abbr element" } , @@ -6363,28 +6363,28 @@ "id": "TECH:PDF8" , - "title": + "title": "Providing definitions for abbreviations via an E entry for a structure element" } - + ] - + } , { "id": "TECH:G102" , - "title": + "title": "Providing the expansion or explanation of an abbreviation" , "using": [ - + { "id": "TECH:G55" , - "title": + "title": "Linking to definitions" } , @@ -6392,7 +6392,7 @@ "id": "TECH:G62" , - "title": + "title": "Providing a glossary" } , @@ -6400,7 +6400,7 @@ "id": "TECH:G70" , - "title": + "title": "Providing a function to search an online dictionary" } , @@ -6408,7 +6408,7 @@ "id": "TECH:H28" , - "title": + "title": "Providing definitions for abbreviations by using the abbr element" } , @@ -6416,32 +6416,32 @@ "id": "TECH:PDF8" , - "title": + "title": "Providing definitions for abbreviations via an E entry for a structure element" } - + ] - + } - + ]}, {"title": "Situation B: If the abbreviation means different things within the same web page:", "techniques": [ - + { "id": "TECH:G102" , - "title": + "title": "Providing the expansion or explanation of an abbreviation" , "using": [ - + { "id": "TECH:G55" , - "title": + "title": "Linking to definitions" } , @@ -6449,7 +6449,7 @@ "id": "TECH:H28" , - "title": + "title": "Providing definitions for abbreviations by using the abbr element" } , @@ -6457,23 +6457,23 @@ "id": "TECH:PDF8" , - "title": + "title": "Providing definitions for abbreviations via an E entry for a structure element" } - + ] - + } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -6484,15 +6484,15 @@ "level": "AAA", "handle": "Reading Level", "title": "When text requires reading ability more advanced than the lower secondary education level after removal of proper names and titles, supplemental content, or a version that does not require reading ability more advanced than the lower secondary education level, is available.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G86" , - "title": + "title": "Providing a text summary that can be understood by people with lower secondary education level reading ability" } , @@ -6500,7 +6500,7 @@ "id": "TECH:G103" , - "title": + "title": "Providing visual illustrations, pictures, and symbols to help explain ideas, events, and processes" } , @@ -6508,7 +6508,7 @@ "id": "TECH:G79" , - "title": + "title": "Providing a spoken version of the text" } , @@ -6516,7 +6516,7 @@ "id": "TECH:G153" , - "title": + "title": "Making the text easier to read" } , @@ -6524,16 +6524,16 @@ "id": "TECH:G160" , - "title": + "title": "Providing sign language versions of information, ideas, and processes that must be understood in order to use the content" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -6544,15 +6544,15 @@ "level": "AAA", "handle": "Pronunciation", "title": "A mechanism is available for identifying specific pronunciation of words where meaning of the words, in context, is ambiguous without knowing the pronunciation.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G120" , - "title": + "title": "Providing the pronunciation immediately following the word" } , @@ -6560,7 +6560,7 @@ "id": "TECH:G121" , - "title": + "title": "Linking to pronunciations" } , @@ -6568,7 +6568,7 @@ "id": "TECH:G62" , - "title": + "title": "Providing a glossary" } , @@ -6576,7 +6576,7 @@ "id": "TECH:G163" , - "title": + "title": "Using standard diacritical marks that can be turned off" } , @@ -6584,16 +6584,16 @@ "id": "TECH:H62" , - "title": + "title": "Using the ruby element" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] } ], @@ -6607,7 +6607,7 @@ "handle": "Predictable", "title": "Make web pages appear and operate in predictable ways.", "successcriteria": [ - + { "id": "WCAG2:on-focus", "alt_id": ["consistent-behavior-receive-focus"], @@ -6616,26 +6616,26 @@ "level": "A", "handle": "On Focus", "title": "When any user interface component receives focus, it does not initiate a change of context.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G107" , - "title": + "title": "Using \"activate\" rather than \"focus\" as a trigger for changes of context" } - + ]}, {"advisory": [ - + { "id": "TECH:G200" , - "title": + "title": "Opening new windows and tabs from a link only when necessary" } , @@ -6643,21 +6643,21 @@ "id": "TECH:G201" , - "title": + "title": "Giving users advanced warning when opening a new window" } - + ]}, {"failure": [ - + { "id": "TECH:F55" , - "title": + "title": "Failure of Success Criteria 2.1.1, 2.4.7, and 3.2.1 due to using script to remove focus when focus is received" } - + ]}] }, { @@ -6668,24 +6668,24 @@ "level": "A", "handle": "On Input", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G80" , - "title": + "title": "Providing a submit button to initiate a change of context" , "using": [ - + { "id": "TECH:H32" , - "title": + "title": "Providing submit buttons" } , @@ -6693,7 +6693,7 @@ "id": "TECH:H84" , - "title": + "title": "Using a button with a select element to perform an action" } , @@ -6701,19 +6701,19 @@ "id": "TECH:PDF15" , - "title": + "title": "Providing submit buttons with the submit-form action in PDF forms" } - + ] - + } , { "id": "TECH:G13" , - "title": + "title": "Describing what will happen before a change to a form control that causes a change of context to occur is made" } , @@ -6721,29 +6721,29 @@ "id": "TECH:SCR19" , - "title": + "title": "Using an onchange event on a select element without causing a change of context" } - + ]}, {"advisory": [ - + { "id": "TECH:G201" , - "title": + "title": "Giving users advanced warning when opening a new window" } - + ]}, {"failure": [ - + { "id": "TECH:F36" , - "title": + "title": "Failure of Success Criterion 3.2.2 due to automatically submitting a form and given a value" } , @@ -6751,10 +6751,10 @@ "id": "TECH:F37" , - "title": + "title": "Failure of Success Criterion 3.2.2 due to launching a new window without prior warning when the selection of a radio button, check box or select list is changed" } - + ]}] }, { @@ -6765,26 +6765,26 @@ "level": "AA", "handle": "Consistent Navigation", "title": "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.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G61" , - "title": + "title": "Presenting repeated components in the same relative order each time they appear" } - + ]}, {"advisory": [ - + { "id": "TECH:PDF14" , - "title": + "title": "Providing running headers and footers in PDF documents" } , @@ -6792,21 +6792,21 @@ "id": "TECH:PDF17" , - "title": + "title": "Specifying consistent page numbering for PDF documents" } - + ]}, {"failure": [ - + { "id": "TECH:F66" , - "title": + "title": "Failure of Success Criterion 3.2.3 due to presenting navigation links in a different relative order on different pages" } - + ]}] }, { @@ -6817,36 +6817,36 @@ "level": "AA", "handle": "Consistent Identification", "title": "Components that have the same functionality within a set of web pages are identified consistently.", - + "techniques": [ {"sufficient": [ - + {"and": [ - + { "id": "TECH:G197" , - "title": + "title": "Using labels, names, and text alternatives consistently for content that has the same functionality" } - + ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F31" , - "title": + "title": "Failure of Success Criterion 3.2.4 due to using two different labels for the same function on different web pages within a set of web pages" } - + ]}] }, { @@ -6857,32 +6857,32 @@ "level": "AAA", "handle": "Change on Request", "title": "Changes of context are initiated only by user request or a mechanism is available to turn off such changes.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If the web page allows automatic updates:", "techniques": [ - + { "id": "TECH:G76" , - "title": + "title": "Providing a mechanism to request an update of the content instead of updating automatically" } - + ]}, {"title": "Situation B: If automatic redirects are possible:", "techniques": [ - + { "id": "TECH:SVR1" , - "title": + "title": "Implementing automatic redirects on the server side instead of on the client side" } , @@ -6890,41 +6890,41 @@ "id": "TECH:G110" , - "title": + "title": "Using an instant client-side redirect" , "using": [ - + { "id": "TECH:H76" , - "title": + "title": "Using meta refresh to create an instant client-side redirect" } - + ] - + } - + ]}, {"title": "Situation C: If the web page uses pop-up windows:", "techniques": [ - + { "id": "TECH:future-change-on-request-1" , - "title": + "title": "Including pop-up windows using one of the following techniques:" , "using": [ - + { "id": "TECH:H83" , - "title": + "title": "Using the target attribute to open a new window on user request and indicating this in link text" } , @@ -6932,48 +6932,48 @@ "id": "TECH:SCR24" , - "title": + "title": "Using progressive enhancement to open new windows on user request" } - + ] - + } - + ]}, {"title": "Situation D: If using an onchange event on a select element:", "techniques": [ - + { "id": "TECH:SCR19" , - "title": + "title": "Using an onchange event on a select element without causing a change of context" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:G200" , - "title": + "title": "Opening new windows and tabs from a link only when necessary" } - + ]}, {"failure": [ - + { "id": "TECH:F60" , - "title": + "title": "Failure of Success Criterion 3.2.5 due to launching a new window when a user enters text into an input field" } , @@ -6981,7 +6981,7 @@ "id": "TECH:F61" , - "title": + "title": "Failure of Success Criterion 3.2.5 due to complete change of main content through an automatic update that the user cannot disable from within the content" } , @@ -6989,7 +6989,7 @@ "id": "TECH:F9" , - "title": + "title": "Failure of Success Criterion 3.2.5 due to changing the context when the user removes focus from a form element" } , @@ -6997,7 +6997,7 @@ "id": "TECH:F22" , - "title": + "title": "Failure of Success Criterion 3.2.5 due to opening windows that are not requested by the user" } , @@ -7005,7 +7005,7 @@ "id": "TECH:F52" , - "title": + "title": "Failure of Success Criterion 3.2.1 and 3.2.5 due to opening a new window as soon as a new page is loaded" } , @@ -7013,7 +7013,7 @@ "id": "TECH:F40" , - "title": + "title": "Failure due to using meta redirect with a time limit" } , @@ -7021,10 +7021,10 @@ "id": "TECH:F41" , - "title": + "title": "Failure of Success Criterion 2.2.1, 2.2.4, and 3.2.5 due to using meta refresh to reload the page" } - + ]}] }, { @@ -7035,32 +7035,32 @@ "level": "A", "handle": "Consistent Help", "title": "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 order relative to other page content, unless a change is initiated by the user:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G220" , - "title": + "title": "Provide a contact-us link in a consistent location" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:future-consistent-help-1" , - "title": + "title": "Inconsistent Help Location" } - + ]}] } ], @@ -7074,7 +7074,7 @@ "handle": "Input Assistance", "title": "Help users avoid and correct mistakes.", "successcriteria": [ - + { "id": "WCAG2:error-identification", "alt_id": ["minimize-error-identified"], @@ -7083,20 +7083,20 @@ "level": "A", "handle": "Error Identification", "title": "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.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If a form contains fields for which information from the user is mandatory.", "techniques": [ - + { "id": "TECH:G83" , - "title": + "title": "Providing text descriptions to identify required fields that were not completed" } , @@ -7104,7 +7104,7 @@ "id": "TECH:ARIA21" , - "title": + "title": "Using Aria-Invalid to Indicate An Error Field" } , @@ -7112,7 +7112,7 @@ "id": "TECH:SCR18" , - "title": + "title": "Providing client-side validation and alert" } , @@ -7120,19 +7120,19 @@ "id": "TECH:PDF5" , - "title": + "title": "Indicating required form controls in PDF forms" } - + ]}, {"title": "Situation B: If information provided by the user is required to be in a specific data format or of certain values.", "techniques": [ - + { "id": "TECH:ARIA18" , - "title": + "title": "Using aria-alertdialog to Identify Errors" } , @@ -7140,7 +7140,7 @@ "id": "TECH:ARIA19" , - "title": + "title": "Using ARIA role=alert or Live Regions to Identify Errors" } , @@ -7148,7 +7148,7 @@ "id": "TECH:ARIA21" , - "title": + "title": "Using Aria-Invalid to Indicate An Error Field" } , @@ -7156,7 +7156,7 @@ "id": "TECH:G84" , - "title": + "title": "Providing a text description when the user provides information that is not in the list of allowed values" } , @@ -7164,7 +7164,7 @@ "id": "TECH:G85" , - "title": + "title": "Providing a text description when user input falls outside the required format or values" } , @@ -7172,7 +7172,7 @@ "id": "TECH:SCR18" , - "title": + "title": "Providing client-side validation and alert" } , @@ -7180,7 +7180,7 @@ "id": "TECH:SCR32" , - "title": + "title": "Providing client-side validation and adding error text via the DOM" } , @@ -7188,21 +7188,21 @@ "id": "TECH:PDF22" , - "title": + "title": "Indicating when user input falls outside the required format or values in PDF forms" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:G139" , - "title": + "title": "Creating a mechanism that allows users to jump to errors" } , @@ -7210,13 +7210,13 @@ "id": "TECH:G199" , - "title": + "title": "Providing success feedback when data is submitted successfully" } - + ]}, {"failure": [ - + ]}] }, { @@ -7227,24 +7227,24 @@ "level": "A", "handle": "Labels or Instructions", "title": "Labels or instructions are provided when content requires user input.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G131" , - "title": + "title": "Providing descriptive labels" , "using": [ - + { "id": "TECH:ARIA1" , - "title": + "title": "Using the aria-describedby property to provide a descriptive label for user interface controls" } , @@ -7252,7 +7252,7 @@ "id": "TECH:ARIA9" , - "title": + "title": "Using aria-labelledby to concatenate a label from several text nodes" } , @@ -7260,7 +7260,7 @@ "id": "TECH:ARIA17" , - "title": + "title": "Using grouping roles to identify related form controls" } , @@ -7268,7 +7268,7 @@ "id": "TECH:G89" , - "title": + "title": "Providing expected data format and example" } , @@ -7276,7 +7276,7 @@ "id": "TECH:G184" , - "title": + "title": "Providing text instructions at the beginning of a form or set of fields that describes the necessary input" } , @@ -7284,7 +7284,7 @@ "id": "TECH:G162" , - "title": + "title": "Positioning labels to maximize predictability of relationships" } , @@ -7292,7 +7292,7 @@ "id": "TECH:G83" , - "title": + "title": "Providing text descriptions to identify required fields that were not completed" } , @@ -7300,7 +7300,7 @@ "id": "TECH:H90" , - "title": + "title": "Indicating required form controls using label or legend" } , @@ -7308,19 +7308,19 @@ "id": "TECH:PDF5" , - "title": + "title": "Indicating required form controls in PDF forms" } - + ] - + } , { "id": "TECH:H44" , - "title": + "title": "Using label elements to associate text labels with form controls" } , @@ -7328,7 +7328,7 @@ "id": "TECH:PDF10" , - "title": + "title": "Providing labels for interactive form controls in PDF documents" } , @@ -7336,7 +7336,7 @@ "id": "TECH:H71" , - "title": + "title": "Providing a description for groups of form controls using fieldset and legend elements" } , @@ -7344,32 +7344,32 @@ "id": "TECH:G167" , - "title": + "title": "Using an adjacent button to label the purpose of a field" } - + ]}, {"advisory": [ - + { "id": "TECH:G13" , - "title": + "title": "Describing what will happen before a change to a form control that causes a change of context to occur is made" } - + ]}, {"failure": [ - + { "id": "TECH:F82" , - "title": + "title": "Failure of Success Criterion 3.3.2 by visually formatting a set of phone number fields but not including a text label" } - + ]}] }, { @@ -7380,20 +7380,20 @@ "level": "AA", "handle": "Error Suggestion", "title": "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.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If information for a field is required to be in a specific data format:", "techniques": [ - + { "id": "TECH:ARIA18" , - "title": + "title": "Using aria-alertdialog to Identify Errors" } , @@ -7401,7 +7401,7 @@ "id": "TECH:G85" , - "title": + "title": "Providing a text description when user input falls outside the required format or values" } , @@ -7409,7 +7409,7 @@ "id": "TECH:G177" , - "title": + "title": "Providing suggested correction text" } , @@ -7417,19 +7417,19 @@ "id": "TECH:PDF22" , - "title": + "title": "Indicating when user input falls outside the required format or values in PDF forms" } - + ]}, {"title": "Situation B: Information provided by the user is required to be one of a limited set of values:", "techniques": [ - + { "id": "TECH:ARIA18" , - "title": + "title": "Using aria-alertdialog to Identify Errors" } , @@ -7437,7 +7437,7 @@ "id": "TECH:G84" , - "title": + "title": "Providing a text description when the user provides information that is not in the list of allowed values" } , @@ -7445,7 +7445,7 @@ "id": "TECH:G177" , - "title": + "title": "Providing suggested correction text" } , @@ -7453,21 +7453,21 @@ "id": "TECH:PDF22" , - "title": + "title": "Indicating when user input falls outside the required format or values in PDF forms" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:G139" , - "title": + "title": "Creating a mechanism that allows users to jump to errors" } , @@ -7475,13 +7475,13 @@ "id": "TECH:G199" , - "title": + "title": "Providing success feedback when data is submitted successfully" } - + ]}, {"failure": [ - + ]}] }, { @@ -7492,11 +7492,11 @@ "level": "AA", "handle": "Error Prevention (Legal, Financial, Data)", "title": "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 following is true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Reversible", "text": "Submissions are reversible." @@ -7511,20 +7511,20 @@ } ] }], - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If an application causes a legal transaction to occur, such as making a purchase or submitting an income tax return:", "techniques": [ - + { "id": "TECH:G164" , - "title": + "title": "Providing a stated time within which an online request (or transaction) may be amended or canceled by the user after making the request" } , @@ -7532,7 +7532,7 @@ "id": "TECH:G98" , - "title": + "title": "Providing the ability for the user to review and correct answers before submitting" } , @@ -7540,19 +7540,19 @@ "id": "TECH:G155" , - "title": + "title": "Providing a checkbox in addition to a submit button" } - + ]}, {"title": "Situation B: If an action causes information to be deleted:", "techniques": [ - + { "id": "TECH:G99" , - "title": + "title": "Providing the ability to recover deleted information" } , @@ -7560,7 +7560,7 @@ "id": "TECH:G168" , - "title": + "title": "Requesting confirmation to continue with selected action" } , @@ -7568,19 +7568,19 @@ "id": "TECH:G155" , - "title": + "title": "Providing a checkbox in addition to a submit button" } - + ]}, {"title": "Situation C: If the web page includes a testing application:", "techniques": [ - + { "id": "TECH:G98" , - "title": + "title": "Providing the ability for the user to review and correct answers before submitting" } , @@ -7588,21 +7588,21 @@ "id": "TECH:G168" , - "title": + "title": "Requesting confirmation to continue with selected action" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:SCR18" , - "title": + "title": "Providing client-side validation and alert" } , @@ -7610,13 +7610,13 @@ "id": "TECH:G199" , - "title": + "title": "Providing success feedback when data is submitted successfully" } - + ]}, {"failure": [ - + ]}] }, { @@ -7627,20 +7627,20 @@ "level": "AAA", "handle": "Help", "title": "Context-sensitive help is available.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If a form requires text input:", "techniques": [ - + { "id": "TECH:G71" , - "title": + "title": "Providing a help link on every web page" } , @@ -7648,7 +7648,7 @@ "id": "TECH:G193" , - "title": + "title": "Providing help by an assistant in the web page" } , @@ -7656,7 +7656,7 @@ "id": "TECH:G194" , - "title": + "title": "Providing spell checking and suggestions for text input" } , @@ -7664,19 +7664,19 @@ "id": "TECH:G184" , - "title": + "title": "Providing text instructions at the beginning of a form or set of fields that describes the necessary input" } - + ]}, {"title": "Situation B: If a form requires text input in an expected data format:", "techniques": [ - + { "id": "TECH:G89" , - "title": + "title": "Providing expected data format and example" } , @@ -7684,27 +7684,27 @@ "id": "TECH:G184" , - "title": + "title": "Providing text instructions at the beginning of a form or set of fields that describes the necessary input" } - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:H89" , - "title": + "title": "Using the title attribute to provide context-sensitive help" } - + ]}, {"failure": [ - + ]}] }, { @@ -7715,11 +7715,11 @@ "level": "AAA", "handle": "Error Prevention (All)", "title": "For web pages that require the user to submit information, at least one of the following is true:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Reversible", "text": "Submissions are reversible." @@ -7734,16 +7734,16 @@ } ] }], - + "techniques": [ {"sufficient": [ - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -7754,15 +7754,15 @@ "level": "A", "handle": "Redundant Entry", "title": "Information previously entered by or provided to the user that is required to be entered again in the same process is either:", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G221" , - "title": + "title": "Provide data from a previous step in a process" } , @@ -7770,16 +7770,16 @@ "id": "TECH:future-redundant-entry-1" , - "title": + "title": "Not requesting the same information twice (Potential future technique)" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + ]}] }, { @@ -7790,11 +7790,11 @@ "level": "AA", "handle": "Accessible Authentication (Minimum)", "title": "A cognitive function test (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:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Alternative", "text": "Another authentication method that does not rely on a cognitive function test." @@ -7813,15 +7813,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G218" , - "title": + "title": "Email link authentication" } , @@ -7829,7 +7829,7 @@ "id": "TECH:H100" , - "title": + "title": "Providing properly marked up email and password inputs" } , @@ -7837,7 +7837,7 @@ "id": "TECH:future-accessible-authentication-minimum-1" , - "title": + "title": "Providing WebAuthn as an alternative to username/password (Potential future technique)" } , @@ -7845,7 +7845,7 @@ "id": "TECH:future-accessible-authentication-minimum-1" , - "title": + "title": "Providing a 3rd party login using OAuth (Potential future technique)" } , @@ -7853,24 +7853,24 @@ "id": "TECH:future-accessible-authentication-minimum-1" , - "title": + "title": "Using two techniques to provide 2 factor authentication (Potential future technique)" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F109" , - "title": + "title": "Failure of Success Criterion 3.3.8 and 3.3.9 due to preventing password or code re-entry in the same format" } - + ]}] }, { @@ -7881,11 +7881,11 @@ "level": "AAA", "handle": "Accessible Authentication (Enhanced)", "title": "A cognitive function test (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:", - + "details": [{ "type": "ulist", "items": [ - + { "handle": "Alternative", "text": "Another authentication method that does not rely on a cognitive function test." @@ -7896,15 +7896,15 @@ } ] }], - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G218" , - "title": + "title": "Email link authentication" } , @@ -7912,7 +7912,7 @@ "id": "TECH:future-accessible-authentication-enhanced-1" , - "title": + "title": "Providing a properly marked up email and password inputs (Potential future technique)" } , @@ -7920,7 +7920,7 @@ "id": "TECH:future-accessible-authentication-enhanced-1" , - "title": + "title": "Providing WebAuthn as an alternative to username/password (Potential future technique)" } , @@ -7928,7 +7928,7 @@ "id": "TECH:future-accessible-authentication-enhanced-1" , - "title": + "title": "Providing a 3rd party login using OAuth (Potential future technique)" } , @@ -7936,24 +7936,24 @@ "id": "TECH:future-accessible-authentication-enhanced-1" , - "title": + "title": "Using two techniques to provide 2 factor authentication (Potential future technique)" } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F109" , - "title": + "title": "Failure of Success Criterion 3.3.8 and 3.3.9 due to preventing password or code re-entry in the same format" } - + ]}] } ], @@ -7968,7 +7968,7 @@ "handle": "Robust", "title": "Content must be robust enough that it can be interpreted by a wide variety of user agents, including assistive technologies.", "guidelines": [ - + { "id": "WCAG2:compatible", "alt_id": ["ensure-compat"], @@ -7977,7 +7977,7 @@ "handle": "Compatible", "title": "Maximize compatibility with current and future user agents, including assistive technologies.", "successcriteria": [ - + { "id": "WCAG2:parsing", "alt_id": ["ensure-compat-parses"], @@ -7986,15 +7986,15 @@ "level": "", "handle": "Parsing (Obsolete and removed)", "title": "This criterion was originally adopted to address problems that assistive technology had directly parsing HTML. Assistive technology no longer has any need to directly parse HTML. Consequently, these problems either no longer exist or are addressed by other criteria. This criterion no longer has utility and is removed.", - + "techniques": [ {"sufficient": [ - + { "id": "TECH:G134" , - "title": + "title": "Validating web pages" } , @@ -8002,7 +8002,7 @@ "id": "TECH:G192" , - "title": + "title": "Fully conforming to specifications" } , @@ -8010,7 +8010,7 @@ "id": "TECH:H88" , - "title": + "title": "Using HTML according to spec" } , @@ -8018,18 +8018,18 @@ "id": "TECH:future-parsing-1" , - "title": + "title": "Ensuring that web pages can be parsed by using one of the following techniques:" , "using": [ - + {"and": [ - + { "id": "TECH:H74" , - "title": + "title": "Ensuring that opening and closing tags are used according to specification" } , @@ -8037,7 +8037,7 @@ "id": "TECH:H93" , - "title": + "title": "Ensuring that id attributes are unique on a web page" } , @@ -8045,35 +8045,35 @@ "id": "TECH:H94" , - "title": + "title": "Ensuring that elements do not contain duplicate attributes" } - + ]} , { "id": "TECH:H75" , - "title": + "title": "Ensuring that web pages are well-formed" } - + ] - + } - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F70" , - "title": + "title": "Failure of Success Criterion 4.1.1 due to incorrect use of start and end tags or attribute markup" } , @@ -8081,10 +8081,10 @@ "id": "TECH:F77" , - "title": + "title": "Failure of Success Criterion 4.1.1 due to duplicate values of type ID" } - + ]}] }, { @@ -8095,20 +8095,20 @@ "level": "A", "handle": "Name, Role, Value", "title": "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.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If using a standard user interface component in a markup language (e.g., HTML):", "techniques": [ - + { "id": "TECH:ARIA14" , - "title": + "title": "Using aria-label to provide an invisible label where a visible label cannot be used" } , @@ -8116,7 +8116,7 @@ "id": "TECH:ARIA16" , - "title": + "title": "Using aria-labelledby to provide a name for user interface controls" } , @@ -8124,16 +8124,16 @@ "id": "TECH:G108" , - "title": + "title": "Using markup features to expose the name and role, allow user-settable properties to be directly set, and provide notification of changes" , "using": [ - + { "id": "TECH:H91" , - "title": + "title": "Using HTML form controls and links" } , @@ -8141,7 +8141,7 @@ "id": "TECH:H44" , - "title": + "title": "Using label elements to associate text labels with form controls" } , @@ -8149,7 +8149,7 @@ "id": "TECH:H64" , - "title": + "title": "Using the title attribute of the iframe element" } , @@ -8157,7 +8157,7 @@ "id": "TECH:H65" , - "title": + "title": "Using the title attribute to identify form controls when the label element cannot be used" } , @@ -8165,57 +8165,57 @@ "id": "TECH:H88" , - "title": + "title": "Using HTML according to spec" } - + ] - + } - + ]}, {"title": "Situation B: If using script or code to re-purpose a standard user interface component in a markup language:", "techniques": [ - + { "id": "TECH:future-name-role-value-1" , - "title": + "title": "Exposing the names and roles, allowing user-settable properties to be directly set, and providing notification of changes using one of the following techniques:" , "using": [ - + { "id": "TECH:ARIA16" , - "title": + "title": "Using aria-labelledby to provide a name for user interface controls" } - + ] - + } - + ]}, {"title": "Situation C: If using a standard user interface component in a programming technology:", "techniques": [ - + { "id": "TECH:G135" , - "title": + "title": "Using the accessibility API features of a technology to expose names and notification of changes" , "using": [ - + { "id": "TECH:PDF10" , - "title": + "title": "Providing labels for interactive form controls in PDF documents" } , @@ -8223,32 +8223,32 @@ "id": "TECH:PDF12" , - "title": + "title": "Providing name, role, value information for form fields in PDF documents" } - + ] - + } - + ]}, {"title": "Situation D: If creating your own user interface component in a programming language:", "techniques": [ - + { "id": "TECH:G10" , - "title": + "title": "Creating components using a technology that supports the accessibility notification of changes" , "using": [ - + { "id": "TECH:ARIA4" , - "title": + "title": "Using a WAI-ARIA role to expose the role of a user interface component" } , @@ -8256,7 +8256,7 @@ "id": "TECH:ARIA5" , - "title": + "title": "Using WAI-ARIA state and property attributes to expose the state of a user interface component" } , @@ -8264,28 +8264,28 @@ "id": "TECH:ARIA16" , - "title": + "title": "Using aria-labelledby to provide a name for user interface controls" } - + ] - + } - + ]} ]} - + ]}, {"advisory": [ - + ]}, {"failure": [ - + { "id": "TECH:F59" , - "title": + "title": "Failure of Success Criterion 4.1.2 due to using script to make div or span a user interface control in HTML without providing a role for the control" } , @@ -8293,7 +8293,7 @@ "id": "TECH:F15" , - "title": + "title": "Failure of Success Criterion 4.1.2 due to implementing custom controls that do not use an accessibility API for the technology, or do so incompletely" } , @@ -8301,7 +8301,7 @@ "id": "TECH:F20" , - "title": + "title": "Failure of Success Criterion 1.1.1 and 4.1.2 due to not updating text alternatives when changes to non-text content occur" } , @@ -8309,7 +8309,7 @@ "id": "TECH:F68" , - "title": + "title": "Failure of Success Criterion 4.1.2 due to a user interface control not having a programmatically determined name" } , @@ -8317,7 +8317,7 @@ "id": "TECH:F79" , - "title": + "title": "Failure of Success Criterion 4.1.2 due to the focus state of a user interface component not being programmatically determinable or no notification of change of focus state available" } , @@ -8325,7 +8325,7 @@ "id": "TECH:F86" , - "title": + "title": "Failure of Success Criterion 4.1.2 due to not providing names for each part of a multi-part form field, such as a US telephone number" } , @@ -8333,10 +8333,10 @@ "id": "TECH:F89" , - "title": + "title": "Failure of Success Criteria 2.4.4, 2.4.9 and 4.1.2 due to not providing an accessible name for an image which is the only content in a link" } - + ]}] }, { @@ -8347,54 +8347,54 @@ "level": "AA", "handle": "Status Messages", "title": "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.", - + "techniques": [ {"sufficient": [ - + {"situations": [ - + {"title": "Situation A: If a status message advises on the success or results of an action, or the state of an application:", "techniques": [ - + { "id": "TECH:ARIA22" , - "title": + "title": "Using role=status to present status messages" , "using": [ - + { "id": "TECH:G199" , - "title": + "title": "Providing success feedback when data is submitted successfully" } - + ] - + } - + ]}, {"title": "Situation B: If a status message conveys a suggestion, or a warning on the existence of an error:", "techniques": [ - + { "id": "TECH:ARIA19" , - "title": + "title": "Using ARIA role=alert or Live Regions to Identify Errors" , "using": [ - + { "id": "TECH:G83" , - "title": + "title": "Providing text descriptions to identify required fields that were not completed" } , @@ -8402,7 +8402,7 @@ "id": "TECH:G84" , - "title": + "title": "Providing a text description when the user provides information that is not in the list of allowed values" } , @@ -8410,7 +8410,7 @@ "id": "TECH:G85" , - "title": + "title": "Providing a text description when user input falls outside the required format or values" } , @@ -8418,7 +8418,7 @@ "id": "TECH:G177" , - "title": + "title": "Providing suggested correction text" } , @@ -8426,23 +8426,23 @@ "id": "TECH:G194" , - "title": + "title": "Providing spell checking and suggestions for text input" } - + ] - + } - + ]}, {"title": "Situation C: If a status message conveys information on the progress of a process:", "techniques": [ - + { "id": "TECH:ARIA23" , - "title": + "title": "Using role=log to identify sequential information updates" } , @@ -8450,17 +8450,17 @@ "id": "TECH:future-status-messages-1" , - "title": + "title": "Using role=\"progressbar\" (future link)" } , {"and": [ - + { "id": "TECH:ARIA22" , - "title": + "title": "Using role=status to present status messages" } , @@ -8468,23 +8468,23 @@ "id": "TECH:G193" , - "title": + "title": "Providing help by an assistant in the web page" } - + ]} - + ]} ]} - + ]}, {"advisory": [ - + { "id": "TECH:future-status-messages-1" , - "title": + "title": "Using aria-live regions with chat clients (future link)" } , @@ -8492,7 +8492,7 @@ "id": "TECH:future-status-messages-1" , - "title": + "title": "Using role=\"marquee\" (future link)" } , @@ -8500,7 +8500,7 @@ "id": "TECH:future-status-messages-1" , - "title": + "title": "Using role=\"timer\" (future link)" } , @@ -8508,7 +8508,7 @@ "id": "TECH:ARIA18" , - "title": + "title": "Using aria-alertdialog to Identify Errors" } , @@ -8516,18 +8516,18 @@ "id": "TECH:SCR14" , - "title": + "title": "Using scripts to make nonessential alerts optional" } - + ]}, {"failure": [ - + { "id": "TECH:F103" , - "title": + "title": "Failure of Success Criterion 4.1.3 due to providing status messages that cannot be programmatically determined through role or properties" } , @@ -8535,10 +8535,10 @@ "id": "TECH:future-status-messages-1" , - "title": + "title": "Using role=\"alert\" or aria-live=\"assertive\" on content which is not important and time-sensitive (future link)" } - + ]}] } ], @@ -8548,4 +8548,3 @@ } ] } - \ No newline at end of file