From ab301c97eb2ee91a6a23d3399aca6b1077d7ca03 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Wed, 12 Aug 2020 16:12:59 -0400 Subject: [PATCH 01/73] initial revert to 2.1 --- guidelines/index.html | 148 ++++------ .../sc/22/accessible-authentication.html | 10 - guidelines/sc/22/dragging.html | 12 - guidelines/sc/22/findable-help.html | 21 -- guidelines/sc/22/fixed-reference-points.html | 10 - .../sc/22/focus-appearance-enhanced.html | 15 - .../sc/22/focus-appearance-minimum.html | 19 -- guidelines/sc/22/focus-visible.html | 12 - guidelines/sc/22/hidden-controls.html | 11 - guidelines/sc/22/pointer-target-spacing.html | 19 -- guidelines/sc/22/redundant-entry.html | 17 -- .../terms/22/cognitive-function-test.html | 16 - guidelines/terms/22/dragging-movement.html | 7 - .../terms/22/electronic-publication.html | 6 - .../terms/22/focus-indication-area.html | 7 - guidelines/terms/22/focus.html | 8 - guidelines/terms/22/pagebreak-locators.html | 16 - guidelines/terms/22/single-page-apps.html | 5 - .../22/accessible-authentication.html | 125 -------- understanding/22/dragging.html | 98 ------ understanding/22/findable-help.html | 152 ---------- understanding/22/fixed-reference-points.html | 121 -------- .../22/focus-appearance-enhanced.html | 124 -------- .../22/focus-appearance-minimum.html | 279 ------------------ understanding/22/hidden-controls.html | 111 ------- .../img/focus-indicator-box-shadow-only.png | Bin 6312 -> 0 bytes .../22/img/focus-indicator-box-shadow.png | Bin 8666 -> 0 bytes .../22/img/focus-indicator-checkboxs.png | Bin 9304 -> 0 bytes .../22/img/focus-indicator-checked.png | Bin 42278 -> 0 bytes .../22/img/focus-indicator-circle.png | Bin 14509 -> 0 bytes understanding/22/img/focus-indicator-icon.png | Bin 15766 -> 0 bytes .../img/focus-indicator-innerline-strong.png | Bin 2260 -> 0 bytes .../22/img/focus-indicator-innerline.png | Bin 15748 -> 0 bytes .../22/img/focus-indicator-inside.png | Bin 8532 -> 0 bytes .../22/img/focus-indicator-non-contrast.png | Bin 13125 -> 0 bytes .../22/img/focus-indicator-outerline.png | Bin 12396 -> 0 bytes .../22/img/focus-indicator-star-shadow.png | Bin 71875 -> 0 bytes .../22/img/focus-indicator-strong.png | Bin 13179 -> 0 bytes .../focus-indicator-thick-non-contrast.png | Bin 13050 -> 0 bytes .../img/focus-indicator-thin-non-contrast.png | Bin 12199 -> 0 bytes .../22/img/focus-indicator-underline.png | Bin 15679 -> 0 bytes .../22/img/pointer-target-example1.png | Bin 50360 -> 0 bytes .../22/img/pointer-target-example2.png | Bin 54402 -> 0 bytes .../22/img/pointer-target-example3.png | Bin 30035 -> 0 bytes .../22/img/pointer-target-example4.png | Bin 43284 -> 0 bytes .../22/img/pointer-target-example5.png | Bin 299906 -> 0 bytes understanding/22/pointer-target-spacing.html | 153 ---------- understanding/22/redundant-entry.html | 91 ------ 48 files changed, 62 insertions(+), 1551 deletions(-) delete mode 100644 guidelines/sc/22/accessible-authentication.html delete mode 100644 guidelines/sc/22/dragging.html delete mode 100644 guidelines/sc/22/findable-help.html delete mode 100644 guidelines/sc/22/fixed-reference-points.html delete mode 100644 guidelines/sc/22/focus-appearance-enhanced.html delete mode 100644 guidelines/sc/22/focus-appearance-minimum.html delete mode 100644 guidelines/sc/22/focus-visible.html delete mode 100644 guidelines/sc/22/hidden-controls.html delete mode 100644 guidelines/sc/22/pointer-target-spacing.html delete mode 100644 guidelines/sc/22/redundant-entry.html delete mode 100644 guidelines/terms/22/cognitive-function-test.html delete mode 100644 guidelines/terms/22/dragging-movement.html delete mode 100644 guidelines/terms/22/electronic-publication.html delete mode 100644 guidelines/terms/22/focus-indication-area.html delete mode 100644 guidelines/terms/22/focus.html delete mode 100644 guidelines/terms/22/pagebreak-locators.html delete mode 100644 guidelines/terms/22/single-page-apps.html delete mode 100644 understanding/22/accessible-authentication.html delete mode 100644 understanding/22/dragging.html delete mode 100644 understanding/22/findable-help.html delete mode 100644 understanding/22/fixed-reference-points.html delete mode 100644 understanding/22/focus-appearance-enhanced.html delete mode 100644 understanding/22/focus-appearance-minimum.html delete mode 100644 understanding/22/hidden-controls.html delete mode 100644 understanding/22/img/focus-indicator-box-shadow-only.png delete mode 100644 understanding/22/img/focus-indicator-box-shadow.png delete mode 100644 understanding/22/img/focus-indicator-checkboxs.png delete mode 100644 understanding/22/img/focus-indicator-checked.png delete mode 100644 understanding/22/img/focus-indicator-circle.png delete mode 100644 understanding/22/img/focus-indicator-icon.png delete mode 100644 understanding/22/img/focus-indicator-innerline-strong.png delete mode 100644 understanding/22/img/focus-indicator-innerline.png delete mode 100644 understanding/22/img/focus-indicator-inside.png delete mode 100644 understanding/22/img/focus-indicator-non-contrast.png delete mode 100644 understanding/22/img/focus-indicator-outerline.png delete mode 100644 understanding/22/img/focus-indicator-star-shadow.png delete mode 100644 understanding/22/img/focus-indicator-strong.png delete mode 100644 understanding/22/img/focus-indicator-thick-non-contrast.png delete mode 100644 understanding/22/img/focus-indicator-thin-non-contrast.png delete mode 100644 understanding/22/img/focus-indicator-underline.png delete mode 100644 understanding/22/img/pointer-target-example1.png delete mode 100644 understanding/22/img/pointer-target-example2.png delete mode 100644 understanding/22/img/pointer-target-example3.png delete mode 100644 understanding/22/img/pointer-target-example4.png delete mode 100644 understanding/22/img/pointer-target-example5.png delete mode 100644 understanding/22/pointer-target-spacing.html delete mode 100644 understanding/22/redundant-entry.html diff --git a/guidelines/index.html b/guidelines/index.html index a2d19623d2..a5fcf829eb 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -3,7 +3,7 @@ - Web Content Accessibility Guidelines (WCAG) 2.2 + Web Content Accessibility Guidelines (WCAG) 2.1 @@ -13,20 +13,20 @@
-

Web Content Accessibility Guidelines (WCAG) 2.2 covers a wide range of recommendations for making Web content more accessible. Following these guidelines will make content more accessible to a wider range of people with disabilities, including accommodations for blindness and low vision, deafness and hearing loss, limited movement, speech disabilities, photosensitivity, and combinations of these, and some accommodation for learning disabilities and cognitive limitations; but will not address every user need for people with these disabilities. These guidelines address accessibility of web content on desktops, laptops, tablets, and mobile devices. Following these guidelines will also often make Web content more usable to users in general.

-

WCAG 2.2 success criteria are written as testable statements that are not technology-specific. Guidance about satisfying the success criteria in specific technologies, as well as general information about interpreting the success criteria, is provided in separate documents. See Web Content Accessibility Guidelines (WCAG) Overview for an introduction and links to WCAG technical and educational material.

-

WCAG 2.2 extends Web Content Accessibility Guidelines 2.1 [[WCAG21]], which was published as a W3C Recommendation June 2018. Content that conforms to WCAG 2.2 also conforms to WCAG 2.0 and WCAG 2.1. The WG intends that for policies requiring conformance to WCAG 2.0 or WCAG 2.1, WCAG 2.2 can provide an alternate means of conformance. The publication of WCAG 2.2 does not deprecate or supersede WCAG 2.0 or WCAG 2.1. While WCAG 2.0 and WCAG 2.1 remain W3C Recommendations, the W3C advises the use of WCAG 2.2 to maximize future applicability of accessibility efforts. The W3C also encourages use of the most current version of WCAG when developing or updating Web accessibility policies.

+

Web Content Accessibility Guidelines (WCAG) 2.1 covers a wide range of recommendations for making Web content more accessible. Following these guidelines will make content more accessible to a wider range of people with disabilities, including accommodations for blindness and low vision, deafness and hearing loss, limited movement, speech disabilities, photosensitivity, and combinations of these, and some accommodation for learning disabilities and cognitive limitations; but will not address every user need for people with these disabilities. These guidelines address accessibility of web content on desktops, laptops, tablets, and mobile devices. Following these guidelines will also often make Web content more usable to users in general.

+

WCAG 2.1 success criteria are written as testable statements that are not technology-specific. Guidance about satisfying the success criteria in specific technologies, as well as general information about interpreting the success criteria, is provided in separate documents. See Web Content Accessibility Guidelines (WCAG) Overview for an introduction and links to WCAG technical and educational material.

+

WCAG 2.1 extends Web Content Accessibility Guidelines 2.0 [[!WCAG20]], which was published as a W3C Recommendation December 2008. Content that conforms to WCAG 2.1 also conforms to WCAG 2.0. The WG intends that for policies requiring conformance to WCAG 2.0, WCAG 2.1 can provide an alternate means of conformance. The publication of WCAG 2.1 does not deprecate or supersede WCAG 2.0. While WCAG 2.0 remains a W3C Recommendation, the W3C advises the use of WCAG 2.1 to maximize future applicability of accessibility efforts. The W3C also encourages use of the most current version of WCAG when developing or updating Web accessibility policies.

-

This is an Editors' Draft of Web Content Accessibility Guidelines (WCAG) 2.2. WCAG 2.1 is a W3C Recommendation.

-

To comment, file an issue in the W3C WCAG GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

+

This is an Editors' Draft of Web Content Accessibility Guidelines (WCAG) 2.1. WCAG 2.1 is a W3C Recommendation. This draft incorporates errata and are described in the change log. At some point these changes might be incorporated into a Edited or Amended Recommendation.

+

To comment, file an issue in the W3C WCAG GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

Introduction

Background on WCAG 2

-

Web Content Accessibility Guidelines (WCAG) 2.2 defines how to make Web content more accessible to people with disabilities. Accessibility involves a wide range of disabilities, including visual, auditory, physical, speech, cognitive, language, learning, and neurological disabilities. Although these guidelines cover a wide range of issues, they are not able to address the needs of people with all types, degrees, and combinations of disability. These guidelines also make Web content more usable by older individuals with changing abilities due to aging and often improve usability for users in general.

-

WCAG 2.2 is developed through the W3C process in cooperation with individuals and organizations around the world, with a goal of providing a shared standard for Web content accessibility that meets the needs of individuals, organizations, and governments internationally. WCAG 2.2 builds on WCAG 2.0 [[WCAG20]] and WCAG 2.1 [[WCAG21]], which in turn built on WCAG 1.0 [[WAI-WEBCONTENT]] and is designed to apply broadly to different Web technologies now and in the future, and to be testable with a combination of automated testing and human evaluation. For an introduction to WCAG, see the Web Content Accessibility Guidelines (WCAG) Overview.

+

Web Content Accessibility Guidelines (WCAG) 2.1 defines how to make Web content more accessible to people with disabilities. Accessibility involves a wide range of disabilities, including visual, auditory, physical, speech, cognitive, language, learning, and neurological disabilities. Although these guidelines cover a wide range of issues, they are not able to address the needs of people with all types, degrees, and combinations of disability. These guidelines also make Web content more usable by older individuals with changing abilities due to aging and often improve usability for users in general.

+

WCAG 2.1 is developed through the W3C process in cooperation with individuals and organizations around the world, with a goal of providing a shared standard for Web content accessibility that meets the needs of individuals, organizations, and governments internationally. WCAG 2.1 builds on WCAG 2.0 [[!WCAG20]], which in turn built on WCAG 1.0 [[WAI-WEBCONTENT]] and is designed to apply broadly to different Web technologies now and in the future, and to be testable with a combination of automated testing and human evaluation. For an introduction to WCAG, see the Web Content Accessibility Guidelines (WCAG) Overview.

Significant challenges were encountered in defining additional criteria to address cognitive, language, and learning disabilities, including a short timeline for development as well as challenges in reaching consensus on testability, implementability, and international considerations of proposals. Work will carry on in this area in future versions of WCAG. We encourage authors to refer to our supplemental guidance on improving inclusion for people with disabilities, including learning and cognitive disabilities, people with low-vision, and more.

@@ -52,70 +52,78 @@

WCAG 2 Layers of Guidance

Success Criteria - For each guideline, testable success criteria are provided to allow WCAG 2.2 to be used where requirements and conformance testing are necessary such as in design specification, purchasing, regulation, and contractual agreements. In order to meet the needs of different groups and different situations, three levels of conformance are defined: A (lowest), AA, and AAA (highest). Additional information on WCAG levels can be found in Understanding Levels of Conformance.

  • -

    Sufficient and Advisory Techniques - For each of the guidelines and success criteria in the WCAG 2.2 document itself, the working group has also documented a wide variety of techniques. The techniques are informative and fall into two categories: those that are sufficient for meeting the success criteria and those that are advisory. The advisory techniques go beyond what is required by the individual success criteria and allow authors to better address the guidelines. Some advisory techniques address accessibility barriers that are not covered by the testable success criteria. Where common failures are known, these are also documented. See also Sufficient and Advisory Techniques in Understanding WCAG 2.2.

    +

    Sufficient and Advisory Techniques - For each of the guidelines and success criteria in the WCAG 2.1 document itself, the working group has also documented a wide variety of techniques. The techniques are informative and fall into two categories: those that are sufficient for meeting the success criteria and those that are advisory. The advisory techniques go beyond what is required by the individual success criteria and allow authors to better address the guidelines. Some advisory techniques address accessibility barriers that are not covered by the testable success criteria. Where common failures are known, these are also documented. See also Sufficient and Advisory Techniques in Understanding WCAG 2.1.

  • All of these layers of guidance (principles, guidelines, success criteria, and sufficient and advisory techniques) work together to provide guidance on how to make content more accessible. Authors are encouraged to view and apply all layers that they are able to, including the advisory techniques, in order to best address the needs of the widest possible range of users.

    -

    Note that even content that conforms at the highest level (AAA) will not be accessible to individuals with all types, degrees, or combinations of disability, particularly in the cognitive, language, and learning areas. Authors are encouraged to consider the full range of techniques, including the advisory techniques, as well as to seek relevant advice about current best practice to ensure that Web content is accessible, as far as possible, to this community. Metadata may assist users in finding content most suitable for their needs.

    +

    Note that even content that conforms at the highest level (AAA) will not be accessible to individuals with all types, degrees, or combinations of disability, particularly in the cognitive language and learning areas. Authors are encouraged to consider the full range of techniques, including the advisory techniques, as well as to seek relevant advice about current best practice to ensure that Web content is accessible, as far as possible, to this community. Metadata may assist users in finding content most suitable for their needs.

    -

    WCAG 2.2 Supporting Documents

    -

    The WCAG 2.2 document is designed to meet the needs of those who need a stable, referenceable technical standard. Other documents, called supporting documents, are based on the WCAG 2.2 document and address other important purposes, including the ability to be updated to describe how WCAG would be applied with new technologies. Supporting documents include:

    +

    WCAG 2.1 Supporting Documents

    +

    The WCAG 2.1 document is designed to meet the needs of those who need a stable, referenceable technical standard. Other documents, called supporting documents, are based on the WCAG 2.1 document and address other important purposes, including the ability to be updated to describe how WCAG would be applied with new technologies. Supporting documents include:

    1. -

      How to Meet WCAG 2.2 - A customizable quick reference to WCAG 2.2 that includes all of the guidelines, success criteria, and techniques for authors to use as they are developing and evaluating Web content. This includes content from WCAG 2.0, 2.1 2.2 and can be filtered in many ways to help authors focus on relevant content.

      +

      How to Meet WCAG 2.1 - A customizable quick reference to WCAG 2.1 that includes all of the guidelines, success criteria, and techniques for authors to use as they are developing and evaluating Web content. This includes content from WCAG 2.0 and WCAG 2.1 and can be filtered in many ways to help authors focus on relevant content.

    2. -

      Understanding WCAG 2.2 - A guide to understanding and implementing WCAG 2.2. There is a short "Understanding" document for each guideline and success criterion in WCAG 2.2 as well as key topics.

      +

      Understanding WCAG 2.1 - A guide to understanding and implementing WCAG 2.1. There is a short "Understanding" document for each guideline and success criterion in WCAG 2.1 as well as key topics.

    3. -

      Techniques for WCAG 2.2 - A collection of techniques and common failures, each in a separate document that includes a description, examples, code and tests.

      +

      Techniques for WCAG 2.1 - A collection of techniques and common failures, each in a separate document that includes a description, examples, code and tests.

    4. The WCAG Documents - A diagram and description of how the technical documents are related and linked.

    -

    See Web Content Accessibility Guidelines (WCAG) Overview for a description of the WCAG 2.2 supporting material, including education resources related to WCAG 2. Additional resources covering topics such as the business case for Web accessibility, planning implementation to improve the accessibility of Web sites, and accessibility policies are listed in WAI Resources.

    +

    See Web Content Accessibility Guidelines (WCAG) Overview for a description of the WCAG 2.1 supporting material, including education resources related to WCAG 2. Additional resources covering topics such as the business case for Web accessibility, planning implementation to improve the accessibility of Web sites, and accessibility policies are listed in WAI Resources.

    -

    Requirements for WCAG 2.2

    -

    WCAG 2.2 meets a set of requirements for WCAG 2.2 which, in turn, inherit requirements from previous WCAG 2 versions. Requirements structure the overall framework of guidelines and ensure backwards compatibility. The Working Group also used a less formal set of acceptance criteria for success criteria, to help ensure success criteria are similar in style and quality to those in WCAG 2.0. These requirements constrained what could be included in WCAG 2.2. This constraint was important to preserve its nature as a dot-release of WCAG 2.

    +

    Requirements for WCAG 2.1

    +

    WCAG 2.1 meets a set of requirements for WCAG 2.1 which, in turn, inherit requirements from WCAG 2.0. Requirements structure the overall framework of guidelines and ensure backwards compatibility. The Working Group also used a less formal set of acceptance criteria for success criteria, to help ensure success criteria are similar in style and quality to those in WCAG 2.0. These requirements constrained what could be included in WCAG 2.1. This constraint was important to preserve its nature as a dot-release of WCAG 2.

    -

    Comparison with WCAG 2.1

    -

    WCAG 2.2 was initiated with the goal to continue the work of WCAG 2.1: Improving accessibility guidance for three major groups: users with cognitive or learning disabilities, users with low vision, and users with disabilities on mobile devices. Many ways to meet these needs were proposed and evaluated, and a set of these were refined by the Working Group. Structural requirements inherited from WCAG 2.0, clarity and impact of proposals, and timeline led to the final set of success criteria included in this version. The Working Group considers that WCAG 2.2 incrementally advances web content accessibility guidance for all these areas, but underscores that not all user needs are met by these guidelines.

    +

    Comparison with WCAG 2.0

    +

    WCAG 2.1 was initiated with the goal to improve accessibility guidance for three major groups: users with cognitive or learning disabilities, users with low vision, and users with disabilities on mobile devices. Many ways to meet these needs were proposed and evaluated, and a set of these were refined by the Working Group. Structural requirements inherited from WCAG 2.0, clarity and impact of proposals, and timeline led to the final set of success criteria included in this version. The Working Group considers that WCAG 2.1 incrementally advances web content accessibility guidance for all these areas, but underscores that not all user needs are met by these guidelines.

    -

    WCAG 2.2 builds on and is backwards compatible with WCAG 2.1, meaning web pages that conform to WCAG 2.2 also conform to WCAG 2.1, which would also conform to WCAG 2.0. Authors that are required by policy to conform with WCAG 2.0 or 2.1 will be able to update content to WCAG 2.2 without losing conformance with previous versions. Authors following more than one version of the guidelines should be aware of the following differences:

    +

    WCAG 2.1 builds on and is backwards compatible with WCAG 2.0, meaning web pages that conform to WCAG 2.1 also conform to WCAG 2.0. Authors that are required by policy to conform with WCAG 2.0 will be able to update content to WCAG 2.1 without losing conformance with WCAG 2.0. Authors following both sets of guidelines should be aware of the following differences:

    -

    New Features in WCAG 2.2

    -

    WCAG 2.2 extends WCAG 2.1 by adding new success criteria, definitions to support them, and guidelines to organize the additions. This additive approach helps to make it clear that sites which conform to WCAG 2.2 also conform to WCAG 2.1. The Accessibility Guidelines Working Group recommends that sites adopt WCAG 2.2 as their new conformance target, even if formal obligations mention previous versions, to provide improved accessibility and to anticipate future policy changes.

    -

    The following Success Criteria are new in WCAG 2.2:

    +

    New Features in WCAG 2.1

    +

    WCAG 2.1 extends WCAG 2.0 by adding new success criteria, definitions to support them, guidelines to organize the additions, and a couple additions to the conformance section. This additive approach helps to make it clear that sites which conform to WCAG 2.1 also conform to WCAG 2.0, thereby meeting conformance obligations that are specific to WCAG 2.0. The Accessibility Guidelines Working Group recommends that sites adopt WCAG 2.1 as their new conformance target, even if formal obligations mention WCAG 2.0, to provide improved accessibility and to anticipate future policy changes.

    +

    The following Success Criteria are new in WCAG 2.1:

    The new success criteria may reference new terms that have also been added to the glossary and form part of the normative requirements of the success criteria.

    -

    In addition to the above new Success Criteria, Focus Visible has been promoted from Level AA to Level A.

    +

    In the Conformance section, a third note about page variants has been added to Full Pages, and an option for machine-readable metadata added to Optional Components of a Conformance Claim.

    -

    Numbering in WCAG 2.2

    -

    In order to avoid confusion for implementers for whom backwards compatibility to WCAG 2 versions is important, new success criteria in WCAG 2.2 have been appended to the end of the set of success criteria within their guideline. This avoids the need to change the section number of success criteria from WCAG 2, which would be caused by inserting new success criteria between existing success criteria in the guideline, but it means success criteria in each guideline are no longer grouped by conformance level. The order of success criteria within each guideline does not imply information about conformance level; only the conformance level indicator (A / AA / AAA) on the success criterion itself indicates this. The WCAG 2.2 Quick Reference will provide a way to view success criteria grouped by conformance level, along with many other filter and sort options.

    +

    Numbering in WCAG 2.1

    +

    In order to avoid confusion for implementers for whom backwards compatibility to WCAG 2.0 is important, new success criteria in WCAG 2.1 have been appended to the end of the set of success criteria within their guideline. This avoids the need to change the section number of success criteria from WCAG 2.0, which would be caused by inserting new success criteria between existing success criteria in the guideline, but it means success criteria in each guideline are no longer grouped by conformance level. The order of success criteria within each guideline does not imply information about conformance level; only the conformance level indicator (A / AA / AAA) on the success criterion itself indicates this. The WCAG 2.1 Quick Reference provides ways to view success criteria grouped by conformance level, along with many other filter and sort options.

    -

    Conformance to WCAG 2.2

    -

    WCAG 2.2 uses the same conformance model as WCAG 2.0. It is intended that sites that conform to WCAG 2.2 also conform to WCAG 2.0 and WCAG 2.1, which means they meet the requirements of any policies that reference WCAG 2.0 or WCAG 2.1, while also better meeting the needs of users on the current Web.

    +

    Conformance to WCAG 2.1

    +

    WCAG 2.1 uses the same conformance model as WCAG 2.0 with a couple additions, which is described in the Conformance section. It is intended that sites that conform to WCAG 2.1 also conform to WCAG 2.0, which means they meet the requirements of any policies that reference WCAG 2.0, while also better meeting the needs of users on the current Web.

    Later Versions of Accessibility Guidelines

    -

    In parallel with WCAG 2.2, the Accessibility Guidelines Working Group is developing another major version of accessibility guidelines. The result of this work is expected to be a more substantial restructuring of web accessibility guidance than would be realistic for dot-releases of WCAG 2. The work follows a research-focused, user-centered design methodology to produce the most effective and flexible outcome, including the roles of content authoring, user agent support, and authoring tool support. This is a multi-year effort, so WCAG 2.2 is needed as an interim measure to provide updated web accessibility guidance to reflect changes on the web since the publication of WCAG 2.0. The Working Group might also develop additional interim versions, continuing with WCAG 2.2, on a similar short timeline to provide additional support while the major version is completed.

    +

    In parallel with WCAG 2.1, the Accessibility Guidelines Working Group is developing another major version of accessibility guidelines. The result of this work is expected to be a more substantial restructuring of web accessibility guidance than would be realistic for dot-releases of WCAG 2. The work follows a research-focused, user-centered design methodology to produce the most effective and flexible outcome, including the roles of content authoring, user agent support, and authoring tool support. This is a multi-year effort, so WCAG 2.1 is needed as an interim measure to provide updated web accessibility guidance to reflect changes on the web since the publication of WCAG 2.0. The Working Group might also develop additional interim versions, continuing with WCAG 2.2, on a similar short timeline to provide additional support while the major version is completed.

    @@ -239,7 +247,7 @@

    Enough Time

    -
    +

    Seizures and Physical Reactions

    Do not design content in a way that is known to cause seizures or physical reactions.

    @@ -267,7 +275,7 @@

    Navigable

    -
    +
    @@ -275,16 +283,11 @@

    Navigable

    -
    - -
    - -
    -
    -
    +

    Input Modalities

    +

    New

    Make it easier for users to operate functionality through various inputs beyond keyboard.

    @@ -299,10 +302,6 @@

    Input Modalities

    -
    - -
    -
    @@ -342,10 +341,6 @@

    Predictable

    -
    - -
    -
    @@ -364,10 +359,6 @@

    Input Assistance

    -
    - -
    -
    @@ -391,18 +382,18 @@

    Compatible

    Conformance

    -

    This section lists requirements for conformance to WCAG 2.2. It also gives information about how to make conformance claims, which are optional. Finally, it describes what it means to be accessibility supported, since only accessibility-supported ways of using technologies can be relied upon for conformance. Understanding Conformance includes further explanation of the accessibility-supported concept.

    +

    This section lists requirements for conformance to WCAG 2.1. It also gives information about how to make conformance claims, which are optional. Finally, it describes what it means to be accessibility supported, since only accessibility-supported ways of using technologies can be relied upon for conformance. Understanding Conformance includes further explanation of the accessibility-supported concept.

    Interpreting Normative Requirements

    -

    The main content of WCAG 2.2 is normative and defines requirements that impact conformance claims. Introductory material, appendices, sections marked as "non-normative", diagrams, examples, and notes are informative (non-normative). Non-normative material provides advisory information to help interpret the guidelines but does not create requirements that impact a conformance claim.

    +

    The main content of WCAG 2.1 is normative and defines requirements that impact conformance claims. Introductory material, appendices, sections marked as "non-normative", diagrams, examples, and notes are informative (non-normative). Non-normative material provides advisory information to help interpret the guidelines but does not create requirements that impact a conformance claim.

    The key words MAY, MUST, MUST NOT, NOT RECOMMENDED, RECOMMENDED, SHOULD, and SHOULD NOT are to be interpreted as described in [[RFC2119]].

    Conformance Requirements

    -

    In order for a Web page to conform to WCAG 2.2, all of the following conformance requirements must be satisfied:

    +

    In order for a Web page to conform to WCAG 2.1, all of the following conformance requirements must be satisfied:

    @@ -471,10 +462,10 @@

    Conformance Claims (Optional)

    Required Components of a Conformance Claim

    -

    Conformance claims are not required. Authors can conform to WCAG 2.2 without making a claim. However, if a conformance claim is made, then the conformance claim must include the following information:

    +

    Conformance claims are not required. Authors can conform to WCAG 2.1 without making a claim. However, if a conformance claim is made, then the conformance claim must include the following information:

    1. Date of the claim
    2. -
    3. Guidelines title, version and URI "Web Content Accessibility Guidelines 2.2 at https://www.w3.org/TR/WCAG22/"
    4. +
    5. Guidelines title, version and URI "Web Content Accessibility Guidelines 2.1 at https://www.w3.org/TR/WCAG21/"
    6. Conformance level satisfied: (Level A, AA or AAA)
    7. A concise description of the Web pages, such as a list of URIs for which the claim is made, including whether subdomains are included in the claim.

      @@ -495,7 +486,7 @@

      Optional Components of a Conformance Claim

    8. A list of success criteria beyond the level of conformance claimed that have been met. This information should be provided in a form that users can use, preferably machine-readable metadata.
    9. A list of the specific technologies that are " used but not relied upon."
    10. A list of user agents, including assistive technologies that were used to test the content.
    11. -
    12. A list of specific accessibility characteristics of the content, provided in machine-readable metadata.
    13. +
    14. A list of specific accessibility characteristics of the content, provided in machine-readable metadata.
    15. Information about any additional steps taken that go beyond the success criteria to enhance accessibility.
    16. A machine-readable metadata version of the list of specific technologies that are relied upon.
    17. A machine-readable metadata version of the conformance claim.
    18. @@ -517,7 +508,7 @@

      Statement of Partial Conformance - Third Party Content

      OR

    19. -

      A "statement of partial conformance" may be made that the page does not conform, but could conform if certain parts were removed. The form of that statement would be, "This page does not conform, but would conform to WCAG 2.2 at level X if the following parts from uncontrolled sources were removed." In addition, the following would also be true of uncontrolled content that is described in the statement of partial conformance:

      +

      A "statement of partial conformance" may be made that the page does not conform, but could conform if certain parts were removed. The form of that statement would be, "This page does not conform, but would conform to WCAG 2.1 at level X if the following parts from uncontrolled sources were removed." In addition, the following would also be true of uncontrolled content that is described in the statement of partial conformance:

      1. It is not content that is under the author's control.
      2. It is described in a way that users can identify (e.g., they cannot be described as "all parts that we do not control" unless they are clearly marked as such.)
      3. @@ -528,7 +519,7 @@

        Statement of Partial Conformance - Third Party Content

        Statement of Partial Conformance - Language

        -

        A "statement of partial conformance due to language" may be made when the page does not conform, but would conform if accessibility support existed for (all of) the language(s) used on the page. The form of that statement would be, "This page does not conform, but would conform to WCAG 2.2 at level X if accessibility support existed for the following language(s):"

        +

        A "statement of partial conformance due to language" may be made when the page does not conform, but would conform if accessibility support existed for (all of) the language(s) used on the page. The form of that statement would be, "This page does not conform, but would conform to WCAG 2.1 at level X if accessibility support existed for the following language(s):"

    @@ -564,8 +555,6 @@

    Glossary

    -
    -
    @@ -582,8 +571,6 @@

    Glossary

    -
    -
    @@ -592,10 +579,6 @@

    Glossary

    -
    - -
    -
    @@ -743,16 +726,9 @@

    Glossary

    Change Log

    -

    This section shows substantive changes made in WCAG 2.2 since WCAG 2.1. Errata fixes to WCAG 2.1 have also been incorporated into WCAG 2.2.

    -

    The full commit history to WCAG 2.2 is available.

    - +

    This section shows changes proposed for WCAG 2.1 since its publication as a W3C Recommendation. These changes are also recorded as errata.

    +

    The full commit history to WCAG 2.1 is available.

    +

    No changes have been made to date.

    Acknowledgments

    diff --git a/guidelines/sc/22/accessible-authentication.html b/guidelines/sc/22/accessible-authentication.html deleted file mode 100644 index 1c5d0def48..0000000000 --- a/guidelines/sc/22/accessible-authentication.html +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Accessible Authentication

    - -

    A

    -

    New

    - -

    If an authentication process relies on a cognitive function test, at least one other method must also be available that does not rely on a cognitive function test.

    - -
    \ No newline at end of file diff --git a/guidelines/sc/22/dragging.html b/guidelines/sc/22/dragging.html deleted file mode 100644 index 5b5debcdcb..0000000000 --- a/guidelines/sc/22/dragging.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    Dragging

    - -

    AA

    -

    New

    - -

    All functionality that uses a dragging movement for operation can be operated by a single pointer without dragging, unless dragging is essential.

    -

    This requirement applies to web content that interprets pointer actions (i.e. this does not apply to actions that are required to operate the user agent or assistive technology).

    -

    Is there an assistive technology that helps for people with mobility impairments? The group would like feedback on the frontier between AT & author responsibility.

    - -
    diff --git a/guidelines/sc/22/findable-help.html b/guidelines/sc/22/findable-help.html deleted file mode 100644 index 52acaf7b19..0000000000 --- a/guidelines/sc/22/findable-help.html +++ /dev/null @@ -1,21 +0,0 @@ -
    - -

    Findable Help

    - -

    A

    -

    New

    - -

    For single page Web applications or any set of Web pages, if one of the following is available, - then access to at least one option is included in the same relative order on each page:

    - -
      -
    • Human contact details;
    • -
    • Human contact mechanism;
    • -
    • Self-help option;
    • -
    • A fully automated contact mechanism.
    • -
    - -

    Access to help mechanisms may be provided directly on the page, or may be provided via a direct link to a different page containing the information"

    - -
    - diff --git a/guidelines/sc/22/fixed-reference-points.html b/guidelines/sc/22/fixed-reference-points.html deleted file mode 100644 index 75dca5d3fb..0000000000 --- a/guidelines/sc/22/fixed-reference-points.html +++ /dev/null @@ -1,10 +0,0 @@ -
    - -

    Fixed Reference Points

    - -

    A

    -

    New

    - -

    When a web page or set of web pages is an electronic publication with pagebreak locators, a mechanism is available to navigate to each locator and each locator maintains its place in the flow of content, even when the formatting or platform change.

    - -
    diff --git a/guidelines/sc/22/focus-appearance-enhanced.html b/guidelines/sc/22/focus-appearance-enhanced.html deleted file mode 100644 index 6d273e445f..0000000000 --- a/guidelines/sc/22/focus-appearance-enhanced.html +++ /dev/null @@ -1,15 +0,0 @@ -
    - -

    Focus Appearance (Enhanced)

    - -

    AAA

    -

    New

    - -

    For the keyboard focus indicator of each User Interface Component, all of the following are true:

    -
      -
    • Minimum area: The focus indication area is greater than or equal to a 2 CSS pixel solid border around the control.
    • -
    • Change of contrast: Color changes used to indicate focus have a contrast ratio of at least 4.5:1 with the colors changed from the unfocused control.
    • -
    • Unobscured: No part of the focus indicator is hidden by author-created content.
    • -
    - -
    diff --git a/guidelines/sc/22/focus-appearance-minimum.html b/guidelines/sc/22/focus-appearance-minimum.html deleted file mode 100644 index dec386df50..0000000000 --- a/guidelines/sc/22/focus-appearance-minimum.html +++ /dev/null @@ -1,19 +0,0 @@ -
    - -

    Focus Appearance (Minimum)

    - -

    AA

    -

    New

    - -

    For the keyboard focus indicator of each User Interface Component, all of the following are true:

    -
      -
    • Minimum area: The focus indication area is greater than or equal to a 1 CSS pixel border of the focused control, or has a thickness of at least 8 CSS pixels along the shortest side of the element.
    • -
    • Change of contrast: The color change for the focus indication area has a contrast ratio of at least 3:1 with the colors of the unfocused state.
    • -
    • Adjacent contrast: The focus indication area has a contrast ratio of at least 3:1 against all adjacent colors for the minimum area or greater, or has a thickness of at least 2 CSS pixels.
    • -
    • Unobscured: The item with focus is not entirely hidden by author-created content.
    • -
    -

    A keyboard focus indicator which has a pattern or gradient may have parts that do not meet the 3:1 contrast ratio for the change of contrast, as long as an area equal to the minimum does meet the contrast ratio.

    -

    If the control has a visible boundary smaller than the hit area, the size measure is taken from the visible boundary.

    -

    The working group is interested in feedback about the minimum area metric, and if there are unusual scenarios where visible indicators are caught by the wording.

    - -
    diff --git a/guidelines/sc/22/focus-visible.html b/guidelines/sc/22/focus-visible.html deleted file mode 100644 index 4bfce04a33..0000000000 --- a/guidelines/sc/22/focus-visible.html +++ /dev/null @@ -1,12 +0,0 @@ -
    - -

    Focus Visible

    - -

    A

    -

    Changed

    - -

    Any keyboard operable user interface has a mode of operation where the keyboard focus - indicator is visible. -

    - -
    \ No newline at end of file diff --git a/guidelines/sc/22/hidden-controls.html b/guidelines/sc/22/hidden-controls.html deleted file mode 100644 index 271004466f..0000000000 --- a/guidelines/sc/22/hidden-controls.html +++ /dev/null @@ -1,11 +0,0 @@ -
    - -

    Hidden Controls

    - -

    AA

    -

    New

    - -

    Controls needed to progress or complete a process are visible at the time they are needed without requiring pointer hover or keyboard focus, - or a mechanism is available to make them persistently visible.

    - -
    diff --git a/guidelines/sc/22/pointer-target-spacing.html b/guidelines/sc/22/pointer-target-spacing.html deleted file mode 100644 index 754e2d339e..0000000000 --- a/guidelines/sc/22/pointer-target-spacing.html +++ /dev/null @@ -1,19 +0,0 @@ -
    - -

    Pointer Target Spacing

    - -

    AA

    -

    New

    - -

    For each target, there is an area with a width and height of at least 44 CSS pixels that includes it, and no other targets, except when:

    -
      -
    • Enlarge: A mechanism is available to change the CSS pixel size of each target, or its spacing, so there is an area with a width and height of at least 44 CSS pixels that includes it, and no other targets;
    • -
    • Inline: The target is in a sentence or block of text;
    • -
    • User agent: The size of the target is controlled by the user agent and is not modified by the author;
    • -
    • Essential: A particular presentation of the target is essential to the information being conveyed.
    • -
    -

    This criterion has been formulated to increase the hit-area of small targets, but the group would like feedback from providers of touch-screen devices if there is another way of forming the criteria to better complement the tap-heuristics used.

    -

    Are there issues with internationalization when describing inline links?

    -

    Are there issues with pop-over content overlapping targets triggering failures?

    - -
    diff --git a/guidelines/sc/22/redundant-entry.html b/guidelines/sc/22/redundant-entry.html deleted file mode 100644 index 5ad0664e0c..0000000000 --- a/guidelines/sc/22/redundant-entry.html +++ /dev/null @@ -1,17 +0,0 @@ -
    - -

    Redundant entry

    - -

    A

    -

    New

    - -

    For steps in a process, information previously entered by or provided to the user that is required on subsequent steps is either:

    -
      -
    • auto-populated, or
    • -
    • available for the user to select.
    • -
    -

    Exception: When re-entering the information is essential.

    -

    Security verification, such as repeating a password, is considered essential.

    -

    Editors' note: Are there issues storing the data so a user can access it in subsequent steps?

    -

    Editors' note: Are there broader exceptions needed than essential? E.g. for mandated or required information re-entry.

    -
    diff --git a/guidelines/terms/22/cognitive-function-test.html b/guidelines/terms/22/cognitive-function-test.html deleted file mode 100644 index 2ba59509ce..0000000000 --- a/guidelines/terms/22/cognitive-function-test.html +++ /dev/null @@ -1,16 +0,0 @@ -
    Cognitive function test
    -
    - -

    New

    - -

    A task that requires the user to remember, manipulate, or transcribe information. Examples include, but are not limited to:

    -
      -
    • memorization, such as remembering a username, password, set of characters, images, or patterns;
    • -
    • transcription, such as typing in characters;
    • -
    • use of correct spelling;
    • -
    • performance of calculations;
    • -
    • solving of puzzles.
    • -
    -

    Remembering your own name, email address, or phone number is not considered a cognitive function test.

    - -
    \ No newline at end of file diff --git a/guidelines/terms/22/dragging-movement.html b/guidelines/terms/22/dragging-movement.html deleted file mode 100644 index c52a96ff10..0000000000 --- a/guidelines/terms/22/dragging-movement.html +++ /dev/null @@ -1,7 +0,0 @@ -
    dragging movement
    -
    -

    New

    - -

    an operation where the pointer engages with an element on the down event and the element (or a representation of its position) follows the pointer

    -

    The element could be, for example, a list item, a text element, or an image.

    -
    diff --git a/guidelines/terms/22/electronic-publication.html b/guidelines/terms/22/electronic-publication.html deleted file mode 100644 index 96b6c73c5c..0000000000 --- a/guidelines/terms/22/electronic-publication.html +++ /dev/null @@ -1,6 +0,0 @@ -
    electronic publication
    -
    -

    New

    - -

    Content presented as a collection of related articles, document in the form of a book, textbook, magazine article, journal, a single journal article that is presented as having different pages, scholarly journal, or newspaper article in digital format.

    -
    diff --git a/guidelines/terms/22/focus-indication-area.html b/guidelines/terms/22/focus-indication-area.html deleted file mode 100644 index 0403f47654..0000000000 --- a/guidelines/terms/22/focus-indication-area.html +++ /dev/null @@ -1,7 +0,0 @@ -
    Focus indication area
    -
    -

    New

    -

    the pixels that change between the focused and unfocused states of a User Interface Component -

    - -
    \ No newline at end of file diff --git a/guidelines/terms/22/focus.html b/guidelines/terms/22/focus.html deleted file mode 100644 index 7e0f982b53..0000000000 --- a/guidelines/terms/22/focus.html +++ /dev/null @@ -1,8 +0,0 @@ -
    Focus
    -
    -

    New

    - -

    The point where the user’s input interacts with the web page. For example, tabbing through a page with a keyboard moves the focus. Clicking or tapping on the page would move the focus for mouse and touchscreen usage. Different inputs can be used by a user, but at any one time there would be one point of focus for the user with the last input used. -

    - -
    diff --git a/guidelines/terms/22/pagebreak-locators.html b/guidelines/terms/22/pagebreak-locators.html deleted file mode 100644 index dc263eeb18..0000000000 --- a/guidelines/terms/22/pagebreak-locators.html +++ /dev/null @@ -1,16 +0,0 @@ -
    pagebreak locators
    -
    -

    New

    - -

    Visual and/or programmatic markers that are arranged in a meaningful sequence to determine the location of a page in relation to others in the set.

    -

    Examples would be:

    -
      -
    • Corresponding pages between a print book and a digital version of the same publication. (A digital pixel precise manifestation of the published print version)
    • -
    • Page numbering in the print version of an ebook
    • -
    • Page numbering in an electronic version of the ebook
    • -
    • A digital book is published is with no print equivalent and page break locators are inserted which supports direct navigation across platforms and form factors.
    • -
    • Virtual page
    • -
    • Synchronizing reading people with different form factors and platforms, screen sizes, can be on the same page.
    • -
    - -
    diff --git a/guidelines/terms/22/single-page-apps.html b/guidelines/terms/22/single-page-apps.html deleted file mode 100644 index 3c6e34dfea..0000000000 --- a/guidelines/terms/22/single-page-apps.html +++ /dev/null @@ -1,5 +0,0 @@ -
    Single page Web application
    -
    -

    New

    -

    Pages obtained from a single URI that provide navigation which changes the meaning of the Web page

    -
    diff --git a/understanding/22/accessible-authentication.html b/understanding/22/accessible-authentication.html deleted file mode 100644 index e9f21c9556..0000000000 --- a/understanding/22/accessible-authentication.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Understanding Accessible Authentication - - - -

    Understanding Accessible Authentication

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - -
    - -

    Accessible Authentication Success Criteria text

    -
    -

    AA

    - -

    If an authentication process relies on a cognitive function test, at least one other method must also be available that does not rely on a cognitive function test.

    -
    -

    Cognitive function test definition

    -
    -

    A task that requires the user to remember, manipulate, or transcribe information. Examples include, but are not limited to:

    -
      -
    • memorization, such as remembering a username, password, set of characters, images or patterns;
    • -
    • transcription, such as typing in characters;
    • -
    • use of correct spelling;
    • -
    • performance of calculations;
    • -
    • solving of puzzles.
    • -
    -

    Remembering your own name, email address, or phone number is not considered a cognitive function test.

    -
    -
    - -
    -

    Intent of Accessible Authentication

    - -

    The purpose of this success criterion is to ensure there is an accessible, easy-to-use, and secure method to log in and access content. Most web sites rely on usernames and passwords for logging in. Memorizing a username and password (or transcribing it manually) places a very high or impossible burden upon people with certain cognitive disabilities.

    - -

    Cognitive function tests are known to be problematic for many people with cognitive disabilities. Whether it is remembering random strings of characters, a pattern gesture to perform on a touch screen, or identifying which images include a particular object, this form of test will exclude some people. When a cognitive function test is used, at least one other authentication method must be available which is not a cognitive function test.

    - -

    Web sites can employ username (or email) and password inputs as an authentication method if it meets Success Criterion 1.3.5 Input Purpose and password managers / browser functionality is not blocked. When properly marked up, browser features or password managers can save the user’s information and refill the login.

    - -

    If there is more than one step in the authentication process, such as with multi-factor authentication, all steps should comply with this success criterion. There should be a path through authentication that does not rely on cognitive function tests.

    - - - -
    -
    -

    Benefits of Accessible Authentication

    - -

    People with cognitive issues relating to memory, reading (e.g. dyslexia), numbers (e.g. dyscalculia), or perception-processing limitations will be able to authenticate irrespective of the level of their cognitive abilities.

    - -
    - -
    -

    Examples of Accessible Authentication

    - -
      -
    • A web site uses a properly marked up email and password as the login authentication.
    • -
    • A web site uses WebAuthn so the user can authenticate with their device instead of username/password. The user’s device could use any available modality. Common methods on laptops and phones are facial-scan, fingerprint, and pin number. The web site is not enforcing any particular use, it is assumed a user will setup a method that suits them.
    • -
    • A web site offers the ability to login with a 3rd party provider using the OAuth method.
    • -
    • A web site that requires 2-factor authentication allows for multiple options for the 2nd factor, including a USB-based method where the user simply presses a button to enter a time-based token.
    • -
    - -
    - - -
    -

    Techniques for Accessible Authentication

    - - -
    -

    Sufficient Techniques for Accessible Authentication

    - - -
      -
    1. - Email link authentication -
    2. -
    3. - @@ Providing a properly marked up email and password inputs. -
    4. -
    5. - @@ Providing WebAuthn as an alternative to username/password. -
    6. -
    7. - @@ Providing a 3rd party login using oAuth. -
    8. -
    9. - @@ Using two techniques provide 2 factor authentication. -
    10. -
    - -
    - -
    -

    Additional Techniques (Advisory) for Accessible Authentication

    - -
    - -
    -

    Failures for Accessible Authentication

    - -
    - -
    -
    -

    Resources

    - - - -
    - - - diff --git a/understanding/22/dragging.html b/understanding/22/dragging.html deleted file mode 100644 index 91e1fd1337..0000000000 --- a/understanding/22/dragging.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - Understanding Dragging - - - -

    Understanding Dragging

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - - -
    - -

    Dragging

    -
    -

    AA

    - -

    All functionality that uses a dragging movement for operation can be operated by a single pointer without dragging, unless dragging is essential.

    -

    This requirement applies to web content that interprets pointer actions (i.e. this does not apply to actions that are required to operate the user agent or assistive technology).

    -

    Is there an assistive technology that helps for people with mobility impairments? The group would like feedback on the frontier between AT & author responsibility.

    -
    -
    - -
    - -

    Intent of Dragging

    - - -

    The intent of this Success Criterion is to ensure functionality that uses a dragging movement (e.g. sliders, drag-and-drop interfaces) has another single pointer mode of operation without the need for the dexterity required to drag elements.

    - -

    Some people cannot perform dragging motions in a precise manner. Others use a specialized or adapted input device such as a head pointer, eye-gaze system, or speech-controlled mouse emulator, which makes dragging cumbersome, error-prone, or outright impossible.

    - -

    When an interface implements functionality that uses dragging motions, some users can tap or click, but not accurately maintain contact whilst performing a gesture. An alternative method must be provided so that users with mobility impairments that use a pointer (mouse, pen, or touch contact) can use the functionality.

    - -

    There is already a requirement for dragging features to be keyboard accessible, however, it is possible to create an interface that works with dragging and keyboard controls that does not work using only clicks or taps.

    - -
    -
    -

    Benefits of Dragging

    - -
      -
    • Users who struggle with performing path-based gestures can still operate an interface with a pointer interface.
    • -
    - -
    - -
    -

    Examples of Dragging

    - -
      -
    • A sortable list of elements may, after focussing a list element, provide adjacent controls for moving the element up or down in the list by simply tapping/clicking on those controls.
    • -
    • A kanban implementation may provide an additional pop-up menu for focused elements that can be activated by simple clicks/taps providing an option for moving the selected element to another kanban silo.
    • -
    • A radial control widget where the value can be set by dragging includes a text field that presents the current value and offers the input of the desired value via a keyboard (including on-screen virtual keyboards).
    • -
    • A map allows users to drag the view of the map around, and the map has up/down/left/right buttons to move the view as well.
    • -
    - -
    - -
    -

    Techniques for Dragging

    - - -
    -

    Sufficient Techniques for Dragging

    - - -
      -
    1. - Ensuring that a single pointer operable alternative is available for dragging movements that operate on content -
    2. -
    - -
    - -
    -

    Additional Techniques (Advisory) for Dragging

    - -
    - -
    -

    Failures for Dragging

    - - -
    - -
    - - - diff --git a/understanding/22/findable-help.html b/understanding/22/findable-help.html deleted file mode 100644 index b1888a60f0..0000000000 --- a/understanding/22/findable-help.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - Understanding Findable Help - - - -

    Understanding Findable Help

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - - -
    - -

    Findable Help

    -

    Success criteria text:

    -
    -

    A

    - -

    For single page Web applications or any set of Web pages, if one of the following is available, then access to at least one option is included in the same relative order on each page:

    -
      -
    • Human contact details;
    • -
    • Human contact mechanism;
    • -
    • Self-help option;
    • -
    • A fully automated contact mechanism.
    • -
    - -

    Access to help mechanisms may be provided directly on the page, or may be provided via a direct link to a different page containing the information"

    - -
    -

    Definition of Single page Web applications:

    -
    -

    Pages obtained from a single URI that provide navigation which changes the meaning of the Web page

    -
    -
    - -
    - -

    Intent of Findable Help

    - - -

    The intent of this success criterion is to ensure users can find help for completing tasks on a Web site. This is distinct from interface-level help, such as contextual help, features like spell checkers, and instructional text in a form.

    - -

    Locating the help mechanism in a consistent location across pages makes it easier for users to find it. For example, when a mechanism or link is located in the header of a Web page, it will be presented in the header of all pages within the set of Web pages.

    - -

    The location in a smaller viewport may be different than in a larger viewport but the mechanism or link will remain in the same location throughout the size. The location should remain consistent both visually and programmatically.

    - -

    While it would be best for all sites to offer this type of help, the requirement is for:

    -
      -
    • single page Web applications, or
    • -
    • any set of Web pages with blocks of content that are repeated on multiple Web pages,
    • -
    -

    and is actively supported.

    - -

    When having problems completing a task on a Web site, people with some types of disabilities may not be able to work through the issue without further help. Issues could include difficulty: - completing a form, or finding a document or page which provides information required to complete a task.

    - -

    Without help, some users may abandon the task. They may also fail to correctly complete a task, or they may require assistance from people who do not necessarily keep private information secure.

    - -

    Self help methods beyond the site, such as using internet search to find the contact information for an organization, can be too difficult. Further, the user’s disability may make it more difficult to find the help available (such as a “contact us” link, phone number, or support page) if the information is not present within a few interactions (e.g., displayed in the header, or via a menu). In addition, for some users with disabilities, struggling to complete a task on a site may cause additional cognitive challenges when searching for help within the site.

    - -

    When a user is quickly able to find help, they are able to complete the task even if they encounter challenges.

    - -

    At least one of the following mechanisms to get help should be included:

    -
      -
    • Human contact details such as a phone number, email address, hours of operation.
    • -
    • Human contact mechanism such as a messaging system, chat client, contact form, social media channel.
    • -
    • Self-help option such as an up-to-date Frequently Asked Questions, How Do I page, Support page.
    • -
    • A fully automated contact mechanism such as a chatbot.
    • -
    - -

    The human contact details should enable the user to connect with the organization or the part of the organization responsible for the content. For example, an online jobs / recruitment portal should provide a contact method for the team that supports the recruitment portal and not a catch-all for the entire company. Each layer of contact added prolongs the time before the user will receive help.

    - -

    The human contact mechanism enables a person to express what they are looking for using their own words. For some with cognitive disabilities, this may be the best way for them to find an answer to their problem.

    - -

    For pages for which no human support is available, a self-help option should say that no human support is available. Self-help options should go beyond allowing the user to search within the site. Contextual help is still recommended (See SC 3.3.5 for more information) but a self-help option should provide a single location that makes it easier for people with cognitive disabilities to understand what help is available without having to hunt for it. While some people may easily be able to identify that no support would be available for a particular type of Web site, this may not be apparent to some users with disabilities.

    - -

    If a chatbot is provided, it should meet other WCAG success criteria for your conformance level. Chatbots which work more effectively for everyone, and particularly for people with cognitive disabilities should:

    - -
      -
    • recognize misspelled words,
    • -
    • provide human contact details if the chatbot is unable to provide a satisfactory response after 3 attempts, and
    • -
    • be dismissed with a single interaction, and recalled using a link or button.
    • -
    - -

    It is not the intent of this Success Criteria to require authors to provide help information on PDFs or other static documents that may be available for viewing/download from the Web pages. It is also not the intent to require contact information if:

    -
      -
    • A Web site is not supported,
    • -
    • Content is archived, or
    • -
    • When finding help would invalidate the activity such as in a testing situation.
    • -
    - -

    It is also not the intent of this Success Criteria to require a human be available at all times. If the human contact is not available during certain hours or certain days, information should be provided so the user can tell when it will be available.

    -
    - -
    -

    Benefits of Findable Help

    - -
      -
    • This Success Criterion helps people who may have difficulty locating help that is not part of the page they are using. Ensuring they can connect with help allows them to complete the task.
    • -
    • When a user can easily find help for their specific questions, they are more successful completing tasks.
    • -
    • Users that experience cognitive fatigue or cognitive shut down will be able to reserve their energy for the task, instead of using it to find support.
    • -
    • Enabling users (especially those with cognitive disabilities) to find solutions while expressing their question using their own words increases their chances of success for completing a task.
    • -
    - -
    - -
    -

    Examples of Findable Help

    - -
      -
    • On-line job application - Some of the application questions may be hard for new job seekers to understand even after reading the contextual help. For example, the form may request their identification number, but they may have several and not know which one to enter. Easily findable contact information will enable them to use phone or email so they can get an answer to their question.
    • -
    • Medical appointment scheduling form - When the service a patient is trying to book is not easily findable within the interface, they may need human help. A built-in messaging option (chat client) enables them to quickly interact with a staff person that can help, without requiring them to manage a second interface.
    • -
    • Finding a specific policy or procedure - An employee who needs to complete a work task may have difficulty locating the specific policy or procedure document on their employer’s Web site. A How Do I page may include the information that enables them to independently complete this task.
    • -
    - -
    - - -
    -

    Techniques for Findable Help

    - - -
    -

    Sufficient Techniques for Findable Help

    -
      -
    1. Provide a contact-us link
    2. -
    -
    - -
    -

    Additional Techniques (Advisory) for Findable Help

    - -
    - -
    -

    Failures for Findable Help

    - -
      -
    • Inconsistent Help Location -
    • -
    -
    - -
    - - - diff --git a/understanding/22/fixed-reference-points.html b/understanding/22/fixed-reference-points.html deleted file mode 100644 index adff992007..0000000000 --- a/understanding/22/fixed-reference-points.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Understanding Fixed Reference Points - - - -

    Understanding Fixed Reference Points

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - - -
    - -

    Fixed Reference Points Normative Text

    -
    -

    A

    - -

    When a web page or set of web pages is an electronic publication with pagebreak locators, a mechanism is available to navigate to each locator and each locator maintains its place in the flow of content, even when the formatting or platform change.

    -
    - -

    Definitions:

    -

    electronic publication: Content presented as a collection of related articles, document in the form of a book, textbook, magazine article, journal, a single journal article that is presented as having different pages, scholarly journal, or newspaper article in digital format.

    -

    pagebreak locators Visual and/or programmatic markers that are arranged in a meaningful sequence to determine the location of a page in relation to others in the set.

    -

    Examples would be:

    -
      -
    • Corresponding pages between a print book and a digital version of the same publication. (A digital pixel precise manifestation of the published print version)
    • -
    • Page numbering in the print version of an ebook
    • -
    • Page numbering in an electronic version of the ebook
    • -
    • A digital book is published is with no print equivalent and page break locators are inserted which supports direct navigation across platforms and form factors.
    • -
    • Virtual page
    • -
    • Synchronizing reading people with different form factors and platforms, screen sizes, can be on the same page.
    • -
    - -
    - -
    - -

    Intent of Fixed Reference Points

    - - -

    The purpose of this success criteria is to allow users with disabilities to find references to content based on the page locators found in the default view or printed version of a publication.

    - -

    The term “on the same page” is common in English to describe when two people are talking about the same thing and agree on the content of the conversation. This success criteria makes sure that all users can literally be on the same page.

    - -

    Page numbering has long been a fundamental way to identify and communicate the location of written content. They are used constantly in references, footnotes, endnotes, and bibliographies. Particularly, they are critical in academic and learning environments.

    - -

    Electronic publishing has provided valuable access to content for people who are blind, have low vision, dyslexia or other cognitive disabilities. In order to consume the information the content may be adapted to use a different layout, or presented to them using assistive technology. If there is no clear way to find a specific page from the print version that was referenced by a professor in class, because the electronic version is zoomed-in and that paragraph is on page 145 of the user’s version of the content, the user misses out on valuable and sometimes critical information to understanding the reference.

    - -

    The term “article” in the success criteria does not refer to the <article> tag in PDF or InDesign.

    - -
    -
    -

    Benefits of Fixed Reference Points

    - -
      -
    • People who are blind or who have low vision or those who may be magnifying content because of a cognitive disability will still be able to find their place and find references to content that are based on page numbers of the print or default version of the publication.
    • -
    - -
    - -
    -

    Examples of Fixed Reference Points

    - -
      -
    • An electronic publication (ePub) document includes navigation to page number references that match the paper version of the publication.
    • -
    - -
    -
    -

    Tests

    -
    -

    Procedure

    -

    Identify page break locators in the content.

    -
      -
    1. If the electronic publication is in one url page, check that a user can navigate focus to each page break locator from somewhere else on the page without relying on the natural tab order.
    2. -
    3. If the electronic publication is across a set of pages there is a way to navigate to each page break locator from another web page in the set.
    4. -
    -
    -
    -

    Expected Results

    -
      -
    • #1 or #2 is true depending on whether it is an electronic publication on on web page (url) or across set of web pages.
    • -

      -
    -
    -
    -
    -

    Techniques for Fixed Reference Points

    - - -
    -

    Sufficient Techniques for Fixed Reference Points

    - - -
      -
    1. - Ensure that a page list navigation aid is provided and that it includes a list of all the available locations in the digital publication -
    2. -
    - -
    - -
    -

    Additional Techniques (Advisory) for Fixed Reference Points

    - -
    - -
    -

    Failures for Fixed Reference Points

    - -
    - -
    - - - diff --git a/understanding/22/focus-appearance-enhanced.html b/understanding/22/focus-appearance-enhanced.html deleted file mode 100644 index e1d08762aa..0000000000 --- a/understanding/22/focus-appearance-enhanced.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - Understanding Focus Appearance (Enhanced) - - - -

    Understanding Focus Appearance (Enhanced)

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - - -
    - -

    Focus Appearance (Enhanced) Success Criteria text

    -
    -

    Focus Appearance (Enhanced)

    - -

    AAA

    -

    New

    - -

    For the keyboard focus indicator of each User Interface Component, all of the following are true:

    -
      -
    • Minimum area: The focus indication area is greater than or equal to a 2 CSS pixel solid border around the control.
    • -
    • Change of contrast: Color changes used to indicate focus have a contrast ratio of at least 4.5:1 with the colors changed from the unfocused control.
    • -
    • Unobscured: No part of the focus indicator is hidden by author-created content.
    • -
    -
    -
    - -
    - -

    Intent of Focus Appearance (Enhanced)

    - - -

    The purpose of this success criterion is to ensure a keyboard focus indicator is highly visible. This criterion is closely related to Success Criterion 2.4.11 Focus Appearance (Minimum) and defines a higher level of visibility for the focus indicator.

    - -

    In relation to Focus Visible (enhanced) this criterion:

    -
      -
    • Expands the minimum area from 1 CSS pixel around the perimeter of the element to 2 CSS pixels around the perimeter.
    • -
    • Increases the change of contrast to 4.5:1.
    • -
    • Does not allow for any part of the element to be obscured by other content.
    • -
    -

    The other aspects of the success criterion are the same as Focus Visible (Minimum).

    - - - -
    -
    -

    Benefits of Focus Appearance (Enhanced)

    -

    The benefits of this success criterion are similar to Focus Appearance (Minimum).

    -
      -
    • Letting anyone who relies on the keyboard to operate the page by enabling them to visually determine the component on which keyboard operations will interact at any point in time.
    • -
    • People with low vision are better able to follow a highly visible focus indicator.
    • -
    • People with attention limitations, short term memory limitations, or limitations in executive processes benefit by being able to discover where the focus is located.
    • -
    - -
    - -
    -

    Examples of Focus Visible

    -

    The examples of this success criterion are similar to Focus Appearance (Minimum).

    -
      -
    • When links receive focus, an outline is displayed around the link that contrasts with the background adjacent to the link.
    • -
    • When buttons receive focus, and outline is displayed within the button (around the text) that contrasts with the button’s background.
    • -
    • When text fields receive focus, an outline is displayed around the field, indicating that the input has focus.
    • -
    • When radio buttons receive focus, an outline is displayed around the control, indicating that the input has focus.
    • -
    - -
    - - -
    -

    Techniques for Focus Appearance (Enhanced)

    - - -
    -

    Sufficient Techniques

    - -

    @@@ Create a new techniques based on:

    -
      -
    1. - Using an author-supplied, highly visible focus indicator -
    2. -
    3. - Creating a two-color focus indicator to ensure sufficient contrast -
    4. -
    5. - Creating a contrasting focus indicator inside the component -
    6. -
    - -
    - -
    -

    Additional Techniques (Advisory)

    - -
    - -
    -

    Failures

    - - -
    - -
    - - - diff --git a/understanding/22/focus-appearance-minimum.html b/understanding/22/focus-appearance-minimum.html deleted file mode 100644 index 82e9870adf..0000000000 --- a/understanding/22/focus-appearance-minimum.html +++ /dev/null @@ -1,279 +0,0 @@ - - - - - Understanding Focus Visible - - - -

    Understanding Focus Appearance (Minimum)

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - - -
    - -

    Focus Appearance (Minimum) Success Criteria text

    -
    -

    AA

    - -

    For the keyboard focus indicator of each User Interface Component, all of the following are true:

    -
      -
    • Minimum area: The focus indication area is greater than or equal to a 1 CSS pixel border of the focused control, or has a thickness of at least 8 CSS pixels along the shortest side of the element.
    • -
    • Change of contrast: The color change for the focus indication area has a contrast ratio of at least 3:1 with the colors of the unfocused state.
    • -
    • Adjacent contrast: The focus indication area has a contrast ratio of at least 3:1 against all adjacent colors for the minimum area or greater, or has a thickness of at least 2 CSS pixels.
    • -
    • Unobscured: The item with focus is not entirely hidden by author-created content
    • -
    -

    A keyboard focus indicator which has a pattern or gradient may have parts that do not meet the 3:1 contrast ratio for the change of contrast, as long as an area equal to the minimum does meet the contrast ratio.

    -

    If the control has a visible boundary smaller than the hit area, the size measure is taken from the visible boundary.

    -
    Focus indication area
    -
    -

    the pixels that change between the focused and unfocused states of a User Interface Component

    -
    -
    -
    - -
    - -

    Intent of Focus Appearance (Minimum)

    - - -

    The purpose of this success criterion is to ensure a keyboard focus indicator is clearly visible and discernible. This criterion is closely related to SC 2.4.7 focus visible and defines a minimum level of visibility.

    - -

    For sighted people with mobility impairments who use a keyboard-like device (e.g. a switch, voice input), knowing the current point of focus is very important. Visible focus must also meet the needs of low-vision users, who may also be keyboard-only users.

    - -

    A keyboard focus indicator can take different forms, this success criterion sets a requirement to make it clearly distinguishable. For example, using a thick outline around the control that contrasts with the background would pass this criterion.

    - -
    - Three links on a white background with the middle one encompassed in a thick black border. -
    A strong indicator around a link.
    -
    - -
    -

    Keyboard focus

    -

    The keyboard focus is the point of interaction for someone using a keyboard. For environments with a keyboard operable interface, the keyboard focus can be moved around the interface in order to interact with different elements. Whichever element is being interacted with has focus.

    - -

    In web pages some components may receive focus as a user presses the tab key to move to that component and then use the arrow keys to select an option (e.g. tabs, menu items). The item considered to be focused is whichever is being interacted with. For example, if you tab to a menu and arrow-down to a menu item, it is the menu item that is in focus as pressing enter would activate the menu item.

    - -

    Some elements can take focus (such as the target of a skip link), however, it is only when the element is operable by keyboard controls that this criterion applies.

    -
    -
    -

    Minimum area

    - -

    The bigger the visible change, the easier it is for someone to see. Authors are encouraged to make the change as significant as possible, for example, by designing a thick border around the element, or significantly changing the background color.

    - -

    A border is the perimeter of the control, and defines its shape. A border is not a reference to the CSS property of the same name.

    - -

    The minimum size of the focus indicator must be at least the area taken by a 1 CSS pixel border around the element. The indicator does not have to be a border, but the size of the area must be at least that size. For example, if a control is a rectangle of 90px wide and 30px tall, the size of the outer border is 90 + 90 + 30 + 30 = 240 CSS pixels.

    - -

    A CSS pixel is what developers use in CSS declarations like “width: 200px”, it is device-independent and not to be confused with device pixels which vary depending on the physical pixel density.
    - The rest of this document notates CSS pixels as "px". -

    - -

    The following 3 examples use a 90px wide by 30px tall button, therefore the surface area requirement is 240px. The middle button is focused in each example.

    - -
    - Three dark blue buttons on a white background. The middle button has a yellow inner border. -
    @@@ Update. The inner outline is slightly smaller than the outer edge of the component, but using a 2px thick indicator means it is well over the minimum requirement of 180px squared.
    -
    - -
    - Three dark blue buttons on a white background. The middle button has a thick yellow line under the text. -
    @@@ Update.The thick (3px) yellow underline is almost as long as the longest edge therefore meets the requirement.
    -
    - -

    If controls change size across different variations of a page (e.g. in a responsive design), it helps to use a proportionally sized indicator such as an outline or background change. In that way you can be sure of meeting the size requirement.

    - -

    Typical focus indicators:

    -
      -
    • An outline around the whole component would pass the size requirement;
    • -
    • Changing the background of a control would pass the size requirement;
    • -
    • A 1px wide vertical line (such as a blinking cursor) would not pass the size requirement, a text input would need a larger or separate focus indicator.
    • -
    - -

    If you need to use complex mathematics to work out if a focus indicator is large enough, it is probably a sign that you should use a larger and proportional indicator that will provide a more visible indicator.

    - -
    -

    Unusual shapes and gradients

    - -

    If you have an unusual shape, some mathematics may be required if the focus indicator is on the edge of the size requirement. For example, if the focusable control is a circle with a diameter of 100px, the circumference would be 314 pixels. A 1px (or greater) outline would meet the size criteria.

    - -
    - Two orange circular buttons with an icon in the middle. The right hand circle has a dark outline around the whole circle to indicate focus -
    A circular button in the default state, and then with a focus indicator.
    -
    - -

    If a focus indicator is an irregular shape, such as a drop-shadow under a star icon, it helps if the contrasting area is obviously quite large.

    - -
    - Two yellow star symbols, the second has a dark drop-shadow. -
    The default and focused states of a star component.
    -
    - -

    What is the contrasting area of the drop shadow? The quick method is:

    -
      -
    • Look at the size of the component, how long is it around the edges?
    • -
    • Look at the (contrasting) area of the focus indicator.
    • -
    • Mentally compare the focus indicator to the border of the component.
    • -
    - -

    If it is too close to call, you could extract the contrasting area of the focus indicator and evaluate the surface area.

    - -

    If a focus indicator has a gradient, the principle is to measure the contrast of the changed area, and ignore the change that does not meet 3:1.

    -
    - Three buttons, the middle with a heavy drop-shadow indicating focus. -
    When a gradient is used on a focus indictor, the measure of surface area should only include the area that has changed enough to meet the 3:1 contrast ratio.
    -
    -

    If you take some spot-checks on the gradient area and establish what area meets the contrast, it is straightforward to work out if that area is sufficient.

    -
    - The middle button with the drop-shadow included, but the subtle grey areas removed to only show the contrasting area. -
    The focused button with the non-contrasting areas removed, showing that it is a thick indicator that meets the requirements.
    -
    - - -
    -
    -
    -

    Change of contrast

    - -

    The greater the change of contrast between states the easier it is for users to see it. Authors are encouraged to make the change of color contrast as great as possible.

    - -

    When a component changes to include a focus indicator, that change can always be measured as a change of color contrast. For example, if a yellow outline is added to a button on a blue background, the change of color is from blue to yellow.

    - -

    Color contrast measurements in WCAG are based on luminance (brightness) regardless of the hue.

    -
    - Three dark blue buttons on a white background. The middle button has a yellow inner border. -
    Adding a yellow outline to a link is a change of color from blue to yellow. That change has a contrast ratio of 12:1.
    -
    - - -

    Text and non-text contrast measures use adjacent colors, this success criterion measures the change in color between non-focused and focused states.

    - -
    - Three buttons with light background and dark border on a white background. The middle button has a light grey outline. -
    The second link has a light-grey (#ccc) focus outline which fails this success criterion because the change from white-background to light-grey outline does not meet 3:1.
    -
    - -

    It is possible to use visual patterns such as strips switching places to disguise a change of focus indicator. This is not considered a visible indicator.

    - -
    -
    -

    Adjacent contrast

    - -

    Where a control is a solid color, and you add a border or outline of a very similar color, it is difficult to perceive the change to the control.

    - -
    - Three dark buttons, the middle one appears very slightly larger due to a thin dark outline. -
    Adding a 1px dark outline around a dark button does not differentiate it, this example fails the success criteria.
    -
    - -

    The requirement is to have an indicator that has a 3:1 contrast ratio with the adjacent colors (including the component), or to be separated from the component, or to be at least 2px thick.

    - -
    - Three dark buttons, the middle one appears larger due to a thick dark outline. -
    Adding a 2px border around the button helps to differentiate which one is focused.
    -
    - -
    - Three dark buttons, the middle one has a outline slightly offset away from the component, so there is a gap between the component's background and the outline. -
    Adding an outline that is separated from the button helps to differentiate which one is focused.
    -
    - -
    -
    -

    Unobscured

    -

    Where other content can overlap with a focused item, the focused element should not be hidden. Typical content which can overlap focused items are sticky footers, sticky headers, or non-modal dialogues. As a user tabs through the page, these layers of content can obscure the focused item, including the focus indicator.

    -

    The criterion specifies the "focused item" in the unobscured bullet rather than the "focus indicator". The requirements for the indicator are set in the previous bullets, the unobscured bullet applies to the item as a whole.

    - -
    -
    -

    Relation to non-text color contrast

    -

    Success Criterion 1.4.11 Non-text contrast requires that a UI component maintains contrast across it’s states, including when focused. For example, a checkbox must contrast with its adjacent colors, and the check within the checkbox must contrast with its adjacent colors.

    - -

    Focus-visible (enhanced) requires that the change of color contrast for the focus indicator (only) has contrast compared to the non-focused component.

    - -
    - Four checkboxes. Unchecked is a plain box. Focused has a circular line outside. Checked is dark green with a white tick. Focused and checked also has a dark green circle around it. -
    Four checkboxes in different combinations of checked and focused. The circular indicators (lines) provide a sufficient change of color contrast.
    -
    - -

    In the example above:

    -
      -
    • The checkbox has sufficient contrast with its adjacent background in default, focused, checked, and checked-focused states;
    • -
    • The check (tick) within the checkbox contrasts with its adjacent color;
    • -
    • The circular outline around the checkbox that indicates focus has a sufficient change of contrast.
    • -
    - -
    - Two checkboxes, the second has a dark blue outline around it. -
    A default checkbox and a focused checkbox.
    -
    - -

    The contrast of the default checkbox passes 1.4.11 because the dark border and white background have a contrast ratio greater than 3:1. The 2px dark blue focus outline passes Focus Appearance (Minimum) because the change of contrast is greater than 3:1 with the white background. The component as a whole maintains contrast with the white background so continues to pass 1.4.11.

    - -
    - - -
    -
    -

    Benefits of Focus Visible

    - -
      -
    • This Success Criterion helps anyone who relies on the keyboard to operate the page, by letting them visually determine the component on which keyboard operations will interact at any point in time.
    • -
    • People with attention limitations, short term memory limitations, or limitations in executive processes benefit by being able to discover where the focus is located.
    • -
    - -
    - -
    -

    Examples of Focus Visible

    - -
      -
    • When links receive focus, an outline is displayed around the link that contrasts with the background adjacent to the link.
    • -
    • When buttons receive focus, and outline is displayed within the button (around the text) that contrasts with the button’s background.
    • -
    • When text fields receive focus, an outline is displayed around the field, indicating that the input has focus.
    • -
    • When radio buttons receive focus, an outline is displayed around the control, indicating that the input has focus.
    • -
    - -
    - - -
    -

    Techniques for Focus Appearance (Minimum)

    - - -
    -

    Sufficient Techniques

    - - -
      -
    1. - Using an author-supplied, highly visible focus indicator -
    2. -
    3. - Creating a two-color focus indicator to ensure sufficient contrast -
    4. -
    5. - Creating a contrasting focus indicator inside the component -
    6. -
    - -
    - -
    -

    Additional Techniques (Advisory)

    - -
    - -
    -

    Failures

    - -
    - -
    - - - diff --git a/understanding/22/hidden-controls.html b/understanding/22/hidden-controls.html deleted file mode 100644 index 28a8fc28ec..0000000000 --- a/understanding/22/hidden-controls.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Understanding Hidden Controls - - - -

    Understanding Hidden Controls

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - - -
    - -

    Hidden Controls Success Criteria Text

    -
    -

    AA

    - -

    Controls needed to progress or complete a process are visible at the time they are needed without requiring pointer hover or keyboard focus, - or a mechanism is available to make them persistently visible.

    -
    -
    - -
    - -

    Intent of Hidden Controls

    - -

    The intent of this Success Criterion is to ensure that controls needed to progress or complete a process can be easily found by people with cognitive disabilities when they are needed.

    - -

    People with low executive function, impaired memory, and other cognitive and learning disabilities may not be able to find controls needed to progress if they are hidden until focus is placed on them or a pointer hovers over them. They may also not remember where the control is the next time they interact with the site.

    - -

    Some design approaches hide controls needed to complete tasks and require certain user interactions, such as mouse-over, to display these controls. These required interactions can leave users with cognitive disabilities without a path forward.

    - -

    When Needed

    -

    Controls should be visible without user interaction (i.e., persistently visible) when they are needed to progress. In multistep processes or multipart forms, the control may be hidden in an earlier step/part, however, at the time the user can move forward the control needs to be persistently visible without having interacted with the control. Similarly, this SC does not require inactive controls to be persistently visible until the user is able to progress. For example, when a form includes required fields be completed before the submit button becomes active, the submit button does not need to be persistently visible while it is inactive.

    - -

    When multiple controls are included in a single location, some indication of those controls such as a drop down indicator should be visible without user interaction.

    - -

    In some cases, controls are provided in multiple locations on a page or at multiple points within a process. In these cases, at least one of the instances of the controls needs to be visible without user interaction. For example, in an email process, some controls such as trash may be visible using pointer hover in the list of emails but are always visible on the view of the email itself. Because the controls are persistently visible when needed on the email view, they do not need to persistently visible on the list of emails.

    - -

    Visible

    -

    The intent of this SC is to help individuals with cognitive and learning disabilities locate controls they need to successfully complete their desired task. The controls addressed in this SC should also meet the SC for sufficient text (1.4.3/1.4.6) and non-text (1.4.11) contrast.

    - -

    Mutlimedia Controls

    -

    Controls such as video players, web chats, and carousels include controls that are only visible on hover since they overlay the contents being displayed. These controls are not considered a process in terms of this SC but occasionally completing a process requires interacting with one of these controls. For example, completing training may require the user watch a video before proceeding to the next step. In this case, a control needed to play the video needs to be visibly persistent. This may be accomplished by making the video controls all visibly persist or by adding a redundant play control to the page.

    - - -
    - -
    -

    Benefits of Hidden Controls

    - -
      -
    • Users with cognitive and learning disabilities can more easily locate controls that allow them to successfully progress through a process.
    • -
    • Users with memory impairments do not need to remember where controls are located
    • -
    - -
    - -
    -

    Examples of Hidden Controls

    - -
      -
    • Web Editor Success: In a web editor, once a page is open for editing, all the possible locations for editing display a pencil icon.
    • -
    • Web Editor Success: In a web editor, the possible locations for editing are hidden until a user hovers over them but a radio button in settings can be changed so that the icons are all shown by default.
    • -
    • Email Success: When writing an email, controls needed to trash or forward the email are hidden by hover on the email list page but visually persist at the top of the email screen.
    • -
    - -
    - - -
    -

    Techniques for Hidden Controls

    - - -
    -

    Sufficient Techniques for Hidden Controls

    - - -
      -
    1. - Provide persistently visible controls -
    2. - -
    3. Use simplification=”important” to indicate the control is important (future) -
    4. -
    - -
    - -
    -

    Additional Techniques (Advisory) for Hidden Controls

    - -
    - -
    -

    Failures for Hidden Controls

    - - -
    - -
    - - - diff --git a/understanding/22/img/focus-indicator-box-shadow-only.png b/understanding/22/img/focus-indicator-box-shadow-only.png deleted file mode 100644 index bedf2aa69808caf1d329c7b794f56888adad46e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6312 zcmZ{H2RNH;`+h=gY7}kNh^V5}j=i^2QK7b? zl;R(K-|zeSe~UXIfOs;Hyt_h^uzo2 znThU3-?|}J#j;FXibq4KM~jNg{PNgF=%c^mBfSqTvb1=xr(CZ?`p#Y`PkHY)9SQ@!ihVCHTSLIFIN`VeJeK4SlvST8q=Jft9WvM%0AtXPrEv+|$zSaW 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 diff --git a/understanding/22/img/focus-indicator-box-shadow.png b/understanding/22/img/focus-indicator-box-shadow.png deleted file mode 100644 index bb6bc7d09c5487c940ee27fa07c00e99399020d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8666 zcmZX21yq#Z_VxfGol?>aA{~NsNrND%#e=de)ieVd-gu>IboXWN(8vnxBvivKt)+z8+E@%onqLJQCDYyhj0J@ zx5HXaPE$orj#1Ou(bC!u0stt7B_v_Jjhi9$KYS<{ldmqTeT$Q0hV z1_77D2A82bfaVcbHXpezfbq>&9^CWuET!&WqfYk#EMAWKM4-sTw1e3Mmz~%VwhkjDvq6l2Ulm*KM&mBfg@O z`11Fvj7jkK;^;&wYFr10dIC#v0q_B{uvh@&9-wuVy{nboq8ykj#1S5J>O21oy4x z33ON`b6yapfk(nM4G{7%tmdB#a%LK1h5TSx7=mLfq64X{t0>|nGiDLDU6 zWm1lkOwOb8_vPFos&`U>JVH zkJ@GM^&e0BV~zS_TLey+V)S5zm|{(1yp|Cac~so?0*d}JplTUdkLwU9o<$?^Sep;< zK8WOqBvOtzIEamyTsx?m38M%9`zKmPy&f9eVA*UcHu~3rkG?)KB(M+0%?1{d75m#{ znPgFH16}EM1LPN`V|*lHQ6R{b z%B}psks2kWB%XW!o8*I#CyOVyC+80`<1Y^KCW=dPm)T0cmtK%XKJLO_3kI9zyiiG2 zQ6gzuzo2IPP8gNJ`WlV0-m=~rz!+DRs61lQ%xd^sSuyn= zio47{&pBh>^upIgz6Upc@eZC>^i}rN$kxPXN5<>F7K6~_e{v2xi9At>;;>@sj$i93 zi{p&5jsMAcsR(CuWE}o#@;sB-gv(F+Pwia=x=fp9n@&J}g>JT5wnDZZ_-#z_hkUBM zrN7~p}-`L;^URu8&rJc;NZm?ysJ(v_L7tDJz;Wn{pdpOygbsvt9 zwfe2I!*bStMnXqGCruZo9->|_RF8;p2zEd?1R-@KbKpVma~2(%+?q&y?C%wBO3wGr z7@iX2)8fM(dl87?cj14*&&3y}5qe5UT}1uji*w{|B%Deoav@TWT90~3xGhyAIWL)( zufZHQZ8r5ptzXSCtLF zn|s6287(fp-FJtHwTVTEq1+5c>;~6H8-_K8O;tiQmPSbiOLf`PSJS0c*0ml#TkX)? z+uAUR?22k5?1blP=X|TG>YmI@%n{7&&2`Tm)*XJ-bi;O=-h~d5tZlE<4;`1TS+R;2 zxE4H7_Y+GKFA$j$BjR~!*kcTXfmVe93cIh}zqsG`zT5q_*5zE{>V-sX4LOxN z`}OjHp9w_qFT(UaKTD{4MS6&NAdc-$Wj(Gv$zdNoIX#qMNuJWDBj+k7MW;`XYtD@~ z<~Bo*@s8$pruxS%zNZKdkob8$2>waJ=s^Rc<)aN_yunZiD2rHD_!HsA?fHG$w9?c` zhZx)J@d2(UwH;X_|CJiH&@+)du62dNciX$aqxfv5Pby|BqF3lw<~kUZsFaj}v&=wqk2J!nXk@fBe=4bn zSJl|fq2bPX@+9s!`Ks`0_Nu&;QJ2N`Wk5=WG&uO6cd_4h&}nOb6W__WUSU2dj3-PX zEJ%e%t*OcIn{8k;l))H6Xk${P|J z6dD+W6z%N>#|Dftr&@a5b&Q)q&1^01Ri~RL48Nt1{I=)Ksvt{=hnVSsG$Dy0ogpT5 z-|H5yMs~Yn8CYvs9QNiN>h6~b_X*pg;293$B@tv1&fz!i+_Mw)Y0W=PFGD5!FG0NT zH9^fu^?Kj+3`zAz8#VlvqI^tLJ@OYI^bmqu!3)P3X*YkDWu(ky(D_E{M#zSV@9M)@ zR(oAeerBk2Gq5+;c_+el_>!t_8+cYxcKu zgYLA4)o$GTVt!Kx$WE{Kmxx8H#g>_-`ky7NIa@N0pz<@ct+wTk@lZzwhy=A?;~$(& zl{TG_g3jTW@OOVKPmF@b)jbizC5Mxz6*OEBnbvh23duA ze?m4Ip4cqc9Gzc5|1gC6?faSEZH{Lm{T8Xi=%2zkJ;je5_PlB?m87_?eoIkH-0Yjr zb{|&;YS?5JON)CWuSm}~Hej22^HZ^o&zB5au)O{FV}xEXS%m59BeWjpRy0LegC$j1D09IhD2veGX9gsv0ea9SL~E%sEfjDkSv% zT!VylR$rqVD9Dtna{TL;mxb@I6u?oLyO~*|wb`l>x%NJ@Mbx#3WWNS(HlBYe{j+cG z?q}{t8Y1JKFPrEga1tJTQAG>US3akbsGy9_=Bn zU`Cj|or8-QOcMA{3o+F5UokI`@t-EHwvs^oH=2xcj?NH9L7ta9d_XB&Mn*;nXA4U) zZF$9io1@+&fgfC5p<=we?(Xh9?gBiH&Q`oHL`6k;`S^MH`MFUoxLrIPT){AI2N&jl zf&4!ld5DX-vo+M!+R=gWFD}^3@uRCG5ct>8e~y3k69TjTuO|nWe}{z%koT{K_XQ6h z?|-mSrV@XpVw%=4h@HN?wLQea1?5AE|D~wJKkffN&3`@qkEOwXEd@pX*YJN7|2CB1 z{oDWliRWKr{Ub%OC50=&`yb||a6v9e)Eb1GLq%TZEe!1-12giOFtLJ9Z%B#?*z%ua zlWkxiooyhGZ2&ttfGa(+r`d~ zosSD)^EFUSk8&Cq4N;-VBXNetk8N0LV7vH9&N0uvLryUF=(p=Hqdu6?@MNXh^$dAQ zmZDMX9^3GfGtUI}1tj>j;byLc?4X`UYWZkQ-#gyWLFTV2ixRpR6Y)UpED^AP(~=@x zNyg{_b$B6l%czvv+JLb~wT{G~UZ$uWeSq4@X63Ht*pt}$(QwYY+rySJwVi6X*t_P@ z1N!j1fuO%)TDyuivG`k$5`t+qWWP(JC@O}ujv_g34dvAxX0s{Wv76ob%aTSnd`Tt+ zONQ|2VAJ)n;sTEn-U=-cMAVM(uNNpsX+kV{i2Y`E1_gk`h>7>)xSjHHR82#+6URd$ zCX7;Y!06gHe7ApV19pmS5i1;>FhPcfbHCPmKV{;FDY?$6zP&dBf0@(FHL~d^Z}&}0 z9@&P)AhDeda+0<`Y5L7d1!?zsn;J3o?Aoqsa1ulmq|Z%8;ISIU%0;H7!~bx-m8po_ zNHSU6-H`6Yo`E3>K?6haWbc4y6)cb)u7a zA9qrg8!pDLe@)wpmi|-0x2A8T(|TOD@t5fdlvg-6%pk0+|vi2Cc!dRShi5Hfwg`q+Pt@NnT=PM0|h0aC>G4Tj;2S_ zxK~Ry#a@ukKM(C75bXC- zMVk!bY$p(&=i6_-MZO`xlVz5A#*-7VzG$p*ndUjNQ;24W#?^5*Lxp=UQh*+hO2$Eb+JG@67fL>)0Jyt5 z9saadJ*H0cEzRLa4hOijvWw#{>?qFW+=O=cdZTwRi6XXDx|5<_bT0Resb> z;|Td|b|^jdw^W*-vynGI)F4$WP$~*D-&kn0%^$(PzBKZ{|prBoHZ7 zSkK75refMG!eGVgu!%BCWc4%OPF`GUL}Z#9YG{Rq(tENs-t3lu>sLPEoeoR;OS|&50a!N?|btWo;IuD#~ zS{Jp}RU#@rMv%|>gpfNlUrIz>>Uw>06GbQP<)T-)y~dE#?f%iIDsPB^RmQ~T<(P(a zh>nJ&VB_6MKe(4A34gD&O1+iYT&mHflUxsfSo*=c9u-wb{aO@FqM;4@>ADTwCz(+^ z-bTK86ca0`?tZVdYdW74Vg!;t|QRBvbx8*`hd+f`((kWfH#-Gi>T@Ic!?_)}5X4k6qA0@eS~cvJ{2qKxyS6d%SG+1JWK1c*iy?fJ zPwT4BN4MgX~MgOxu0;J zC%5vMMn}zmoH7>DtHn!aX+ou}rG^=uG9$P90GWa}JOAC($p_m|2M5rNAYNk>qpVV|DdO9Fba-Mr)uz+&#laxEU zlSq7@kJE1@gp!LcplEW-*vS!cZQ^sDu%Wb3;reKJbR>4p>uEgpLbGHy**Z9sc0;$)(w5(gG#jo*mJEg zPFEJvLQ={MT=Vc>Me@LRsKHhAy1F=_kd1tkfxK8d*j!@2s@Zmhs)^W()%*)y!UQBL z#+AavG6llX{`n5}%E~22Y8XYf?YTqCy_>2Mr{zw)zwT{55#Q%6&WUEBX;X}T42Dew z(P8swNy`J66-bjS+Uc0bHSkaov=%X0KD+hvu-SGk&F*_|u?IElv_FY{z|-jfCjCHm zbAWjTPx}kfQn4-|mq)?kIjUysuCCgjdr+Q_gw|6T&@~IVd}K~ycV zLvb(9+j+8@WBYM?FHS?MvaxDNtpB8N_%^?L)Zip%qE2j_g*(GkVx+2uzl)bn@$zgC z?u8V!&20#HBWc}h+>K6#Q<85n14$Cp!*a)133ln{uB#S7G9o~<$p%=UYt-bvpl(pq zy1PpR-^N=ZqY$PRey(1h8d^f0&@p<`(Ihfm8_*6{C*L z*OpiNRl}vC*YBq%m0OP!jT~M?Fi+9o1s&N#-;tcGU+6^J6Hnp^Px(3SnpG0dzcr8^ z)xznpuUnu1jEYgLZ!)~wg%oD4JF`Icgt8emi56X#E4M84a%0f}ICe@YZ% zPYl-tfn-7H13$*3B=zO%@-ks>v8M?I$2BP^-#a#)>n3|48@QvT>$hV++_m%k+&5d? z+$||b*x_Y*Y(B-?O0`806PVT5q4KuQ@e^WA;U#Cj3ccQ|IrEpNflU{){TF28o%t8; z@O>*Nk&^(+*%uhFll=Q@-@Yq-wjZpat@)t#KZ|(xjDP=QUfs%Fm?@96P^}5IMR#*d zUNN(f@6g1gmnjQiIew)Prt36MTiY7)CKTIdyuG5VBdR6})ukSwW`+SR`}Q|@RBJX5 zs1KHCf~Taxx6%U#8M&?i)BF{>Cv!}C~z2z`Htd?TzNft<;@==xTe7|o`8LbxlJc~ z+`CAJ;sfj6)AlwUj&>FK0*Oum`!O48#~2@hb{UKLp|@q6ElJDxKnH_?ytCl1zSnip3OsGLss zWY%|DFU*a?O|!2}p#!3Qn7=h>CgkE8SZ3nhFaO-=Dcy8dy#CWs7!Div+VerC%|JY!50e3D1bLiL3-AR!4jy)U zPI`E03gJmB$z{46Yfs#drs_-m>-s)#<;Hg_@Y7>@b-! z&qx;bOP9Gl@w^}IFO8CXZNItq{4`^Vl_GUkZO;}EW`g9MjYh?;&`-v~K0_E>eje0T zq0vKI(cC1vqzLd5zfME6?7W!IZ2 z&rP03r_n=AX;{5yG*1iz`I*q#Jc)qse7@Czzwwy#e>xy`#}yiYAgf&CuHcI@>I-uE4YtIvm57!bFi`3HZRfg zDz{7TNC)+-+jArkBrK*KGW3rW^Q)HQiq>Ej5BYvQ3Gk!x!@}6u^TIGMKX8cpSB`GJ4nKzN4Rx$z|xeeUqMb=IytZ z@ZyzK4;N*#rl8^?Mq1yvD0lUBybssW#{Nvx9jyVC6YaGGuQfA3R=^K^t0M~{{Eoiw z`zUgI47K0uLeKwJiPl4kBU-4SmiL1G%UvQ~;QI!0&dZb!P7#6Crc_&Cku=9eu9ctkh*+Qh{6pE;9g!xLmOX+bls z{x%lQ!ZG1ZyzGr8?p_Dd)6e~~znPYH%wAQmWy*YGtueHkh1WiO zGMl%*}sh0jaLi$dD842?Z3Xl-pVslv9~hs}#cBvEf``sI0>k{(TpL1rn) zUK~;Rl@*>8FSUh)Q#^5G=tq;G4ABSOjIW{IeMQ|Z)oUw=3?-kN%jzdXK;~@a{(B)J z_dSWbJ!!;5J=WHKa416%o4VA-_!yn2p0Y2~(V;b~x2JRIM{W-d!cyTDqwp>&@+3?p zCJ#*qvUmoUqpWo<+`Ht*G5J<8j0~|lU2&cSlUW3R{6k7BH(BwMTYQ&gLG_x1y6s=w z&X_{oA5roKoGyF3Z7h;?7Z$aYwcVA4_K6mb z1<>H3oqu5FTtq&b0<|e7^En#0G$6l%0v-iJ6M%ugsH)A9bpS5M(k?bZ&gVA z-I{n2Co4z6&WIc49GeuY3<3JRhBoW~MLSe(*+hTQm+;tOrwC^&?}bHmCce{HTb4Jj zx%A;!G=E|@MrjpWceRoSWy@7gi3L4UvevSs>)LrmXcjSVQ_^fmi=rBX^1(j<>fibY z?Fsz}nT?jF`1!=z6WcX3i`b+q7#r=gXYs^JOeADvF=ns9T4p3P{biE%*y^7@FXM7o zeffh;8L|xYmUoQ~!`7g8O2~gi34fK{Jcpe~&tUW1gH<{pUVlNEDS;PLz1LX&$c?3L z6QN15m9^&KMS80t z(oUR^5ZRde_l0h_J4vv_6V%>RQg`Vr@SRw^?rRm0ythGzlUw#Kqq2S`{ufuwB@pH#;7cI777FHb5D5a)ywyISX{(f6*sK!(;XsPrKu@f VG$yu9X#ehEt0<_;BV diff --git a/understanding/22/img/focus-indicator-checkboxs.png b/understanding/22/img/focus-indicator-checkboxs.png deleted file mode 100644 index 933ef9982da6e002116f31303d4402d320a117e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9304 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�kj;RH%8&QOdmLEP6`KC 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 G5B(1XS0BIt diff --git a/understanding/22/img/focus-indicator-circle.png b/understanding/22/img/focus-indicator-circle.png deleted file mode 100644 index 61fccb86214e03301ad60a9429d5f3371c11fc7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14509 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 IF{9xB1E^8#FaQ7m diff --git a/understanding/22/img/focus-indicator-icon.png b/understanding/22/img/focus-indicator-icon.png deleted file mode 100644 index 28d8903d0192fa074b960c2faf8c35b685c1e38e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15766 zcmdtJWmp`|);0}gS)$j;O_2&>jZZ=lV|U5zx%z; z@AKn)eO)u%Q(gC3RjayctyO(bn6jc2>U)CsP*6~)GScFzP*5<@kZUVMc*u7^Bv2Cy z3Pr|ROiWouOpH|7+0nw<&KwF#IxI;GL0fGYH(O6t#_B7gG*V}nYJnV5t^`Ib{Su-K zX>MOEhWIJ-D1D1NCNyCiecquiln%qOE?&>ME^&AX?TJZG$VkQq?ZuZ3pG|>Hp1W5* zmx%z`{SAS4fr_X~^y3n4&_f9yhCmdbwG&ilwF{Vk!eNL)Tl|U`Op#j#0;i!yre468 zx9|t* zn3Q5!mIA}DEK7ieBh+l!?=BpmhB%3plHmf~Ip*r$Kj_3tJ>m9MVSUwx2}HvOiFSq3 z1oC2mRJ^=65y;z)?Ty^*twPL(#1ID(#gr4jgUkYEW zB^0srdIRJrchN4o>2RrvN?Zm?ff@;M+S!?V*peV6a1y08f`$X&8^I63gPJyq4DRKGu+cn4;p+l1TC6z5i0R7kkvgaY zP5vN=e{B5p}XdY__cSIw%EIz+Y zKO=0DZS&_QIQg`B#+_z(Ya78F24Vi@;>K!Q zWT#ZJXT`3i`Nnj&X>(t8LLd;%09P3K6IKn-bu;Haa|^IgxxGF?D|H$Fc+Ozyxxad! zS`|7q=`~Hw^cl6;NAN0)}J^>L*Tn!B8cl2*N4@ zzX00r5VT_i{=mGFehm70L5fTHO`R3hT?clt9%T&H<=1EB_ai;;YjD-SDi|>=A>9VP z{6qpk)AUqtky{}w_7JsrxAnM8A#8kuhW#XsNMuYp5DI4!!Ao%-ijEZ;L^drg7$06h zp%V(LLh2F=j&(M}Q4O~HbR3%#*E=M$D>(CYO_G>YXoz8#B0QIK4vI_cY>KS}eMB;U zO5Bw`J$OIA-wLS>rBd8>dfke`8>=(aKuTcxz)A$3l_@ez$Amc*eW1srmXi@X!T73% zy#l7ZpP&Z!Uc|7Uzt-UNonjw8FS5s123{6%o+=_ctuHB49wO+AXv7V}N>Hqddx+2h+IoWY)PpK)a=Hs>SE&K|;Dn_u%k z(mnb;`q+ouTG>}MiTZT8H@fHF;+)~}e<0E$YMS88GRbSEyVl#wTkgjFC~MKDOlhWh7JU})Fy+v3UZild|JTO_6twS?_tCXc zz>sNsQO+8kEdn#bM8Z=xD~>~sIUay*s-3o(w!PbnX@mR|Ns=g?0pkI_0fwlINO0N~wIVgPfHDBoAm2YUEGt@t3!A?f7(FC1oyg)_i)4J*c#(+d7Gw<(?p$WzFEN~!ByX=2evC> zqu^wu2_5;0{ZTfS)G~v6NH%pl9-YY(eaUGL~gUe`@h}k zTuVK?Skw9Vy|44874i)uYw;7fE%s9DO}ij7X}`_ErE{kU%)MbBrx℞6dZj<cr z6AxIvV!j7Y#1}7H2YXsu&6{AQ0K7NAoBpfP;BpLh^eT51!!P>djWWEoV(K~}_qkNd*!IDAA!A-$OKd6E= zg4fZT-%q};Mh8dyiA*H|lE-7<dIK|w>aWnC=O~p4#Xc-;u z&UYUs=?c{xX8dr{o}Y(b%7@2&|ab5y~S~2`8(`EL9eh6iof+KCD5(h+8j?&)SDF5LrBP-W>3F)4XpRPs${~{Bd|TQVQ9i?#&z)PVDegB&hhmxTXm@G^nE%Y ziYLkv*zw4&x~eK)HE*-^64I?M0WS-gdpu=N35}yNqw3wV-z9_JJ$-n}e#v~jih5Cb z(nG%oSn*o<)a+yIDCeUz2584}-P@g?D(^PfF=+P`+V>ue zDj;ljP;6cHl5;vaI$K+131E5l+nV^+9@K7r=L*(Xd?dZ@Dg1$i z4tBk0&lZUnd7RU~Onq$uh4m-26`w1`TnF7Xh-5rhJhfgwh&mpTcn8dNIC%p9Om2y= z+$bEM_|y6D-P;`5?koyyMEcFHkSqqg*>9|V^)LrVZGxY-uC`AH6JwO%E&R#-%AQZ} zTleJVQrf?JegCeS9a+5c-pJ`^S{hWx3N(}u&NyfIdB>v zxL?smQ1Q4>7^ru&gxfX2sqo;DN^cWZQ6a&QACkLi#OF551cDbB8|Y|V-0uSCV18LH zZ*Bbw>FJqVHL7cd=8dZsHlz$pHc z;ZptmK+C97{(*vm&azh5cGXsp=Qnk~+1km~+R=gZuUumjM>kg?a`L~5{&W1Ro#vj_|D(yl<=@?cbdcrm9TqlbR+j(B zhCl`XmhvlGdz#y6i(A{9JGek}2y=6B3jS07|8?hoH2xP-=YNoFtp5x7Uw8hE6lD3^ zf&c2zzpV97Da2gD?*&=@V|wBD&u!(>kkJ5Giz}%^&M<$626AvhKD7TnL#{u%e!ov^ zg`7oY#6PKfLZ9j*tts>q`X_NGiDRlHn#s@?D9c0)DJI8L>CnsFVs(MVn(V?VFtO<5 zXbY8fR-_wf^ZIX#3pA!dZ(TGlV_D#_^$EB2r}cxEmo9K7hvh^j-{hFU)tCTyY}`F4 zm{b%B5ek|V3N{c50}4iz6c%P#6d*<#wEDlw(O^iUOA!B8kuez*=p(LtDD1zH{}KZV z<^MmT{wct~g&>W4f~5Z!79#B3|0?*uQ&?B%&iQ(~^-O_GgZU`#0lE{+*NSk_T9bb1 z*OexFIk@*9LPsq>cY|O!4C0{>MZ2+nV#EeBMu=A2FxY^2eQxat*i6Ke;Rs0JVeJqL z3JX;#bsO!PO|j5k!jU4SDUmP({i%#|$wpZ$jM zL1Lr}k2q|=#H0F^Mq7bjzGA^?ocl7ov9V;NP8}FSyt>=*k4Y$nL4wo_Ftsz)p<$-p-uz5Db$w)!p8;f|r1KaUAlmoZ^%e?PexZe;-6mnw zGqRGfKMjYqZH8RxNHLIK!c%#}9T&5Od=9TDs91%v7`fmcBI#gEZduaoIrb)Va&TD; z0J9CbhHSyuVN_(0=29|pn(ELh{I>r4|(Gs65ts>yvDK);7Q56%fOO6&RNO5bokFr`Xc!76sIMqxRep;r+ED zlNxC>w;4vZEFxvRe<9ZS{lc8+uWJ9VyhV~iJz4`F|C(_WEi@k$Kd2b%A2~q+U0hrc z+ZmEZm#QfJNn(@yRSjCMdk3--gWoO<5+y&Qdh6na@I|?2)3b#+$SOG(^}F(R zb@vl~=iSj_Zr-*(EMjKX4(GA=r2RQIvZljN1;aDv>K(s$=|>!}W6Z6e1-@j)!~)UN z;lrYE=q*st^3zYttJR~(Sw**V{|y^}#I7stTD-_j zB2MD}YVV4^L#G7W#?>AbBC)S(oXz&4 zfrZ?mQT=ZlYj!A1tYE7cy~*q|XD6eU+_&V@JDeJQh`;Db;hA3D@%p-A7@r6M=cGt9yhe$O9@>87T_jV#PZB&^K*BI$T#q z06B-yJVwj#ivpBf!^B_x>rp6_w!3LW0r?Wl_b#N-k(1u^gn&ZI4qL22kyk-^De~v& z7m*jqy>p_V(qlv*G7eGSbhL6E)?jbIi$cKLRrO1+;Q8|t7}I9S1*Y?L>5_cH;E>kBY;OzySXun(9eAmTMc@rsu+z;hKj1&qq1XTzF9P`lg!1#qRf>FIn z8tqe_8d?>qO&#m|F0zkIi9f@KnMAf5K?priUM11_f3W&!zr}u05|Ku4ZzoIFj}MM`0wzw}gPy$(Cwl{?nGGUu9u|G< zB=9uv?QvwMUULG9W4i8{t)6AgnF|5MIkJS!rzoX_O+n&0EbX+0+TJ$t(N1Cc4RBh9 z2BH41XECW&u1b_Ib=w(M+ZOoL?|_MqF8zgYhbUDi-A+XD^8^0wqZplhR8Pa#3y(~n zB8n-&*{Zw0udFyuu5R^3V54l?OCLW0m7eUL&SM{Y3*}*J0UPo$Kv`@n{d=~*PFG_8- z*Bp#!h z19e|}ERI?2nhrz@hR^oal6FRy(Cak@T#r58veZuo*j+Vhzd2;3w6$35XmQ#-o-~9b z*pRz`S^Z^z?O=srqGP}&}?OYIrIxh*{!l?OEn|xY`SqQc>m>K z62$#!cTy~XPh9TWc;=giVk$}jyhjPi)M9Ci=|Pq2BOFcMt8=Pxtal#JL+d z$A^CxSgs&b1pxB?xI|7ztYquN#CDfC0nh8*P0qPNc|uhE6aRvkn|+mCdytfr3w$Gx z(T`rSW@k|_ye)qx!7g|W55xXxG)91e2`MqU{?oke;acY4B_2i^OP>mVmOzI24)H$P z8P-*k4^w^>d7}@4y2ZmQQ8k*|4x>(En9YV$q0gDy<%E>pQBhMb$NKvpyt2KdAN9wH z^jPC0@ZaTlCBe&kQE4~)y!-0}ff!PR>>Jzp?Ob^i3XVWW;$1lVLPATkI`TEY!A4G7 zBU_&A*i8B}Nmj4b{g840XMdZqJ|)MJ^^Acq4C(0|yv;8pPE!1nbbc8E#_ip2VFkiG zrJBN|(f(xKF7xZ}4lSCxl+G4^Qzd%?+?a0~b84-OE#96=bfVrXeyA-w07bW8cyM#` zx!yb4Y&g=7b6wiUqY(m6M=4vBP6%9&>6Y!QoqqGwNHofThtpPaexh6RV9Rtj*il`V z>V(viMzg2t46V)`k>6NSW3%fQ1g!A3=g6(?X1CfeWF^VX77V7Ve7$lxiqW0i)V-rx zU-LKnAh}Kid`_y10<7p|7QSCFJ20UmeGi2J}^Xc&)52kLS0H8Xu zm}i(8gT8BZjKkDuL{s8l5X7O?{2r}PRwfsZR_yuRADYr`K9P6=u`jBRM&!kNs#Y@8 zja)>JMB!uz&?Lz1XBYm8c+|(XB^irc>!0nnf8>Dj0AD@fMjnH)ik`hUz>&1p*+Y{T z#IB%BYj`d%Tlf5(S&to128e}kej;SrmvJZ`3OBtvYi#&YR1hh=H+^i2uAuC zb*~|~D)0#sL@xF6T)ciS^pe#HYtdbEdc!`B?|^r*mjCr=`wpR2^{%VB?I|*IsOo*Y zHlBI9G=KZ7k^t4#D^L5Kz;`MkWw6z?liPWrKpt{28z#q%mQa2)7Wnef?;T?nKT!Q* z4k)1K;D2B#TXUn{d>(P5axIrL!6EYl4+vPTrxThh376gAlO61^-Gs&(RZ;BqrqrB| zuocFdiiQ&e?2^Y_Ge~n|A1D7a&X-?JN*(o^>z*nNB)_3sUKcr^;uh>GWLLJGqnfHC+|Fz4Ar86?yv|l|CN+s6Je@LWw6JBUFd>GAK8Yk;7z_9k7 z*q$z~H1}pwsEApHV3+%y2*;t8qZB29?r0Gc;;59`H+}aXAMU zX+9pA(JY5?0Mp*ModhgNT6{_;ti}%IEPf$Dp=F(7 zDd#t$7sxtrrcNH6uwR|mm=Ue>Y?petZKA>P@~*JgH{dZJy02;$+vTtnPm@2UYX6fK zRrak)UA$X)nep&ayIqSwASV0V!BKD;H-1W6!gQ7UudM?Ay9;PFH3On3?G|%c-`DUM z0CJ{$K$ynNsa@ZD{`7UO?9|#ZYq0|R)E-=kBjqGl;#ZicwEEBb@p!;Qw8~F0Nar6~ z4jWo}qy_TKW*4&5i;ke&WT=l=!}42_hbls6RE`>ox;h4cVJgDbpmX-`tI={xQIcVO z*5eM0ak7v|yueFDLO@dp^FQghz=}5pl^uf zWD%3W$r!1$P=K*hM&NVV!QN_H9bw8?pG-%w*NRS2OVZeZu*R2`M9-u8!_t;-QCUyP z;rnw>KH!dt&Rc@rVDe~-&5jU+U+m?%7N~ox#f6Opddo_>Vb{Y{U|FpcW0IG@IRt#8 z44_fZIA?^|1@aOTA-KVppJ)9-OBpF@Pf_7HxhqrTS1oSYpPt!di%WENfgkDUF*oWC zGN!|aXq0L&vSWs|YzzmQnm_Bt;o)QDhQZm3If#c#eK`fBZ@Lk5w%JEAIIX=HaTB`* zmuKs=2C~evJNEZlbn4x>Jm=b4S{wRNf>_Hdlh$m1z>0%yC;Ey=+E z@!-y}S6a8$s~GjaX{leSIKciREHcSpRO3Bfx{15I2^EWObBx*se)?uoY#9TAIjpOV z#X9y~q(i!6^(*tka!szFsG5o5V4Af|M|7rPXF^;JO$+wfL{=&Dx~KQ(^+lz-zKplM zoh48DJ+#Q!J6$S^RnmyvD!Z9Y7uM^3Ieb?>J*mXQvrrj+c@S-v18B3NuVJao$y#6| z>lQHy1cy$}j)5z}nQ&Tu-(*UDl)@AfhU<`Q%=y59@PQsx$E?M|rWz^-h|h^M{e`bK z!F{}lE^ zZ#Q`wAsyYmkU0MJY&67#PxE+JkL~BWs!F5WK5J1sg_C#JUISM&_zL=*t8qqsY?TTM zvW{A#e%02sZjOJ3uTGt36ZIVv5iyBxo}JzB7pDIvp*E}}EFjwI64j=UGCSo(`DSyM zI7(DuX?nxDx6Ng9-l=V_F|$j{FW$E-iSt>T=gUg{ghj1)V+qV2o1ZD#xt+f|TI8Vm z$&OG)=TRC&J%%IczmxR0kjgV46;^5!bEPAGDM>0WikB-+&S8o-2vVGx72rN{n&^Bm z=5b&J(cTYzBcqxLP3^Kg&IT-wpPp5yC%Dv(WP9uXM2`vjfdxs9Mu1qA=744k^rho6l(65)GgXLI$LXz8;NuiCNQ5xb~p%N&PrBqQc^KSF@{_-#MMeB^Sgql9`BZI8hxs5k|Ls+qV<9UTW4*h=fMgPSp78Xkq{0&< zkP5y%cVI6PuHMPPVxAPCJEe+mK8t{F-PLtRj>Bi7>Iuzvn8vX+kJIg}w2!r3!W=a- zALo+lWLf&xkRLu$MYB`6`IYBpi_05ObT=}>4#}B4K8#S~L%+%yTzm_b`Od_Ue6sG_ zNT^WMY3|m5mBpJbn+F=22F!=TDW#3wcoxA`qv#26U%2LlmhO5>6&B}C_%xPCig`8` zVP!$VQ$&Mn8ZSc1SzL&*yBh#W0%eqfF&6Kvp13D}#K8YeH&*_p8?VTCcbI7tH&|r6 z8Ovow{^$#l*pcdKz|Jajdd-T5x?|n2iacNSs{}3q0zH3)b+AZEm0c6U$f@oJQm=3-cU?nh? zJH2>1-Kb6AGGOhSW6tb&XVJv_d+o7c_KvYfQpfE7>XR39->YGY_XQ`MDZW_>W1lx3 zIyRoj@h5vOTPRY_F>2O4`?s6b2#nIyE5n^19;M-|C&@ob!^#A)VUqI z7v=Nqq+AUsRtZC_@neJN0L{rBS^OrY(#)^I*)=Y@A}qGYffDpjAm5+>qFtyb@(GwT zffZ@gnYk_&_V22$j|wKH9w8H!X)=HI{=%2ixn&0CT*e)IFwG&a?kB{@ zAfILrtN8N)i=KR;`xJ+G=z|oDZXJ$kxTl?=t(_{Xb3r5+iB5Ff2dQY3Xh%9iUY-?Z;(EUkyF`QCz# zm14Bv%R_u{)-u#Iiw+yTPnTCEC7J}_=E&$ps0e3rR5c$I&_C;2*Ig#f3i?>#qHcY3 z79;G$Df2@SKw{KweE~O1l^A`rdYw8O;LYE3B|gKVM~uz1#wex(pkr{Ph*N%~Y9n=% zHe{qbk}|oEZDaXf!`}a%@21Tv_bMyjz*0S13{z^kNotc_QHW-c=@gz?uPzLhqH(tM z&Bot#wL`g&Eita=i)hj0ujSBuBYI>3w=nT;`N(Tmy9585lQ$?RsJAzhNs4^PTcU-( z?-I`RkvbG52m`8QRb(FO`itYmRe%ZNVYoqwpX+e%@(|5O-7Cp_LK#$~mt{WCQJE`@ zWK+pCsg{9fQy4b|2eVpT2Kd082ibRiV4ux9k!}*pTaK%oJHD$N%j`5l4@KU~Ezr(R z)t; z_c^^z&_dT$csTL>0@ksxLl=&J>9iPU!%G5vrBf8M>z^eg249Oa&yi#%#X_%}4nb#b z)QqMvwc5Ido{?_<7jLD#nUPG)2mWSZzDgUhWMaIW*z-04;VV+qlRt?gn}XKw6?Co} z-y@9HoBWn@4Oq^wpHH%7k6o}|w~XL;XMZ9hdPbn0oALgDE8$D;_aa~M^?@<9qe&rm zmd@q+u=iTN4v3X24SKJ3wknsa$cn<|xP zrW%)XU6ZQ$1Ri?Zj!od=x+wS(PMS%Oihb#0XS0q>u~JU1+(>in^S%dN?wfi#@0%Qh zeapvsG?P>IWB-?z?!;mnDW!f2nJz&tL2Ql;)BEVy%A(H$-_9N>7xE04Y*)&N_}%E- z2)G7uE#YN1ltsskV^r76%n#!uSlAPYdgYbs*5_pl(_Ca{g3wDQ`y}Y~?@lvUW5Qpa zIv82>JClgLj1#jfo*g3|%EM9zmtJlMW!j2l5t1PEx-Y(YvM!gd_L@-!e%rt#^~QOp zN7olL24CL?r?&mFQKq+RD%%p3$!5lYO4&l|?a%{_v`EiuFCL-2mk}*Ms44x}Hfglj z%6y@s07NUPj^Fj)^=Y`NqYM>~XJC#J)w~l+W~>T@JGpl{ukXZqEV&fz{9G;&+1}V4dBbhbF6oip;hpDD23_OAYT4oz4t`V z%q$btTdkeQebcCE*Zmx1tNaXMm%ClRHGfflX%ferqCw|S2uXvo-|!1PXHb)uRMG8= z3j<*D&jx?vby)RDl@(4h>l(p*^&E@1c6x}{ToVDcCkPSs0ezb-X=~5@n!Gz;6<@(0 z^bKk&Q^-FvVe%n!D4|aFjct=hm-l^9-@eUj$|mN$WLVc_340ZMXl62iZ?QM*SPrXd zBmWWEw&k@yrn5rt-`o5p#}IS0A=Gqn@nB}FS)}VHbMz1jXlbXFV6OVcv`h${5-lHx z&|TM<2c!+|sk?stdCl@mV=w)HIM-8`>4Wl-oBtkipNbg&Twm=B5zn;cXF}&`iRFgo z?7MS*r^s-jjjL~-(b}AsaNZ3jbb2f2-$iDR!FSr&%Xgo9n;k}DlHEDCFJw7$eJGNe z)3we07&Y}~jtB;wum>AB<%^&iiP*mnjD0cYT94v&28H2J%p+Lmrxw_H$j=XH2hZLs z*)Y!zS;*Zocs7kRKtUpQN%)S@fu>>vF!Q!{-A(zd^>Zc*v-AlguJiZ)Z;BrBSXvIx zU$vX=H=6~}rzTzohvqy{FcUQK*t}#cZD@bX0N(kDnLTlLZ)P|!=}x^Tetdw{*XoSe zKm?%fQuy0_AXuTr)ZI3ZPfn3gCkjWt^kg zNc8l&F?e!#bneJs^wMC)iqpZ}EGyu13$S0S&Ed9NW!bN}Vy8x0Xn)DcFD_3~^KxU# zp$piij>)RuUI$8dXqPiCp^;@I1M2WZ)>umPmABt2Se5 z=MTZEw2e_l`}HS(cC2mO+V>>PufA28X>NLlIp`QPwN4ilvkrcHh;Y_&0N=jHnIs?) zu|V{PQ{w9T6Ua*t=!xiVrJWSwQE{OAO@Ub!SuI>hjJx7+ROI^yhYNhw zgtC%-_g(?n_N~wq8-d#`mYE}L$MAD~3J2==2G}Gni9zC|H==@_PH&a^Xew;S^tZ2N z7wb+O^OPCW)t@`&!NO$@M$e)W-it{q9 zmL%L5MJ_jf?`QNf2KSsydES<_OCEmZq;>}t4RI`BM|Hn#!{w@enSGIzVN3doDi3JL zEmNN-8`S4O)=pKyodF_=VIB6(%==-yJ=E zI|$>#-WB}4AnxD?OCHS;oc>0ad!90Jv_my}&)4dqX7eS#!yM1+bWwy3xYZEYl;W*( zbjRRXM|_0@vLcV~VqI0L%z1pj*TUGY5h$_}6CUH(YvaK{D5_{Q?%P^ay+S{aXVHc` zkxWO$D!s(whUqRp6O~?@xq_ZS_dPMKFOG0JZ&QHNx`%$AczssZj;EWfDXVaH)gc}& zi+6+Zw9g&UhwZ2-^z3o<_%5yoIh*G_q0NHbr8aBY9#aGT?}gEb2+D`cne(wR+i2sO zu$|jwzmk?E$>j4!kK~zXKPfxzPCE+iwofF4xoqS0*IAT0DZZEAc7|qh6FDTJ`Gn&` zcN+R_OMul^O<{H8m&49=<`!7`nI_%VD*y!Y=r+k@1p!&42X?%cOQGjA>Va>~*UMvP ze^|QJe0RQP<68ggNsm&-91Qtks#f8fD+0K^U^=z>mR1#V6c#U!^fw6g>$Q6j8qT zuT|h&KX2imHh!_d9u$q>(7$c1ee5Aha6RmcyE?~3aCMO9``NpFZhA2LYglf{=W7N} z1J``1?~icw>v7dI6eY+)Gu;r1nr`}09>lwyB$@a}oNC@l#=VguUi(7o_*1T7t(+YcrT zASaF-iC<%ISu-J1d7aQWB<1^^Sd_RVa{>BiE`&7603HgKFmpBUj)m_{5+02&k`HhB z{OoCR+at5Z#QJO$_!klrnN-B#?aORj8Yc@9lx&VdY6Kr{aP{WotK=R2YTI>O> z_Kco(*xbI4G-ajo*yx$v z(gu%?wEkos@3v@@M_0JzJS|J|(0Z?I|f|C`B-}ibquc@Lrfu`c&aE%R>I}^NSfbaCbmPz_2x{ zpWs(;Z;n<|RHkLpl0!Ld(|Q49(^Lj9erB_97@cv$*GYOBTet(BN}W(D$1Vd*HrY{S zpB8rgV0YA=l#Z`%SRtT0+W(k+e^qcI^CD`$@7%VKuJpqEaYNF+usLL(}!7Tc-Ljisqvf z>^Cy%?#l+w!EyYV@az(28Xu;?^hI*6_A*BdDR}beG3@)>AO@E1Q(rjH+hm{hDf~M1 zij&FA5WyF}3!90HvTsnt-Is8nlCQQ{QcS}MT82PB{w@k348t!;2k)5fI7upgpKjYX zITqd3D9E<)Z+r@ zE+|Wv%ecBoz+i|SbBq5$uRzH+)3K!n+E1n)dVUoCQYzjT&c>3mFwOL^*#44}l?C2E zbus5M3|#EmA+fGQE8@ENIQ(S&Wif<4JOJGn4%cveUK(L5fxgh_+~+sG0KCLv5~_Z^uiE~3W*islkEmz+D`hW-_T z@`kNy<2ZY@nvjJT{zk*q&#AmDjUTn1n1ktXrR$@1p!@Fbx7ua-QTI_A+k_=wiSAWM zQZ}5$_-tl;x_7ZdzF}MfHvwL!j=OxC*dp=&x+sAEu$adU3 zlWE@kA}w)JT=5`InDeocw(6RVsQMfdjae=OE^h0q^tW-44Xx+{zSsu&8MY>37dV4B zPj;NV!9Y%Q@F8AY`sWFEmEbFVdm=1$E^ObVA;en0Gk4vNI9~0()v=i)yueXj|I6Lv zwa!|%;o8|OwIV06xaDiCb;PJHCbQG+>V3Eu7znw#Or*x!Me>@sbgV$W z$>Ka+Bj%n;(KAx)o3;tOj|tlesN*H6PdTh5`Gj%qy#Mjh zO9WdgxtOUwUY!eKOIhiQKX?ACr(LqvJ=2e$B$D4=LD6Cl2(;IizJvqpxnFnncZPg`of5OOfOJy`C>%u7vPf{@GpL~F@+ zqV`QcIavnrdIuoOiX%h#lpB&*mwTwy+LNfD!)IhDpz8o!?I%&FzG;Eb)TItn+)*k~ zKxdTj?kJ%_Z8l-w^aCCg=r9u5fFX5Y2*GnOhoWM^_*N=KCwBM0q_=zy zeDk;DLFtMj`&exjf`iLPA@s)yRUgGS;PqZRg#+T z&4>0`kT+9vw_4UbKltxx*RO=;cVd1GH0*IXf&CkSg~m|9k{Z@>t{mF7VE$o%FvPZr z**aM0G5#=kI*|Td;lAH%e}=lmk;{+j3L%94>jFQXWA;AfLFjtl4&Y(_|1M-Njd!6! zCm|ZZ_gQZ;>1Q{{Ii$VYlLTYP71lXZK!$3kN#*tV!FoDR;*&l4E<=e^UL9j7)Gh-u z8bNxdIR;{guNQT+jEu~Jnb+YLXnuee>u6wb2+UU_GUdZH{}H@94z^)aFT|qnzHrzI zb4fUufxhPbDqOF%ZW*o}1 zgOTx6d%pGP3x4YIMaQHc`i&^sRrhBr_Xsmav}Sjd188POEuSiiO{3T#%J0q0LR2ic z)D(T6gF~zyB>}R`;EyE zpFBD;NVru3mfZ>#0}&f0molmjIhG|1HoG&CSw$wSTV>uNK&FtgN zN##3^?Nh-GIN0A|P$WUy*po;|NS`*d-A@p9M{x?NC4;~t0 zumoS$752Z-xe^dH4flEO|7i^rqBtsKl~CbGJVg92^ydhO8mkM5v;QLw!uSp)fb=lm zf_577ztBOr5H(Yvh?TGZP{RMk{vSZk!+QV# diff --git a/understanding/22/img/focus-indicator-innerline-strong.png b/understanding/22/img/focus-indicator-innerline-strong.png deleted file mode 100644 index 0bca39f28f80c980392eddbe6e4392aecb95402a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2260 zcma);c{CJ!7so{rSyCznDJfg!p%`OHnn4(A43nKETV4&7Z7fM+ED^?JCyYskvBg;8 zk$t8yS&Fe`iL7HU^GwF$dEUR?_q^vl&p*F&&+pzpzTbQ9xt|+nX>KGW01)8f;u12x z4YB6pI%ISZgOBnaydtFTUM{Yq*~Soko8X+)i7-o>@6ufxBuClO_(GTs+UMwD10rw# zTZ8hULR-QikJo5`udkW9x-;+4Xu?d#n0=dlxtGTk>$2cD@lr$IhwcMNbU~Ngr0gs{ zu1iuY-q+G~aYZ&@qmrkGS^Wo!gB%I$V}jOZIekrQ3|;@Ufq?;Q2&7m5s2+>yDYB6= zfC#?PjK_#uBE>{i3uY8#-EVeUK{}%1i!hi&r;J2JdCt}W@NeE=@MVLHx{Ex4(|$S% z){>)Es(Iv)kZW2RNgc)>8{6B&odiYYZfjUYQ45@LISI!#2rNd5>OoO_HCkCu=Fpk< zpI`FLcK8@F`|4c;2r*|*p*$V}Drf7-2quV|IJ-#-cx_G#mEbl+* z!{3D~n_F%8Mc>;CK4H03K8}8D2l#46FZJ8J;q>=vwoCef2nwZYWp~WyWJtc#bf}Q& zmWr6>-V{FP?~K)oy%Z@86u}?&VkN2*^Y6c$2)n$6;v)|v`*FUujf1+zV=Msa37PhV zRfC~%qry^B#oCo8?hZ2HLCZoI0ke9|#z19cZ!Bw|(J5pYrQN$d8^ohEGwW8eJ{n^E zs{A6W@7w@K+&ISnj!wc_z^`^)sQGwz8=(G5+oL(|NSDkm$*`+qngTL~UEL|awk#WK zw>u^rAsl>7G0Bm>y$6*36rc2(=oniaiZX9Kmj(hR1XW~t>v_p}>nVg?)>_*_1Zv?YMU%r)&R3!{-mcv~z3okrXJ1)%nlaDj zD!JGh4Sfc+O*H`-Ms5{qnh=qNeu1Z(%DYn;lKNrZ| z%0A{kDz@cq*wtQh=Tt6_gy?Cg&CRgrM%GEdh;Srz6IcGW!p_=S^a~h|6|;lKop@H- zS>e=T<2RO#ieL#p@&lit8buM`E*m}Z^7iYRI+Su)@+{m`OX!G?-hS#yg)%jY3Eb98 zXHYKY$ngi#hU*0mYc~YHK|3Xq&duY^@0pW@IcFCAfOtmoDGz{3lMV?X_%O>@+5sB4<$lD(^;pN!Xoq_J8Z#NOu|lR;Q!3Fcxfev#;gyWVmM6GI)rpul}fEnXY_2 z5nCBg+bc3uRT_EmA&sCao;yAJaS-({^h^Er%qa)&r~Zeve^yL$*sTadp0%QDihp@H zn=GvdtG^h!cUjiwE^7JMyv0~sUS%-MC@88dHgkVUX_VY5eZglk0h%FAZ*>QzhA#<} zwCN{iHZW; zRC3wAHkdLFuHC1RLOzo&ka)@f?)4U&S3tA#a)NR9Djh^w-;>qkLC*{fc^EKYh&EES z{(hooKZXl!Xrz{N0t&3C^!N-bsn8od9)|Edm=(pcr7SEC2XJ&yI(hbNpIay+Tpkcx z?Z5d`t0DQ4N4<78qzLLok2c!TgT%|!Pv-2D?Cg!BL6hp~A1Wvzi4VM(3AGibQkk}FO_rEZek z@&lV5crcw-!^8)tjesitS#F^|08&-ue}QVgd#S$)S?qs%RyHET3k?TjpCCXraPI9{ z*&>hb&x?3U&8DzS5mBn(eDwgEqPmowPMgWl^d|0n^>a}B?Mz<#GXQ}Q F`cL+WVweB` diff --git a/understanding/22/img/focus-indicator-innerline.png b/understanding/22/img/focus-indicator-innerline.png deleted file mode 100644 index 10168a61930ccea4d70491a2b5858bf38d6a7f10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15748 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ǵU4W%Y4% zTDgH}uX_oP530qK8LYm%wt>qFU)j8ew&8@O`?XGej_7q4)<&2R+owX@XnS$J^WE?4 zcf_I69ycxvOGA{ZbdK2JpP7cb``b&6HH?%1?*V7_iI17Z6fDn{XlIhYzJknslV2a{ ztb1rPl8g4z0!of_i8C(sxeo)|3T>r8_p=?9TDj@-DZ>h^OX)=xa9&Fa=Tp#v`h~!b z$l{xB1(x&Z_sN36(kCK`+h>(uw_A82Y#OY@PlvVJ+>x>`yZmlxZNHkDtPcyHZ<5Ly zbA9iD1s++Rdc#ps$r)TtvtokqO1huSthyb;MHcSheCv$_Mwx>o?YU($0PM2qoR%eC zMbaLwY5B9TnodN8R?A3wtnxWs0yiAd2LTMnZmCjwoL%s%YZpkTX&H0$WAF!F2{7O~ z&Br!B9<~YMlPbC7E?IXpwnU)8{K{@-ho*NL(4j;chuiY1O$xIeeZ?)K49*_~4TPi zzRr@ZaTtNpBWAS#IBER8%odD+MtoK4vLUMEC_7cmX5OP;Z3>A-w9EquV`(t?B(N$4}~G2$_kVZ$~;e zzpe_}d1{cUri+{^Ox``e z>_3vZFG}$}*Zx+Yb`@7t3ZCnJfqJ%>I|zK;1I^`->soSKshfw9mvqfYG^O32&khS? zmh=Dqj94$zSWzTznzZRni&|q^f$^ z(dKUgiV>9^a-~llE|!RmIpZ%{GQR~!C>fP!eA|Sz@LJx;z5>aHOm?Nu(@pq1GW1xl zk6xqZW~T2d-&QV9+w}Qi80|o-jSP);_Kv+)QjzFl`JQ~An`kNm zXl~M77tS(0!%iF5xl8x_1UU0ryf2ywXysFF=C@@I zYKk+#JEF~LzW02rJ*Y-?#?bFSqOY=Z3}?FY+Lep`s}#SJ`LN+oH5^W0W)e!h!#9%lTRBuI`TH;`-I`1c6!I~zLcqOx2C?-fHRPezquwTt6IDry;? zE?=Wl7Ta`G%c{fsu0jvMX^6&E#3rR4hADRu+0tKkF~R zZb!2+MA?}~>pijF8XC47R@8=;hYV%C<|JyNIBres4|&Gd_)Ii*&~z*;Q7+Fi*Jx$P zU#<;+{Lu9RzTw^1r3-XBw!GrOm<2||vj$T30Df+@(IE5;0_+Uq2MN}_844IPG~@+S35XCj{y4{H z7BCMlJU=ds+0E=Rcu}>A7&00CiS>mH;C6%=!WIc@Uq=Sf10a(5#|igrXd>hgwx=Tx zaMqu}^c+Z11Ku!ze76Wa-}<1M7chd2fpG=PZ(tt&@h|aIx%+g9uif<|+scqb@AF~9 zia#AfM?qUIB>!?f{oQnWuXvk;a=mU};0zJz>Pn;l(9lm2YZy{Ms8#`Oyb%I;eMAa)Rhu5N z631``yNLt|b`$PRi~<}+BY~99i}+86ci5hT^h{}C><}=P`x*#;-MK&~fJ7L`o24Du z#)J9`jCA)5=T!y<%nG>8ii@)HCw>X~gCNQZS0$}V+znP8B*ywwRGc^wM!Eq84hISh z9Lh_mG#FTGu9&Nb@Zi5VOtNsr`cuO|wxEueVN4=Om)LEhLj_VNq-5tekWAbaIUyk< ze87ToTm~lwnU9Lf?}dMycKx^0G+?K12&5me{-upg)fVgV0`?zm2^c^n^9>SrC=8%j zjY$fN>fgxoae-r5JS73ocaz0tvxn)0NzrP7JJ2v&(s})LeHs)t9H}fuIcY3L#M95< zC+WLRL$*#bEa)#VWO*=V9n0DwA4nDfIT6;ZAglt4CVS$N{O|ku(01Bf2r)Fwb5V5 zIiakL#41!%Xc7_n+X6rd#-AujhmaA1A^ztZ+yYL=&fTvwVh}K*|N8#C2a^Jf!fF4* z1cBhK01+~&-z7`*KTHrX{>os|y=D~D|ECN_^#9eEy`ghu7D}Y@gkpks0U_k1lq9Rg HjYIw)rCqv( diff --git a/understanding/22/img/focus-indicator-inside.png b/understanding/22/img/focus-indicator-inside.png deleted file mode 100644 index 1ab9cfdc0e5941ce3839838ee41caaef47fd0216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8532 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 WLiOBI#jOs2eAJaSl`0f0-u)kdo$$~A diff --git a/understanding/22/img/focus-indicator-star-shadow.png b/understanding/22/img/focus-indicator-star-shadow.png deleted file mode 100644 index 8717f2642aa5b51b9fe21caf2973f7f0e85aa651..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71875 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®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 DYA9^i diff --git a/understanding/22/img/focus-indicator-strong.png b/understanding/22/img/focus-indicator-strong.png deleted file mode 100644 index 0042c3157a985b90cb1bfe1c6e493b79bb65ebe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13179 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 ZzHIh!)?Yq6|7QwL_Pvs1#XG~G{{?s`K5YO1 diff --git a/understanding/22/img/focus-indicator-thick-non-contrast.png b/understanding/22/img/focus-indicator-thick-non-contrast.png deleted file mode 100644 index 43f0d7fe48bbbdcccfc4a8bb8445e6fee77a3caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13050 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 ZUyL$Ahk~mX;3rB@(&F-B<(~}#|3B{VdX)eG diff --git a/understanding/22/img/focus-indicator-thin-non-contrast.png b/understanding/22/img/focus-indicator-thin-non-contrast.png deleted file mode 100644 index 865cad28ec55e43b85676313e914c7f7ec72e1a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12199 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 v&W?9(|5wMq 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 diff --git a/understanding/22/img/pointer-target-example1.png b/understanding/22/img/pointer-target-example1.png deleted file mode 100644 index 8b8fff1022967eb74f55fdfe803924490e8d6b46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50360 zcmXtfXFObA)b$`rbRqgEL3E-8qZ6Icdyn23y%RyAix!ODqxW7yFwq&&OE9BH@AdV6 z-skyn_dVse&zHOJ+54=u&R2D?JRUYBHUI#?Q&jk%2>_r9KerRHFrMw6t^dd87mA0b zyfmPCoO<`U^TJk2RSE#8OTf9eK!5JPbW7-tLQg&0IvpdFerw2>F`uJ;QWd+FyIXv{qKN}0N*;VWZHg8v)-Z_ZO+69D=DF3*1b z-%t~Y|HtLo0Mkf9q5r!a_D*dP05KE#c-8atGCeg_0}RG5E-sF6x3Hks(bg7nJ<1@Q zOOSX}U}AbrZN^$$O6DfId!HpwLBTX?osw+=E-vm6aDLooS{|9G$r~Nz^%MLS6U}CK zbx6w|ftH$bkk>rT3>OWeN);jlIWv)P#0ENTKY#5AP=tT5n*CA64NBK$(Ll zr1n3+u9TER&SAKaalC=#ETgx){T&?kuUlpEg`j2~ax_=^M?~wr)`7GW4}DTkd1{(I zL>BHQy~vT_Pop~HEIkne4bj+7ZeNHY7bVuQceT1|*YdBN-mxpg6Rbp& zuLJi0)@znsB2S&4dFgU>Ze(_XbuQxT^{mPKwunX7D@V784@_Kx@((6~5-Z2`1DLb` z6UZ4s7Egff8lrAOK~7xVd#0^~Amqz?*?nN}0yp)ZpwM%org>B~Cxo1j~dba0a#8Y@N z)@grcvp1QKCU%2Jwh;9`&{tAabYETNOHEIYdBtf8RdDVxmFMn!2hH){6ZU_+S)FOz zmG-|us-6#!O*Oihkg{9)6=O&6kqfaT88*(pJ(4>uQv98gsSC^Z7NIvbZ0CK|X zyBZS|VP#`W@7K{*;uCKB+`UUAU(?krd@g<(E!uOtSJ7zx6O}cY$O?m@+&t$UYpVFI z(C|yX+?=51)OXcAcP^OD3*X*?$?cUEpV%$AkjK`Qe=BE74n~)JNT+(kzNT(SEptkI zEpgw}Dr@}={5askw$^1djcMzF_RexkCG7&|+cudQ^_a!d6kJVklUEf{?_3J(z%DDQ ze8WNQyWfnuH)GEnl|i>Fc4f>AcC9K}XjkPJGfPw)D9$VqH2w(T#iM#3yWdK z?0YZuPxHDgy-$1ZV%0G}w%%&I$`4=gyW9iHyLJofAY$A7cZ+xPYx!)7umB&&Jd2R8 zC>eLs1ysJcuG~`ZO}cj!vg;mElI;O+IMzk!xFsMa+V^E%HH^-_TGn`GJ6b~C|$QxQ@iHjC~Zf&N{zl3M{dms;IDi%q=#bb)t+FBGhAy zqsUUC4a{q&`fWMLsHw>-Xd~Wjf3aumux1hEDl~JK##wnL-u*JpY%TcYe9Oovuzx%^ zS8hRgdH!zZE;fVW!13Wew1Q`Z=$T*}z&z9GX z)moUR7lN>=@2~ldHvxet%cide`BeNu54l|S$Zq2@OK-p4%3>Lp=W0PeU>|PmCL%aD zADI>18}mA!R@Pz)a)Xz!OJ9gP&T>rIfBtzlDYygHR3cK%$Q<6SdfheapG$YrdFw#6 z2QN*y_JFH>j!IzT;41y&STFmu9z%%lZ+Q}UW6kW+GOO4oZ4VJL9&+I(%$;l8{ibee z=5L?&>ug-)-#jy}-VJY7JbldqNA3*{?}z_>=Ede8ECAs@gfoQF+}k-6fbm))hMj*l zV`Wm|7#5n{I|;7#mPAyyPH?7eR6EK2p`a z4)Tt*Dg2FaliW~H?%xokultfaG~F=KcEnHvJ8PH_m+{yd-J+3y-xEWFOT~NU^8Wag zcEtXCp3z}8Fqzl}L+o~bsIT>Kg*lq4%1Ul$XXOn?c-GTvJ~H>~S2nTUbmA`0L-T$%xeaH{w>3Ku%f{uBv+jyr`a1fbmLtE}jHtCtR|=PF zYY*G=DzID?QRIGynR^lnI9)RexQHrD2cA!DjUG)^)TkD_V*dJylFqy1bv7Jl;?Bxx zl=QRrBWIM+z`BilCa?@;2+hR)?gC@6lPLy?YT)N31GHlmA?433HpWMke?jtC8}bHS zpQNd;_)%PRbF#&ZnDiY%xKqx;YX_{08~q&LH#yQ0>mChG_Mqcvv2gc|uaJ4&#J|)Smv-BGm#Fh{zjY6^&vI9Kxr`DH&Gr4L z!h+k^vvR;rDdpJPfn@m5-8NOn=!!e4yo_Fo8SD$q>3O85e)JZ^V%gky`K=^YhU&FPnCbn9}(MgAP=mp}Mu_HE?ILq2lt>b3;QUf-G&dx{t3zt+kV z-v3ijYTINjB}Zda5^&KyE_hIBpqP@X(`&)-u;*m}Ft>MS4UPr5{_rmAIyHaz1 z3$de>>~4l}Z$Dqqb}M+M1Q8$Ho(wHb%F{MkgtizClPV?mr`Bf64xqTn5bJ7 zlgl@#%z`d(D1W^Vza(u&G1rb1(ii`2FUxPGFKXg-@v%9KWwD!~^xLDhJPNEl@`X-) z?->rx?uc&H&V}Hr`OI?G)_6A6poq^QE){-tG$F13+Uo-nW#u!9FIJEQv9CYJb>nSm z#;(A`>Deig%Ph3WTJzqjCHXM;ZC7)!aeUH1u?t0^ru`gLrD$|Zy8Ev@;5KYblrj|+tiE~WB1qLNJcW(H zCgN=!Gv)X_o8M=Z&BEAqC5@~9hcyz$Jsi~-chd5Snqv1ajR)8i#Ti*IKN#MsSE*9` zPsHN8?3>MK+SH`nSKjz9aY0)Xxf7icq#W~7XIoX4ZQNVD18xhvZFO6L4N|Da2KsKg zVDYOxxNtVPqU-8?Q(!iWy>!~w-@?YsME3Qg>X2($o+>4{YDZ~}e~$%f5-pV+xT*}cbLRvc;VcZv|2E{o zYF5>8+`%!?I28BD=?y0LcxXP=l8nVBF*zLxSp?!UkxVkslUj0!+DRC#`+QWi{L1gF zQ2N5fJ%2Sx?Kj%CbxSCu>gxVeVCkxcnFciK#mjKtG!6q94Gj$_O<>Go6fAyIs;ji5 zVRT-1Yitcs)W({!b&FR!5$I=Tg`D9;WRKAW!{6dFK;mCUNL?e@XY17FnUK;z$89Mu zJUn;f!1yz+{qIE-Od;H+-}?TthCi5v6_u_Vi|MG3;?eowPUeRh(~tZUskdK%G+imI zb~D5Ty}bWW8bXrJx2x9UIqrVkEZGf2 zU!=gq3EEA6UZMvjwQsJWR>Mu)7dD3S=AIX^dHUr%@yYjc+tDB=>sM|?4!vsWxPd&J zw-GO6s2gj2%VU9z%PM!&`Ddm86$@Xo$Z#dWo(xCLz(L2^!uC&}p@`FVKyb=gx6=YB z+B%CT5iJyr%VtGMg|#Rc&3nphB4Y@6K6W5d4+Zf&yp#lIzXX%__ZAMuuIKzViZzw6 z9xzxJtrBK!wOIZ=92s3F7bplV6v7uW67A<^n^>Bhix^``B5j4XmAK1CqHUU92e_=B zh;|ygElVDmJ9l=Cg3|(I%-bTT0ygk$f0c{LvIIuJexKUhR4BGlTmB6k#(Mokc}s?= z{u4hGIF+DD`fERKf?c`D+TMTj%5o^L`*f!HN+vx%#Gelf&Fh$hUK zsWdqN^SI2HYKc{GCg_Nf!w_8)na+-4E>+sDqwBiatihMrZfE#ydB)SbgpybktrmDt z`%FV00p;ZWT70tf0yLC`8U7m6fazPku8Tc)ok~!lG1ZMPywS}tJ;3Jkiqkl+=>{? z_QFEMB=H9A?SLYA46F2 zRaB80)NH6mSN6X>{MD;hWly0fo+DK)nnU1h@^!9PDTX2&k>wlma^uKlWp<01Y8d%2 z2Ua@p8~&36L-&%Ux(!Pbb@jVoT+7HX$*E(Uh=@MnLFPyVZy$`CDxDt$R+9%NqJ4l~ z9heBoQbeZ`QStLCXr19R3^d|V;-HBf^5g6G?F=1+I)OD&S+#+?J5S;)F7R}OqDak&`qI$iChY3xLWI5%srR@~CmD!HY7cTlky z$jDK-ko@##Fn$!sFgx~(ofPwwBGfqIja%9%DO0a=86Z0)^B9`dR}AI^WCZ%Z#9ZXW z$Ty7n-#zc=?a13IbNpiw>VClLduqIjKQ$MJV`1e7G8V-&0Jl6#78ze4Wz}T#A@hJ2(lZ?ZV!=@YkTqRHnb1qW$) z*+-s^oVvk1o#v--DxP5c0@PMN-V;TSJo>WvRqf?tBMhKs?3*act% zAh@iBDSlYZy;q$EejPb{ysd8szHkzjNr9)*jgL!^3{k!ieb-C^h z4NT;2EIzwkI(6R1^hnhkg`$x3h7Yd^xTJOnL@N*tev#`2G4F*SG7ez*jTk-vXXDjY%Re&&8eVU6B4+sM%P< zIYhR5_=n>j;ZIGqQMz5EpQjl>ALa+Tai9L>i9F9JZ}fMLFKpnl6hrl2`3{y2{(ui9 z<7D3c&A>fYm__R`uNgvglXTDLNDfn^yl^(h+fS_7v`x zi-no^u@#O3gX%$~y{}l6;bdx=1&))B^2|ccK<6pZALAQyMp5P|X8XVHNYg(_S% z+saIQmtyt|9$2Qo@oRAB^CyYt+(pP_X7;$XvC0tSC$!21*IGJG=24uNN(hu(tscow zO}T462^0em+Aw`u zd^gN}LUqCu7?+?omqZYQ39hLZ*Bf}Vjdjy;^Um9PE~MAn|8d}A=3iDe(Gi{MA9>E? z-~IjZ(B347T(Hb(9E?C8x#>5QJ{6ir&o6w}WjT7%EB}sx`ZTOn=g_7DS8_?Zh_cBi5lF@|t0G<_heTjht5Txap69@w za6NBWx=~2$Wg0zn?a7>2>~0xE$-^7w{2Sz&7P-&<2gAa4m3KB?DiC?+WajP+*Ur`& zT)Xyit}&hk21zicJ^GLHJKX%XiH;jM6jd#K`wXBvly%EN3JQsLW4Ps~zA}p|qhXG1 znp1uyZ9C z-0BW@^ul%s1^o!S@_IopdgK&KGjO(5c-q0W*^SD{Z^x1gvV_@8BT~=jH?w#D%-w3~ zg6Ty7W4W}7rrDx*NrDpBsXa`t_##)*aZUV{hO@P%M14F_eX^oxn>m7`ISTNZ^EU=L zIu?^@X&2qKy0*WkInPHM#CF>EjiwQ-j#fj&=kftimj}5t;FZkjI>_xTw7p>pWtPbs zR*bCFyLUWtNWgDk%EzmC`Vp*4adUE6U18&#=lP-+Vcc!h0$+UZ#JvtoPG~VU zo#t(WRL371uZ17FiHp|52TiQmIK*ZDts=I0``Q>7iuFa=JDdpddj|NO<#-?V*XD(r z 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 diff --git a/understanding/22/img/pointer-target-example2.png b/understanding/22/img/pointer-target-example2.png deleted file mode 100644 index 4822923cae3fd65c1cda69b54e7d5eae85dcbbe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54402 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 diff --git a/understanding/22/img/pointer-target-example4.png b/understanding/22/img/pointer-target-example4.png deleted file mode 100644 index 0342f9c93a23665ac400b1d55fc4f72dfb181fa6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43284 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

    KJ+2Qy~SY#)13Gb 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 z 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�f3ydwqHu?*=Q5c|qi|0+ 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 z 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 diff --git a/understanding/22/pointer-target-spacing.html b/understanding/22/pointer-target-spacing.html deleted file mode 100644 index 877d5914ce..0000000000 --- a/understanding/22/pointer-target-spacing.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - Understanding Pointer Target Spacing - - - -

    Understanding Pointer Target Spacing

    - -
    -

    Status

    -

    This understanding document is part of the draft WCAG 2.2 content. It may change or be removed before the final WCAG 2.2 is published.

    -
    - -
    - -

    Pointer Target Spacing Success Criterion text

    -
    -

    Pointer Target Spacing

    - -

    AA

    -

    New

    - -

    For each target, there is an area with a width and height of at least 44 CSS pixels that includes it, and no other targets, except when:

    -
      -
    • Enlarge: A mechanism is available to change the CSS pixel size of each target, or its spacing, so there is an area with a width and height of at least 44 CSS pixels that includes it, and no other targets;
    • -
    • Inline: The target is in a sentence or block of text;
    • -
    • User agent: The size of the target is controlled by the user agent and is not modified by the author;
    • -
    • Essential: A particular presentation of the target is essential to the information being conveyed.
    • -
    -

    This criterion has been formulated to increase the hit-area of small targets, but the group would like feedback from providers of touch-screen devices if there is another way of forming the criterion to better complement the tap-heuristics used.

    -

    Are there issues with internationalization when describing inline links?

    -

    Are there issues with pop-over content overlapping targets triggering failures?

    -
    -
    - -
    -

    Intent of Pointer Target Spacing

    - -

    The intent of this Success Criterion is to ensure targets can easily be activated without accidentally activating an adjacent target. When targets are small, it is difficult for users with hand tremors and those who have difficulty with fine motor movement to activate them accurately. Providing spacing between targets will reduce the likelihood of accidentally activating the wrong control.

    - -

    The requirement is for targets that are smaller than 44 x 44px to be included in an area with a width and height of at least 44px each. For the horizontal dimension, this means that the total width of 44px is composed of the width of the target and the width of the spacing that separates it from adjacent targets. The same applies to the height. For example, a target of 24 x 24px would meet the requirement if it had a spacing of 10 px on all sides. If the target is 44 x 44px or larger, no spacing between it and adjacent targets would be required.

    - - -

    There are three exceptions:

    -
      -
    1. If there is a mechanism to change the target sizes or spacing to meet the minimum, such as a button to change the sizes and layout of the targets.
    2. -
    3. If the target is inline within a sentence there doesn’t need to be a minimum target size.
    4. -
    5. If the spacing of the targets is essential to the information being conveyed there doesn’t need to be a minimum target size.
    6. -
    - -

    The requirement is independent of the zoom factor of the page, when users zoom in the CSS pixel size of elements does not change. This means that authors cannot meet it by claiming that the target will have enough spacing or sufficient size if the user zooms into the page.

    - -

    The requirement does not apply to the spacing of targets inside unstyled native elements. For example, when a default select element is used, the vertical spacing of option elements inside the select's dropdown list is exempt.

    - -

    While the Success Criterion primarily helps touch users by ensuring that activation with the 'fat finger' will not accidentally trigger adjacent targets, it is also useful for mouse or pen users. It reduces the chances of erroneous activation due to a tremor or some other input imprecision.

    - -

    As mobile devices generally have internal heuristics to identify which link is closest, spacing can work as effectively as a larger target size.

    - -
    - A series of icons with measures showing they are each 44 by 44 pixels wide and high. -
    The dimension of each icon target in a row is 44 by 44 CSS pixels, so the targets pass this Success Criterion without additional spacing.
    -
    - -
    - A row of icons with measures showing they are each 38 by 38 pixels wide and high, with 6 pixel spacing between them. -
    The dimension of each icon target in a row is 38 by 38 CSS pixels, so a spacing of 6 CSS pixels is required to arrive at 44 CSS pixels for the combined width and spacing of the target. No adjacent targets are present above and below, i.e., there is sufficient vertical spacing for the height of 38 CSS pixels to be sufficient.
    -
    - -
    - A row of buttons which are more that 44px wide and 20px high. There are no targets above or below. -
    The widths of the button with adjacent neighbors is at least 44 CSS pixels, while the height is only 22 CSS pixels. The target height combined with the vertical spacing above and below exceeds 44 CSS pixels, therefore, the targets pass this Success Criterion.
    -
    - -
    - A row of icons which are 44px wide and 20px high, with other targets above and below with only 2px spacing. -
    Fail: Two rows of buttons, all with a height of only 20 CSS pixels. In the top row, buttons all have a width of more than 44 CSS pixels. For the top row, targets above and below are in close proximity. The top spacing of the first row is 4 px while the bottom spacing is 2 px, which adds up to 26 px for target height and vertical spacing combined. Therefore, the buttons in the top row fail the Success Criterion. The button "Pop" in the second row is only 32px wide with no horizontal spacing, so it also fails the Success Criterion even when there is sufficient space below to meet the vertical spacing requirement.
    -
    - -

    Where targets are embedded inside other targets, the inner target either needs a size of at least 44 x 44 CSS pixels or must be placed at the edge or corner to make sure that there is sufficient adjacent spacing in each dimension.

    - -
    - Three examples of a target adjacent to another target (see legend below) -
    Three examples of a person's profile image, which is supposed to be a target leading to another page, and a magnifying glass icon, which is supposed to open a lightbox view of the profile image. In the first example, the magnifying icon is outside the picture and passes. In the second example, the icon overlaps with the top-left corner of the image, but passes due to sufficient spacing top and left. In the third example, the icon sits inside the linked image. Since it is surrounded by an active click area, the icon target is not large enough to pass the success criterion.
    -
    - -

    Users with different disabilities have different needs for control sizes. It can be beneficial to provide an option to increase the active target area without increasing the visible target size. Another option is to provide a mechanism to control the density of layout and thereby change target size or spacing, or both. This can be beneficial for a wide range of users. For example, users with visual field loss may prefer a more condensed layout with smaller sized controls while users with other forms of low vision may prefer large controls.

    - -

    Where user-agents control the size of a target, such as the options in a select drop-down, and the author has not tried to change the size of target with size or padding adjustments, the target is exempted from this criterion. It would be beneficial for users if the minimum size & spacing requirement is meet, but where the user-agent has defined the target it is not the authors responsibility.

    - - -
    -
    -

    Benefits of Pointer Target Spacing

    -

    Having targets with sufficient target spacing can help all users who may have difficulty in confidently targeting or operating small controls. Users who benefit include, but are not limited to:

    -
      -
    • Users who use a mobile device where the touch screen is the primary mode of interaction;
    • -
    • Users with mobility impairments such as hand tremors;
    • -
    • Users who use a device in environments where they are exposed to shaking such as public transportation;
    • -
    • Users who have difficulty with fine motor movements;
    • -
    • Users who access a device using one hand;
    • -
    • Users with large fingers, or who are operating the device with only a part of their finger or knuckle.
    • -
    - -
    - -
    -

    Examples of Pointer Target Spacing

    - -
      -
    • Three buttons are on-screen and the target area of each button is 44 by 44 CSS pixels. Since the target size itself is 44 x 44 px, no additional spacing is required, the Success Criterion passes.
    • -
    • A row of buttons, each of which has a horizontal width of more than 44 px, but a height of only 30 px. Since there is sufficient spacing above and below the row of buttons, the Success Criterion passes.
    • -
    • Links within a paragraph of text have varying target dimensions. Links within paragraphs of text do not need to meet the 44 by 44 CSS pixels requirements, so the Success Criterion passes.
    • -
    -
    - - -
    -

    Techniques for Pointer Target Spacing

    - - -
    -

    Sufficient Techniques for Pointer Target Spacing

    - - -
      -
    1. - Using min-height and min-width to ensure sufficient target spacing -
    2. -
    - -
    - -
    -

    Additional Techniques (Advisory) for Pointer Target Spacing

    - -
    - -
    -

    Failures for Pointer Target Spacing

    - -
    - -
    -
    -

    Resources

    - - -
    - - - diff --git a/understanding/22/redundant-entry.html b/understanding/22/redundant-entry.html deleted file mode 100644 index 55bdcf6d13..0000000000 --- a/understanding/22/redundant-entry.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - Understanding Redundant Entry - - - -

    Understanding Redundant Entry

    - -
    - -

    Redundant Entry Success Criteria text

    -
    -

    For steps in a process, information previously entered by or provided to the user that is required on subsequent steps is either:

    -
      -
    • auto-populated, or
    • -
    • available for the user to select.
    • -
    -

    Exception: When re-entering the information is essential.

    -

    Security verification, such as repeating a password, is considered essential.

    -
    -
    - -
    -

    Intent of Redundant Entry

    - - -

    The intent of this Success Criterion is to ensure that users can successfully navigate multi-step processes. It reduces cognitive effort where information is asked for more than once during steps in a process. It also reduces the need to recall information provided in a previous step.

    - -

    This Success Criterion pertains to the current user session, and is not applicable a user returns after closing a session or navigating away.

    - -

    Information that is required to be remembered for input can pose a significant barrier to users with cognitive or memory difficulty. All users experience a natural gradual mental fatigue as they proceed through steps in a process. This fatigue is accelerated by the stress of recalling information from short-term working memory. Users with learning, and cognitive disabilities are highly susceptible to mental fatigue.

    - -

    Requiring people to recall information already entered in the previous steps can cause them to give up or enter incorrect information.

    - -

    This Success Criterion does not add a requirement to remember information between sessions, a process is defined on the basis of an activity and does not continue across sessions.

    - -

    There is an exception for essential uses of input re-entry for things like password entry (security), or memory games which would not be possible if the previous answers were supplied.

    - -
    -
    -

    Benefits of Redundant Entry

    - -
      -
    • Users with cognitive disabilities experience short-term, working memory difficulty. Not having to repeatedly remember particular information reduces stress and the likelihood of mistakes.
    • -
    • Users that experience difficulty forming new memories, recalling information, and other functions related to cognition can complete processes without having to unnecessarily rely on their memory.
    • -
    - -
    - -
    -

    Examples of Redundant Entry

    - -
      -
    • A form requests the user’s corporate identification number (ID) in the first step of a process to purchase a new computer. In the 3rd step the user is asked to confirm that the computer will belong to the user (rather than a colleague), and re-shows the ID. It allows the user to change the ID, but defaults to the previously entered one.
    • -
    • A form on an e-commerce website allows the user to confirm that the billing address and delivery address are the same address.
    • -
    - -
    - - -
    -

    Techniques for Redundant Entry

    - - -
    -

    Sufficient Techniques for Redundant Entry

    - - - - -
    - -
    -

    Additional Techniques (Advisory) for Redundant Entry

    - -
    - -
    -

    Failures for Redundant Entry

    - -
    - -
    - - - From 37e7c7a2393b1a9b4f14f1b8fc4c302ac47aaf77 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Wed, 19 Aug 2020 10:52:47 -0400 Subject: [PATCH 02/73] build for 2.1 --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 6a77f60971..15fb36ee7b 100644 --- a/build.xml +++ b/build.xml @@ -10,7 +10,7 @@ - + From 4ab1ba0225a47d290da5459e8c9c296f7a4bddda Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Wed, 2 Dec 2020 18:31:30 +0000 Subject: [PATCH 03/73] Reverting focus-visible to previous text. --- understanding/20/focus-visible.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/20/focus-visible.html b/understanding/20/focus-visible.html index b027ed01bc..39274a81e8 100644 --- a/understanding/20/focus-visible.html +++ b/understanding/20/focus-visible.html @@ -21,7 +21,7 @@

    Intent of Focus Visible

    “Mode of operation” accounts for user-agents which may not always show a focus indicator, or only show the focus indicator when the keyboard is used. User agents may optimise when the focus indicator is shown, such as only showing it when a keyboard is used. Authors are responsible for providing at least one mode of operation where the focus is visible. In most cases there is only one mode of operation so this success criterion applies. The focus indicator must not be time limited, when the keyboard focus is shown it must remain.

    -

    Note that a keyboard focus indicator can take different forms. This criterion does not specify what the form is, but Focus Appearance (Minimum) does define how visible the indicator should be. Passing Focus Appearance (Minimum) would pass this success criterion.

    +

    Note that a keyboard focus indicator can take different forms. One common way is a caret within the text field to indicate that the text field has the keyboard focus. Another is a visual change to a button to indicate that that button has the keyboard focus.

    m=7dG@A!X=SP=4ftix5uCybu}5 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

    From ae91c050a2233c3595ece19a7876514e511328cb Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Fri, 6 Nov 2020 17:14:04 -0500 Subject: [PATCH 04/73] Add ACT rules --- act.xml | 1 + guidelines/act-mapping.json | 28 ++++++++ understanding/understanding-act-rules.html | 76 ++++++++++++++++++++++ xslt/base.xslt | 5 +- xslt/generate-structure-xml.xslt | 4 ++ xslt/generate-techniques.xslt | 21 ++++++ xslt/generate-understanding.xslt | 23 +++++++ 7 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 act.xml create mode 100644 guidelines/act-mapping.json create mode 100644 understanding/understanding-act-rules.html diff --git a/act.xml b/act.xml new file mode 100644 index 0000000000..b994f53627 --- /dev/null +++ b/act.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/guidelines/act-mapping.json b/guidelines/act-mapping.json new file mode 100644 index 0000000000..4bd8edd04d --- /dev/null +++ b/guidelines/act-mapping.json @@ -0,0 +1,28 @@ +{ + "act-rules": [{ + "title": "HTML page has title", + "permalink": "/standards-guidelines/act/rules/html-page-has-title-2779a5/", + "successCriteria": ["page-titled"], + "wcagTechniques": ["G88", "H25"] + }, { + "title": "HTML page has `lang` attribute", + "permalink": "/standards-guidelines/act/rules/html-page-lang-b5c3f8/", + "successCriteria": ["language-of-page"], + "wcagTechniques": ["H57"] + }, { + "title": "HTML page language is valid", + "permalink": "/standards-guidelines/act/rules/html-page-lang-valid-bf051a/", + "successCriteria": ["language-of-page"], + "wcagTechniques": ["H57"] + }, { + "title": "HTML page lang and xml:lang attributes have matching values", + "permalink": "/standards-guidelines/act/rules/html-page-lang-xml-lang-match-5b7ae0/", + "successCriteria": ["language-of-page"], + "wcagTechniques": ["H57"] + }, { + "title": "Image button has accessible name", + "permalink": "/standards-guidelines/act/rules/image-button-accessible-name-59796f/", + "successCriteria": ["non-text-content", "name-role-value"], + "wcagTechniques": ["H36"] + }] +} \ No newline at end of file diff --git a/understanding/understanding-act-rules.html b/understanding/understanding-act-rules.html new file mode 100644 index 0000000000..2deaddda3b --- /dev/null +++ b/understanding/understanding-act-rules.html @@ -0,0 +1,76 @@ + + + + Understanding ACT Rules + + +

    Understanding ACT Rules

    + +

    Accessibility Conformance Testing (ACT) Rules provide guidance for developers of automated testing tools and manual testing methodologies, to help ensure consistent interpretation of WCAG Success Criteria.

    +

    W3C's List of ACT Rules for WCAG 2 is updated periodically. They are developed according to the Accessibility Conformance Testing (ACT) Rules Format 1.0 standard.

    +

    Understanding Conformance provides related information, including on understanding accessibility support.

    + +
    +

    ACT Rules are Informative

    +

    ACT Rules are informative — that means they are not required for determining conformance. The basis for determining conformance to WCAG is the success criteria from the WCAG standard — not the ACT Rules.

    +

    While W3C's List of ACT Rules for WCAG 2 are reviewed by the W3C Accessibility Guidelines Working Group (AGWG), they are not vetted to the same degree as the W3C Web Content Accessibility Guidelines (WCAG) standard (called W3C Recommendation). The WCAG standard is the normative reference on determining conformance.

    +
    + +
    +

    ACT Rules are Partial Checks

    +

    ACT Rules typically check specific aspects of WCAG success criteria. For example, that a table cell has a header rather than the entire WCAG 2.2 success criterion 1.3.1 "Info and Relationships", which applies to many more information structures on a web page. In fact, this example rule would not even check the validity of the table header, only if the header exists for a given table cell.

    +

    ACT Rules are also technology-specific. For example, the aforementioned table header example would be specific to HTML, possibly enriched with WAI-ARIA roles and properties, but not to other formats with tables. WCAG 2.2 success criteria are designed to be technology-agnostic and applicable to all web technologies.

    +
    + +
    +

    ACT Rules Check for Failures

    +

    ACT Rules are designed to check failures in satisfying WCAG success criteria. That is, when content fails ACT Rules, it means that the content does not satisfy the corresponding success criteria. However, when content passes ACT Rules, it means that no corresponding failures were detected — it does not necessarily mean that the content satisfies all aspects of the corresponding success criteria.

    +

    The reason for this is because WCAG success criteria typically cover several aspects and technologies, while ACT Rules only check specific aspects. Checking that content satisfies all aspects of WCAG success criteria typically requires further verification by human testers.

    +

    WCAG 2 Conformance Requirement 1 allows for "conforming alternate versions". That means that content may still conform to WCAG 2, even when content fails ACT Rules, thus does not satisfy the corresponding success criteria.

    +
    + + + +
    +

    Structure of ACT Rules

    +

    ACT Rules conform to the Accessibility Conformance Testing (ACT) Rules Format 1.0 standard. They include the following parts:

    +
      +
    • Descriptive Title – title for the ACT Rule, which should describe the rule
    • +
    • Rule Identifier – identifier for the ACT Rule; the W3C rules use alphanumeric strings
    • +
    • Rule Type – there are two basic types of ACT Rules, depending on what is being tested: +
        +
      • Atomic Rule – test one specific situation, which may be part of a composite rule
      • +
      • Composite Rule – combine outcome from multiple atomic rules to one outcome
      • +
      +
    • +
    • Accessibility Requirements Mapping – maps the ACT Rule to particular accessibility requirements; in this suite of rules we use Web Content Accessibility Guidelines (WCAG) 2 Success Criteria
    • +
    • Rule Input – describes the scope of input into ACT Rules, which is one of the following: +
        +
      • Input Aspects – input into atomic rules, such as DOM Tree and CSS Styling etc.
      • +
      • Input Rules – input into the composite rules, which are the atomic rules in scope
      • +
      +
    • +
    • Applicability – description of the specific parts of the content, for which the rule applies
    • +
    • Expectations – description of the expected characteristics of the applicable rule content
    • +
    • Assumptions – assumptions made, such as specific interpretations of the requirements
    • +
    • Accessibility Support – known limitations regarding browsers and assistive technology
    • +
    • Test Cases – sample code demonstrating passed, failed, and inapplicable rule conditions
    • +
    • Change Log – history of changes for the ACT Rules, to support backward compatibility
    • +
    • Glossary – list of key terms defined by the ACT Rule or used by the specific ACT Rule
    • +
    • Issues List (Optional) – list of known issues or bugs for the particular ACT Rule, if any
    • +
    • Background (Optional) – relevant background, such as additional documentation, if any
    • +
    • Acknowledgements (Optional) – such as rule writers, reviewers, and other contributors
    • +
    +
    + + diff --git a/xslt/base.xslt b/xslt/base.xslt index 4c48b02acd..0b93332dae 100644 --- a/xslt/base.xslt +++ b/xslt/base.xslt @@ -5,7 +5,7 @@ xmlns:wcag="https://www.w3.org/WAI/GL/" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="#all" - version="2.0"> + version="3.0"> @@ -19,6 +19,9 @@ ../guidelines/versions.xml + ../guidelines/act-mapping.json + + diff --git a/xslt/generate-structure-xml.xslt b/xslt/generate-structure-xml.xslt index f1e3472f41..22b72fd190 100644 --- a/xslt/generate-structure-xml.xslt +++ b/xslt/generate-structure-xml.xslt @@ -33,6 +33,10 @@ Understanding Techniques for WCAG Success Criteria + + Understanding ACT Rules + + Understanding Conformance diff --git a/xslt/generate-techniques.xslt b/xslt/generate-techniques.xslt index 4693a2257c..0ec75eb4ce 100644 --- a/xslt/generate-techniques.xslt +++ b/xslt/generate-techniques.xslt @@ -3,6 +3,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:wcag="https://www.w3.org/WAI/GL/" + xmlns:func="http://www.w3.org/2005/xpath-functions" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="#all" version="2.0"> @@ -55,6 +56,9 @@
  • Related Resources
  • Related Techniques
  • Tests
  • + +
  • Testing Rules
  • +
    @@ -180,6 +184,7 @@ + @@ -379,6 +384,22 @@
    + + + + +
    +

    Testing Rules

    +

    The following are testing rules for certain aspects of this Technique. It is not necessary to use these particular rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Accessibility Conformance Testing (ACT) Rules, see Understanding ACT Rules for WCAG Success Criteria.

    +
      + +
    • +
      +
    +
    +
    +
    + diff --git a/xslt/generate-understanding.xslt b/xslt/generate-understanding.xslt index b5869802c4..7ff34c63b8 100644 --- a/xslt/generate-understanding.xslt +++ b/xslt/generate-understanding.xslt @@ -3,6 +3,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:wcag="https://www.w3.org/WAI/GL/" + xmlns:func="http://www.w3.org/2005/xpath-functions" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="#all" version="2.0"> @@ -117,6 +118,9 @@
  • Examples
  • Related Resources
  • Techniques
  • + +
  • Testing Rules
  • +
  • Intent
  • @@ -204,12 +208,30 @@
    + + + + +
    +

    Testing Rules

    +

    The following are testing rules for certain aspects of this Success Criterion. It is not necessary to use these particular rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Accessibility Conformance Testing (ACT) Rules, see Understanding ACT Rules for WCAG Success Criteria.

    +
      + +
    • +
      +
    +
    +
    +
    +
    + + @@ -260,6 +282,7 @@ + From 2ae90067fb9cfb017c154c7f5cca1f7ec0d02f25 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Fri, 18 Jun 2021 00:16:31 +0100 Subject: [PATCH 05/73] Update H97.html --- techniques/html/H97.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/techniques/html/H97.html b/techniques/html/H97.html index a1b23a98df..7240e2bf3b 100644 --- a/techniques/html/H97.html +++ b/techniques/html/H97.html @@ -73,7 +73,7 @@

    Generic multiple nav elements

    From a503f66c011880ef06e560d0cd1acf00dfdaf4c2 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Mon, 21 Jun 2021 22:36:18 +0100 Subject: [PATCH 06/73] Removing wcag22 techniques (#1920) --- techniques/css/C42.html | 113 ----------------------- techniques/failures/F108.html | 78 ---------------- techniques/general/G218.html | 63 ------------- techniques/general/G219.html | 67 -------------- techniques/general/G220.html | 60 ------------ techniques/general/G221.html | 69 -------------- techniques/general/hidden-control-1.html | 62 ------------- techniques/general/hidden-control-2.html | 60 ------------ techniques/html/H99.html | 104 --------------------- 9 files changed, 676 deletions(-) delete mode 100644 techniques/css/C42.html delete mode 100644 techniques/failures/F108.html delete mode 100644 techniques/general/G218.html delete mode 100644 techniques/general/G219.html delete mode 100644 techniques/general/G220.html delete mode 100644 techniques/general/G221.html delete mode 100644 techniques/general/hidden-control-1.html delete mode 100644 techniques/general/hidden-control-2.html delete mode 100644 techniques/html/H99.html diff --git a/techniques/css/C42.html b/techniques/css/C42.html deleted file mode 100644 index a5ba9c3e07..0000000000 --- a/techniques/css/C42.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - Using min-height and min-width to ensure sufficient target spacing - - - -

    Using min-height and min-width to ensure sufficient target spacing

    -
    -

    Metadata

    -

    -

    CSS

    -

    -
    -
    -

    When to Use

    -

    All technologies that support CSS and pointer input.

    -
    -
    -

    Description

    -

    The objective of this technique is to ensure that links in navigation or pagination menus will be spaced so that they fall within an area that measures at least 44 x 44 CSS pixels if the target area itself is smaller than that. The aim is to provide an adequate target clearance so the offset to adjacent targets is sufficient to prevent accidental pointer activation of adjacent targets.

    - -
    -
    -

    Examples

    -

    The following examples can be seen as rendered versions in the working examples.

    - -
    -

    Using a display value of inline-block and min-height / width

    -

    The first example shows a situation where the targets (in this case, the linked numbers in th pagination menu) are smaller than 44 x 44 CSS pixels. However, the list items that contain them have a minimum height and width of 44 px set, so that sufficient target spacing is assured.

    -
    - A horizontal pagination component immediately above the search results. -
    Example of using CSS to ensure enough spacing around targets
    -
    -

    Given the following HTML:

    -
    <nav class="pag" aria-label="pagination menu">
    -	<ol class="pagination-1">
    -		<li><span>previous</span></li>
    -		<li><strong>1</strong></li>
    -		<li><a href="#">2</a></li>
    -		<li><a href="#">3</a></li>
    -		<li><a href="#">4</a></li>
    -		<li><a href="#">5</a></li>
    -		<li><a href="#">next</a></li>
    -	</ol>
    -</nav>
    -

    The following CSS would ensure the minimum spacing is applied:

    -
    ol.pagination-1 li {
    -	display: inline-block; 
    -	min-width: 44px;
    -	min-height: 44px;
    -}
    - -
    -
    -

    Using a display value of flex and min-height / width

    -

    The second example uses min-width and min-height on the targets (the linked numbers in the pagination menu) and not on the parent container, thereby meeting this target spacing Success Criterion and incidentally also the AAA Success Criterion 2.5.5 Target Size.

    -
    - A horizontal pagination component immediately above the search results. It looks identical to the previous example. -
    Example of using CSS to ensure enough spacing within targets
    -
    -

    Given the following HTML:

    -
    <nav class="pag" aria-label="pagination menu">
    -	<ol class="pagination-2">
    -		<li><span>previous</span></li>
    -		<li><strong>1</strong></li>
    -		<li><a href="#">2</a></li>
    -		<li><a href="#">3</a></li>
    -		<li><a href="#">4</a></li>
    -		<li><a href="#">5</a></li>
    -		<li><a href="#">next</a></li>
    -	</ol>
    -  </nav>
    -

    The following CSS ensures the minimum size is applied:

    -
    ol.pagination-2 a,
    -ol.pagination-2 strong,
    -ol.pagination-2 span {
    -	display: block;
    -	line-height:44px;
    -	min-height:44px;
    -	min-width: 44px;
    -}
    -
    - -
    -
    -

    Tests

    - -
    -

    Procedure

    - -

    For each target that cannot be enlarged by a mechanism, is not inline, and is not covered by the essential exception:

    -
      -
    • Check that the target has enough spacing so that the space around it measures at least 44px width and 44px height.
    • -
    -
    -
    -

    Expected Results

    -
      -
    • Check #1 is true
    • -
    -
    -
    - -
    -

    Resources

    - -
    - - diff --git a/techniques/failures/F108.html b/techniques/failures/F108.html deleted file mode 100644 index 3cbefd185f..0000000000 --- a/techniques/failures/F108.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement - - - - - - - -

    Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement

    - -
    -

    Metadata

    -

    -

    failures

    -

    failure

    -
    - -
    -

    Applicability

    -

    Content using any technology which supports pointer input.

    -
    -
    -

    Description

    -

    The objective of this failure is to avoid situations in which people with motor impairments who cannot operate content because the only way to actuate a function is by dragging a target element from its initial position to some other position. The failure occurs when there is no alternative single pointer input available to actuate the function. The alternative may involve a series of single pointer interactions (for example, activating a target to be moved; opening a dropdown menu; and selecting a drop destination from the list of menu items offered).

    -
    - -
    -

    Examples

    - -
    -

    List re-ordering

    -

    A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. There is no alternative way to re-order the list that can be executed via a single pointer input.

    - -
    -
    -

    Kanban board

    -

    In a Kanban implementation for process management, tasks can be dragged horizontally across from one ‘swimming lane’ to another in order to change the status of tasks (for example, to change the status of a task from “in process” to “completed”). There is no alternative way to move targets between lanes that can be executed via a single pointer input.

    - -
    -
    - - -
    -

    Tests

    - -
    -

    Procedure

    - -
      -
    1. Check the interface for the presence of functions triggered by dragging movements
    2. -
    3. Check that there is a single pointer input alternative to operate the same function
    4. -
    - -
    -
    -

    Expected Results

    - -
      -
    • If #2 is false, then this failure condition applies and the content fails this Success Criterion.
    • -
    -
    -
    - -
    -

    Resources

    -
      -
    -
    - - - diff --git a/techniques/general/G218.html b/techniques/general/G218.html deleted file mode 100644 index c60bfd5371..0000000000 --- a/techniques/general/G218.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - Email link authentication - - - -

    Email link authentication

    -
    -

    Metadata

    -

    3.3.7 Accessible Authentication

    -

    Sufficient

    -
    -
    -

    Applicability

    -

    Technologies that support authentication.

    -
    -
    -

    Description

    -

    The objective of this technique is to provide an easy way for users to authenticate without needing a password. This technique involves providing an authentication mechanism where the user can enter their email address, and they are sent an email with a link to click. When the user clicks the link in the email, they are directed back to the website and automatically logged in.

    -

    The security of the email link mechanism is not the focus of this technique, but it generally involves sending a time limited token as part of the email.

    - -
    -
    -

    Examples

    -
    -

    Author provides an email mechanism to login with a link

    -

    A social media website has a username and password based login mechanism. As part of the forgotten password feature, there is a separate link to login with an email. When the user enters their email and submits the form, the site sends an email to the user. Clicking the link in the email opens the website and the user is logged in.

    -
    -
    -
    -

    Tests

    -
    -

    Procedure

    -

    For websites which allow users to login by emailing a link to the email address associated with the account:

    -
      -
    1. Enter a valid email address (with an account on the website) and use the email-link feature.
    2. -
    3. Check that the email is received.
    4. -
    5. Check that selecting the link opens the website.
    6. -
    7. Check that the user account is logged in.
    8. -
    -
    -
    -

    Expected Results

    -
      -
    • #2, #3 and #4 are true.
    • -
    -
    -
    - -
    -

    Resources

    - -
    - - diff --git a/techniques/general/G219.html b/techniques/general/G219.html deleted file mode 100644 index daa0a6ad8d..0000000000 --- a/techniques/general/G219.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - Ensuring that a single pointer operable alternative is available for dragging movements that operate on content - - - -

    Ensuring that a single pointer operable alternative is available for dragging movements that operate on content

    -
    -

    Metadata

    -

    Provide information below to help editors associate the technique properly. Contents of the meta section are not output by the processor.

    -

    2.5.X Dragging

    -

    Sufficient

    -
    -
    -

    Applicability

    -

    Content using any technology which supports pointer input.

    -
    -
    -

    Description

    -

    The objective of this Technique is to ensure that people with motor impairments who cannot carry out dragging movements are presented with a single pointer operable alternative. Some direct manipulation interfaces allow users to pick up targets and move them to another position, for example, to change the position of an item in a priority list in a list, or to change the status of a task in a Kanban implementation (a type of visual process management view which shows tasks in vertical lanes representing process steps such as ‘scheduled’, ‘processed’, ‘completed’).

    -

    The single pointer operable alternative may require the user to carry out a series of single pointer interactions (for example, activating a target to be moved; opening a dropdown menu; and selecting a drop destination from the list of menu items offered).

    - -
    -
    -

    Examples

    -
    -
      -
    • A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. After a single pointer activation, the list items display up and down arrows which allow a step-wise re-ordering of the the list via a single pointer inputs (taps or clicks at the up or down arrow).
    • -
    • A vertical priority list indicates the priority of items listed. Each item can be ‘picked up’ with a pointer and dragged up or down to another position. The other list items rearrange dynamically. To the left of each list item, a number in a text field shows the current priority position. For any of the items, users can put in another number. This leads to a dynamic reordering and renumbering of the priority list.
    • -
    • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks (for example, to change the status of a task from “in process” to “completed”). One or several items in a lande can be selected by a single tap or click. A single pointer activation of a drop-down menu labelled “Move selected items to” offers a selection of drop targets (other lanes). A further single pointer activation over the desired menu item moves targets to the specified lane.
    • -
    • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks. A directional horizontal swipe over an item moves it to the adjacent lane. This process can be repeated until the item is in the desired lane.
    • -
    - -
    -
    -
    -

    Tests

    -
    -

    Procedure

    -

    For interface elements that support dragging:

    -
      -
    1. Check the interface for the presence of functions triggered by dragging movements.
    2. -
    3. Check that there is a single pointer input alternative to operate the same function
    4. -
    -
    -
    -

    Expected Results

    -
      -
    • Check #2 is true.
    • -

      If this is a sufficient technique for a success criterion, failing this test procedure does not necessarily mean that the success criterion has not been satisfied in some other way, only that this technique has not been successfully implemented and cannot be used to claim conformance.

      -
    -
    -
    - -
    -

    Resources

    - -
    - - diff --git a/techniques/general/G220.html b/techniques/general/G220.html deleted file mode 100644 index ebe013b3b4..0000000000 --- a/techniques/general/G220.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - Provide a contact-us link - - - -

    Provide a contact-us link

    -
    -

    Metadata

    -

    Findable Help

    -

    Sufficient

    -
    -
    -

    Applicability

    -

    Technologies that contain links

    -
    -
    -

    Description

    -

    The objective of this technique is to provide a mechanism for finding contact details in a consistent location across pages to make it easier for users to find it. The interactive item in the Web page is a link to the contact details page. The programmatic and visual location is consistent on each page in the set of web pages, when viewed within the same size viewport. Activating the link brings users to a Web page with contact details such as a phone number and/or email address.

    - -
    -
    -

    Examples

    -
    -

    A link at the top of the page

    -

    An on-line job application asks for many types of information from the user, such as their identification number, but they may have several and not know which one to enter. They may need more information from someone that can answer their question when the contextual help provided does not meet their needs. The (for example) sixth link that the user reaches when tabbing through the page is titled "Contact Us". This link is also visually in the same location on each page. Activating the link brings the user to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

    -
    -
    -

    A link in the footer region

    -

    A Web page’s footer region contains links repeated on every page in a set of web pages. The visual and programmatic order are consistent when viewed in the same size display. The (example) third link in the footer region is labeled visually and programmatically “Contact Us.” A user activates the link and is brought to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

    -
    -
    -
    -

    Tests

    -
    -

    Procedure

    -
      -
    1. Determine if this is a single page app or a set of web pages, with blocks of content that are repeated on multiple web pages.
    2. -
    3. Determine if at least one of the following is included or linked in a consistent location: -
        -
      • Human contact details
      • -
      • Human contact mechanism
      • -
      • Self-help option
      • -
      • A fully automated mechanism
      • -
      -
    4. -
    5. Without changing the viewport size, check that the identified help is present on all other web pages within that set of web pages.
    6. -
    -
    -
    - - - - diff --git a/techniques/general/G221.html b/techniques/general/G221.html deleted file mode 100644 index b9aa2978f5..0000000000 --- a/techniques/general/G221.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - Provide data from a previous step in a process - - - -

    Provide data from a previous step in a process

    -
    -

    Metadata

    -

    3.3.8 Redundant entry

    -

    Sufficient

    -
    -
    -

    Applicability

    -

    Any technology that supports user input.

    -
    -
    -

    Description

    -

    The objective of this technique is to provide information that was previously provided by the user or by the system, rather than requiring the user to remember and re-enter the information from a previous step. This improves success for individuals with cognitive and learning disabilities and memory impairments.

    -
    - -
    -

    Examples

    -
    -

    Populate previously entered information with a trigger

    -

    An ecommerce site provides a checkbox that triggers the shipping address to be pre-populated based on the billing address the user had entered in a previous step.

    - -
    -
    -

    Automatically populate information based on previous answers

    -

    During a two-step process for setting up a business, the first step provides a business identification number after the user enters a name, and address. The second step requires creating a user profile. The business identification number, name and address are prepopulated.

    -
    -
    -

    Display the information from a previous step

    -

    During a two-step process for setting up a business, the first step provides a business identification number after the user enters a name and address. The second step requires creating a user profile. The interface allows the user to select the business they just set up with all associated information.

    -
    -
    -
    -

    Tests

    -
    -

    Procedure

    -

    For each input in a process that requires information to be entered:

    -
      -
    1. Check if the information has already been requested on a previous step of the process;
    2. -
    3. Check that the information entered previously is prepopulated in the fields or displayed on the page.
    4. -
    -
    -
    -

    Expected Results

    -
      -
    • #1 and #2 are true.
    • -
    -
    -
    - -
    -

    Resources

    -
      -
    • Link
    • -
    -
    - - diff --git a/techniques/general/hidden-control-1.html b/techniques/general/hidden-control-1.html deleted file mode 100644 index 7c4d84d473..0000000000 --- a/techniques/general/hidden-control-1.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - Provide persistently visible controls - - - -

    Provide persistently visible controls

    -
    -

    Metadata

    -

    3.2.6 Hidden Controls

    -

    Sufficient

    -
    -
    -

    Applicability

    -

    Any technology

    -
    -
    -

    Description

    -

    The objective of this technique is to ensure that controls are visible without requiring the user hover with the mouse or another pointer device or move the keyboard focus to the control. This is important when the user needs the control to progress or complete a process. Ensuring users can see the controls they need prevents users from having to search for controls and remember where they are located. This improves success for individuals with cognitive and learning disabilities and memory impairments.

    -

    To meet this technique use controls that are visible without onmouseover or onfocus events.

    -

    Some pages may appear cluttered when the same control is repeated in multiple places on the page. Often in these cases, the control is not needed to progress but is functioning as a shortcut through the process. If the control is provided in a later step when it is needed to progress, then these shortcuts do not need to be displayed.

    -
    -
    -

    Examples

    -
    -

    Replying to an Email

    -

    Replying to an email involves opening an inbox, opening the email, hitting reply, writing an email and hitting send. When the email is open, the Reply button is clearly visible at the top. When the editable email opens, a send button is visible at the top. The reply button is also displayed when the email is hovered over in the inbox, but since it is available later in the process when it is needed to progress, the hover approach is OK.

    -
    -
    -

    Login Form

    -

    A login form requires the user complete a name and two matching passwords that meet certain criteria. When the information is completed, the Submit button becomes visible.

    -
    -
    -
    -

    Tests

    -
    -

    Procedure

    -

    For controls that progress or complete a process:

    -
      -
    1. Verify that the controls are visible at the time they are needed without requiring pointer hover or keyboard focus.
    2. -
    -

    Note: Where a page has multiple page variations (i.e., in a responsive design) controls should be tested in each variation.

    -
    -
    -

    Expected Results

    -
      -
    • #1 is true.
    • -
    -
    -
    - -
    -

    Resources

    -
    - - diff --git a/techniques/general/hidden-control-2.html b/techniques/general/hidden-control-2.html deleted file mode 100644 index 325282942c..0000000000 --- a/techniques/general/hidden-control-2.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - Provide a setting to make controls visibly persist - - - -

    Provide a setting to make controls visibly persist

    -
    -

    Metadata

    -

    3.2.6 Hidden Controls

    -

    Sufficient

    -
    -
    -

    Applicability

    -

    Any technology

    -
    -
    -

    Description

    -

    The objective of this technique is to ensure that controls are visible without requiring the user hover with the mouse or another pointer device or move the keyboard focus to the control. This is important when the user needs the control to progress or complete a process. Ensuring users can see the controls they need prevents users from having to search for controls and remember where they are located. This improves success for individuals with cognitive and learning disabilities and memory impairments.

    -

    To meet this technique, provide a setting that makes controls needed to progress or complete a process visible without onmouseover or onfocus events.

    -

    Some pages may appear cluttered when the same control is repeated in multiple places on the page. In these cases, it may make sense for the controls to only appear on hover by default. Provide a setting that changes the default to display the controls without pointer hover or keyboard focus. If setting information can be retained by the system, maintain this setting across sessions.

    -
    -
    -

    Examples

    -
    -

    Webpage Editor

    -

    A webpage editor allows user to edit many parts of the page. Once the editor is open, a user must hover over a section of the page to discover if it is editable. If all the edit icons are displayed, it will clutter the page so a setting is provided that will display all the icons for users who need to see them. This setting persists across sessions once selected.

    -
    -
    -
    -

    Tests

    -
    -

    Procedure

    -

    For controls that progress or complete a process:

    -
      -
    1. Identify controls that only display when pointer hover or mouse focus is over them.
    2. -
    3. Locate a setting that changes these controls so that they visibly persist.
    4. -
    5. Test that all controls needed to progress or complete a process remain visible.
    6. -
    -

    Note: Where a page has multiple page variations (i.e., in a responsive design) controls should be tested in each variation.

    -
    -
    -

    Expected Results

    -
      -
    • #3 is true.
    • -
    -
    -
    - -
    -

    Resources

    -
    - - diff --git a/techniques/html/H99.html b/techniques/html/H99.html deleted file mode 100644 index d49b72ce62..0000000000 --- a/techniques/html/H99.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - Providing a Page List - - - -

    Providing a Page List

    -
    -

    Applicability

    -

    applicability

    -

    html

    -

    sufficient

    -

    Digital publications derived from a fixed layout source or that include static page break locations to enable common points of reference.

    -

    User Agent and Assistive Technology Support Notes

    -

    User agents may provide a specialized interface to the page list rather than render it directly, especially in ebook formats. Users might be presented with an input box into which to enter the page number they wish to go to, for example.

    -
    -
    -

    Description

    - -

    The objective of this technique is to ensure that a page list navigation aid is provided and that it includes a list of all the available locations in the digital publication.

    - -

    The page list provides a way to locate static page break locations (i.e., where each new page begins) within a digital publication. These locations typically come from a print equivalent of the edition and allow synchronization in, for example, mixed print-digital environments such as schools and universities.

    - -

    The source of pagination is not limited to print but could match up to any statically paginated alternative, such as a PDF or even a fixed-layout EPUB (i.e., where the content does not reflow to fit the available screen size).

    - -

    The order of the page break locations in a digital publication is not sequential in all cases, and not all page breaks may be represented. Publishers often rearrange and remove content from the paginated source content when creating a digital version.

    - -

    Page lists are a central feature of many digital publishing formats. EPUB 3 defines the page list in its navigation document,[1] while EPUB 2 and DAISY 3 use the pageList element in the NCX.[2]

    - -

    The DPUB-ARIA module also includes a doc-pagelist role for identifying the navigation element containing the page list.[3]

    - -
    -
    -

    Examples

    -
    -

    Example 1 – Page list in HTML publications

    -

    To add a page list to a web-based document, the role "doc-pagelist" is added to the element (typically a nav element) that encloses the list and its title.

    -
    <nav role="doc-pagelist" aria-labelledby="pglist">
    - <h2 id="pglist">Page List</h2>
    - <ol>
    -   <li><a href="intro.xhtml#pg1">1</a></li>
    -   <li><a href="intro.xhtml#pg2">2</a></li>
    -   …
    - </ol>
    -</nav>
    -
    -

    The destinations of the page list links are usually explicit page break markers like the following:

    -
    <span id="pg1" role="doc-pagebreak" aria-label="page 1">
    -

    Example 2 – Page list in EPUB 3 publications

    -

    EPUB 3 uses the epub:type attribute to identify the page list in the navigation document. The attribute is used on a nav element with the value "page-list" (note the different hyphenation). The ARIA role attribute has no effect unless the navigation document can be directly accessed by users (i.e., the document is in the EPUB spine). Like the previous HTML example, the contents of the nav element is a list of links to the page break locations.

    -
    <nav epub:type="page-list" role="doc-pagelist" aria-labelledby="pglist">
    -   <h2 id="pglist">Page List</h2>
    -   <ol>
    -      <li><a href="chapter01.xhtml#page001">1</a></li>
    -      <li><a href="chapter01.xhtml#page002">2</a></li>
    -      <li><a href="chapter01.xhtml#page003">3</a></li>
    -      …
    -   </ol>
    -   </nav>
    -

    Example 3 – Page list in EPUB 2 and DAISY publications

    -

    The EPUB 2 and DAISY 3 formats both use an XML grammar called the NCX for expressing navigation aids. The page list is defined within the ncx element using the pageList tag. Each pageTarget within this element identifies a page break, providing both a label and a destination.

    -
    <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/"
    -     version="2005-1"
    -     xml:lang="en-US">
    -   …
    -   <pageList>
    -      <pageTarget id="p1" type="normal" value="1">
    -         <navLabel><text>1</text></navLabel>
    -         <content src="content.html#p001"/>
    -      </pageTarget>
    -      <pageTarget id="p2" type="normal" value="2">
    -         <navLabel><text>2</text></navLabel>
    -         <content src="content.html#p002"/>
    -      </pageTarget>
    -   </pageList>
    -</ncx>
    -
    -
    -
    -

    Resources

    -

    [1] https://www.w3.org/publishing/epub3/epub-packages.html#sec-nav-pagelist

    -

    [2] http://www.daisy.org/z3986/2005/Z3986-2005.html#NCXElem

    -

    [3] https://www.w3.org/TR/dpub-aria-1.0/#doc-pagelist

    -
    -
    -

    Tests

    -
    -

    Procedure

    -
      -
    1. Check that a page list, or a link to a page list exists in the publication.
    2. -
    3. Check that all the static page break locations in the publication are represented in the page list.
    4. -
    5. Check that the entries in the page list link to the correct location in the publication.
    6. -
    -
    -
    -

    Expected Results

    -
      -
    • #1, #2 and #3 are true.
    • -
    -
    -
    - - From f020303789529af908609ba632c36e9a93f2f8e8 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Mon, 21 Jun 2021 23:11:25 +0100 Subject: [PATCH 07/73] Removing unused understanding docs (#1921) --- .../21/accessible-authentication.html | 99 ------------------- understanding/21/identify-changes.html | 77 --------------- understanding/21/interruptions-minimum.html | 91 ----------------- understanding/21/target-size-enhanced.html | 84 ---------------- 4 files changed, 351 deletions(-) delete mode 100644 understanding/21/accessible-authentication.html delete mode 100644 understanding/21/identify-changes.html delete mode 100644 understanding/21/interruptions-minimum.html delete mode 100644 understanding/21/target-size-enhanced.html diff --git a/understanding/21/accessible-authentication.html b/understanding/21/accessible-authentication.html deleted file mode 100644 index bf5d9b2b63..0000000000 --- a/understanding/21/accessible-authentication.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - WCAG 2.0 Understanding Page - - - -

    Understanding Accessible Authentication

    -
    -

    Intent

    -

    The intent of this success criterion is to ensure that, that users do not encounter a barrier that prevents them from accessing content that they could otherwise use.

    -

    Most user interfaces are designed to help users complete tasks. However, traditionally, web security and privacy technologies intentionally introduce barriers to task completion. They require users to perceive more and to do more to complete tasks.

    -

    Web security and privacy technologies often block people with cognitive and/or physical disabilities who may not be able to:

    -
      -
    • discern text they are required to enter and submit;
    • -
    • recall text or instructions they have seen or heard;
    • -
    • follow multi-step procedures.
    • -
    -

    The scope of the problem is vast because, for examples, people with disabilities:

    -
      -
    • are prevented from purchasing goods and registering for services on the millions of websites that employ web security and privacy technologies;
    • -
    • may circumvent web security and privacy technologies with insecure techniques/methods;
    • -
    • may become so frustrated working through web security and privacy technologies that they relinquish their efforts, and thereby are thwarted from purchasing goods and registering for services;
    • -
    • may be unable to become accustomed to a web security and privacy technology because there are multiple versions of it across websites.
    • -
    • may be afraid to trust a web site, thus causing them to cancel a transaction.
    • -
    -

    Many user authentication methods rely upon trying to differentiate between a human, and software (bots) that try to pose as a human. The most common way of trying to make this distinction is by the setting of tasks that rely upon human abilities, and that are almost impossible for software (bots) to perform. These methods can frequently be quite challenging for people who have a high level of cognitive ability. For people who have  a disability or cognitive disability such as dementia, an authentication task often presents an insurmountable barrier.

    -
    -
    -

    Benefits

    -

    The benefit of this success criteria is it allows people with cognitive and learning disabilities to use many  important sites. Long changing passwords and  other difficult authentication procedures prevent many people from using critical services. For example,  people cannot make doctors appointments by themselves and often put off making a doctor appointment as not to be a burden to other people.. This may be partly responsible for the reduced life expectancy of people with learning and cognitive disabilities.

    -

    With this success criterion, people who are able to use a primary user authentication method will be able to successfully complete a user authentication procedure almost irrespective of the level of their cognitive abilities. Those who have to use an alternative method will be able to successfully complete a user authentication even though they have limited levels of the cognitive abilities specified in the success criterion.

    -
    -
    -

    Examples

    -
      -
    1. As a user who has memory impairments and often forgets passwords, I need to be able to use a site, without remembering or copying passwords and usernames, so that I can use this service.
    2. -
    3. As a user who has impairments, I need to be able to use a site without being required to copy items in the correct sequence.
    4. -
    5. As a user who has weak executive function, I need the login process to be simple, and not multi-step, so that I can use it.
    6. -
    7. As a symbol user, I need a login process I can use.
    8. -
    -
    -
    -

    Resources

    - -
    -
    -

    Techniques

    -
    -

    Sufficient

    -
      -
    • Allowing the user to reset a password by pressing a link sent to them in an SMS or email.sms, which brings the user to a page that displays either the:
        -
      • current username and/or password; OR
      • -
      • suggested new username and/or password; OR
      • -
      • opportunity to create a new username and/or password
      • -
      -
    • -
    • Compiling to https://www.w3.org/TR/webauthn/ and allowing one component method such as biometrics or tokens (Possibly reword this to be more clear)
    • -
    • Automatic user authentication based upon the use of a trusted device (to which the user has already logged in with their own identity);
    • -
    • Security tokens, some of which are hardware devices, can be used to make authentication easier. Security tokens are used instead of, or in addition to, other forms of authentication such as passwords. Security-token hardware devices:
        -
      • include key fobs, rings, or small keypads;
      • -
      • can store and/or generate a digital signature, a PIN, or biometric data;
      • -
      • can transmit such data via a USB connector, RFID, Bluetooth wireless, or NFC.
      • -
      • -
      -
    • -
    • biometrics;
    • -
    • being already logged in to third-party authentication services (e.g., OAuth, Facebook, etc.).
    • -
    • Fast IDentity Online (FIDO), password-free standards for typical and two-factor authentication.
        -
      • FIDO relies upon user authentication based upon a user's device (e.g., phone, tablet, computer).
      • -
      • A user's device registers the user, to a server, via a public key.
      • -
      • Upon a challenge from the server, the user's device responds with a private key.
      • -
      • The device's keys are unlocked by the user biometrically (e.g., fingerprint scanner) or by a button press, not by a password.
      • -
      -
    • -
    -
    -
    - - diff --git a/understanding/21/identify-changes.html b/understanding/21/identify-changes.html deleted file mode 100644 index b3fbf5f1b4..0000000000 --- a/understanding/21/identify-changes.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - WCAG 2.0 Understanding Page - - - -

    Understanding {Shortname}

    -
    -

    Intent

    -

    This section contains the main explanatory content of the Understanding. It explains why the Guideline or Success Criterion exists and, at a high level, how to meet it.

    -
    -

    Benefits

    -

    This explains how following the success criterion benefits particular types of users with disabilities.

    -
      -
    • Benefit
    • -
    -
    -
    -
    -

    Examples

    -

    Examples in Understanding pages are normally simple lists of hand-waving examples. Sometimes, examples are instead provided in sub-sections with headings. In either case, examples should stay high-level and not get into code specifics, which is for techniques.

    -
      -
    • Example
    • -
    -
    -

    Example

    -
    -
    -
    -

    Resources

    -

    -
      -
    • Resource
    • -
    -
    -
    -

    Techniques

    -
    -

    This section references techniques that can be used to meet the Guideline or Success Criterion. There are sub-sections for sufficient techniques, advisory techniques, and failures.

    -
      -
    • Within each sub-section, there may be "situations" to describe when a set of techniques need to be considered. Remove the sub-section and heading if situations are not used.
    • -
    • Techniques are provided in an unordered list. Reference techniques by linking to the filename of the technique and using the technique ID as link text. Use unlinked plain text if the technique has not been written yet.
    • -
    • If more than one technique must be used for full sufficiency, list them in the same bullet separated by "AND".
    • -
    • If a general technique requires technology-specific techniques to be implemented, end the bullet with "using" and provide a sub-list of those techniques.
    • -
    • Square brackets indicate optional components.
    • -
    -

    Remove any parts of the template that are not used, such as the section and heading for situations, sub-lists of techniques, or the "AND" construction. Also remove the square brackets around placeholder optional components.

    -
    -
    -

    Sufficient

    -

    Techniques that are sufficient to meet the Guideline or Success Criterion.

    -
    -

    Situation

    -
      -
    • ID [AND ID]* [using] - -
    • -
    -
    -
    -
    -

    Advisory

    -

    Techniques that are not sufficient by themselves to meet the Guideline or Success Criterion.

    -

    Same template as sufficient techniques.

    -
    -
    -

    Failure

    -

    Techniques that document conditions that would cause the page not to meet the Guideline or Success Criterion, even if sufficient techniques are also used.

    -

    Same template as sufficient techniques.

    -
    -
    - - \ No newline at end of file diff --git a/understanding/21/interruptions-minimum.html b/understanding/21/interruptions-minimum.html deleted file mode 100644 index 008f35af8f..0000000000 --- a/understanding/21/interruptions-minimum.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - Understanding Interruptions (Minimum) - - - -

    Understanding Interruptions (Minimum)

    -
    -

    Intent

    -

    The intent of this Success Criterion is to avoid interrupting users during their interaction with a Web page. When users are distracted, especially users with impaired attention or memory, they may forget what they were doing and abandon the task. This can happen even when the original task is extremely important.

    -

    Where a site may generate interruptions, the user must be able to postpone or suppress them, such that:

    -
      -
    1. Popups and other interruptions can be easily delayed or turned off [Editor: do we need a definition for popup?]
    2. -
    3. Media events can be easily delayed or turned off [Editor: how is this different from Pause, Hide, Stop?]
    4. -
    5. Chat functions can be easily turned off and on again
    6. -
    7. Non-critical messages can easily be turned off and on again
    8. -
    -

    Changes in content that are not initiated by the user must be avoided. Secondary content (such as special offers or complementary material) should be easily identified, controlled and turned off.

    -

    Other potential distractions are covered by existing WCAG Success Criteria Pause, Stop, Hide, Audio Control, Three Flashes or Below Threshold, Low or No Background Audio, Timing Adjustable. These success criteria are aimed at specific considerations which can have repercussions on certain user groups, but also have a broader effect of reducing distractions for all users.

    - -
    -
    -

    Benefits

    -
      -
    • Removing distractions allows some people with cognitive disabilities to more easily maintain focus on the current action being performed. This is fully discussed in the Distraction Issue paper
    • -
    • Removing distractions can benefit users with a range of disabilities. Different users may find that distractions like popups disrupt their assistive technology output, or cause them to lose their reading location on the page.
    • -
    • Avoiding changes in content that are not initiated by the user can help ensure users complete the primary task intended by the author.
    • -
    -
    -
    -

    Examples

    -
    -

    Popus can be turned off by the user

    -

    Overlays, such as those designed to notify the user of new features, can be easily toggled off by the user through a 'show no more messages' checkbox on the overlays. Instructions on how to re-enable the overlays are included if the user chooses this option.

    -
    -
    -

    Chat functions can be disabled

    -

    A chat function that offers real-time assistance can be closed by users, so that they are not distracted by new content which appears that is not the result of their actions. A prominent mechanism to re-open the chat function is available.

    -
    -
    -

    Status updates can be turned off by the user

    -

    Status notices which appear in a region of the screen, and which may distract certain users, can be disabled through a checkbox. The same checkbox allows the user to toggle the updates back on.

    -
    -
    - -
    -

    Resources

    - -
    -
    -

    Techniques

    -
    -

    Sufficient

    -

    Techniques that are sufficient to meet the Guideline or Success Criterion.

    -
    -

    Situation

    -
      -
    • ID [AND ID]* [using] - -
    • -
    -
    -
    -
    -

    Advisory

    -

    Techniques that are not sufficient by themselves to meet the Guideline or Success Criterion.

    -

    Same template as sufficient techniques.

    -
    -
    -

    Failure

    -

    Techniques that document conditions that would cause the page not to meet the Guideline or Success Criterion, even if sufficient techniques are also used.

    -

    Same template as sufficient techniques.

    -
    -
    - - \ No newline at end of file diff --git a/understanding/21/target-size-enhanced.html b/understanding/21/target-size-enhanced.html deleted file mode 100644 index ed21922b21..0000000000 --- a/understanding/21/target-size-enhanced.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - WCAG 2.0 Understanding Page - - - -

    Understanding SC 2.5.4 Target Size (Enhanced)

    -
    -

    Intent

    -

    The intent of this success criterion is to help users who may have trouble activating a small target because of hand tremors, limited dexterity or other reasons. If the target is too small, it may be difficult to aim at the target. Mice and similar pointing devices can be hard to use for these users, and a larger target will help them greatly in having positive outcomes on the web page.

    -

    Touch is particularly problematic as it is an input mechanism with coarse precision. Users lack the same level of fine control as on inputs such as a mouse or stylus. A finger is larger than a mouse pointer, and generally obstructs the user's view of the precise location on the screen that is being touched/activated.

    -

    The issue can be further complicated on for responsive/mobile which need to accommodate different types of fine and coarse inputs (e.g. a site that can be accessed both on a traditional desktop/laptop with a mouse, as well as on a tablet or mobile phone with a touch screen).

    -

    While this criterion defines a minimum target size, it is recommended that larger sizes are used to reduce the possibility of unintentional actions. This is particularly relevant if any of the following are true:

    -
      -
    • the control is used frequently;
    • -
    • the result of the interaction cannot be easily undone;
    • -
    • the control is positioned where it will be difficult to reach, or is near the edge of the screen;
    • -
    • the control is part of a sequential task.
    • -
    -
    -

    Benefits

    -
      -
    • Users who use a mobile device where touch screen is the primary mode of interaction
    • -
    • Users with mobility impairments, such as hand tremors
    • -
    • Users who find fine motor movements difficult
    • -
    • Users who access a device using one hand
    • -
    • Users with large fingers, or who are operating the device with only a part of their finger or knuckle
    • -
    • Users who have low vision may better see the target
    • -
    -
    -
    -
    -

    Examples

    -
      -
    • Example 1: Buttons
      - Three buttons are on-screen and the touch target area of each button is 44 by 44 CSS pixels.
    • -
    -
    -
    -
    -

    Resources

    -

    - -
    -
    -

    Techniques

    -

    Each numbered item in this section represents a technique or combination of techniques that the WCAGWorking Group deems sufficient for meeting this Success Criterion. However, it is not necessary to use these particular techniques. For information on using other techniques, see Understanding Techniques for WCAG Success Criteria, particularly the "Other Techniques" section.

    -
    -

    Sufficient

    -

    Techniques that are sufficient to meet the Guideline or Success Criterion.

    -
    -
      -
    • Ensuring that touch targets are at least 44 by 44 CSS pixels.
    • -
    • Ensuring inline links provide sufficiently large activation target.
    • -
    -
    -
    -
    -

    Advisory

    -

    Although not required for conformance, the following additional techniques should be considered in order to make content more accessible. Not all techniques can be used or would be effective in all situations.

    -
      -
    • none documented
    • -
    -
    -
    -

    Failure

    -

    The following are common mistakes that are considered failures of Success Criterion 2.5.3 by the WCAG Working Group.

    -
      -
    • Failure of success criterion 2.5.3 and 2.5.4 due to touch target being less than 44 by 44 CSS pixels.
    • -
    -
    -
    - - From dce19c528c8ed7dd91887b28deef2a98071abd40 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 13 Jul 2021 15:20:32 +0100 Subject: [PATCH 08/73] Defunct link removed in 1.4.12 --- understanding/21/text-spacing.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/text-spacing.html b/understanding/21/text-spacing.html index b5bdf853d1..e8d2ac2cb1 100644 --- a/understanding/21/text-spacing.html +++ b/understanding/21/text-spacing.html @@ -99,7 +99,7 @@

    Results

    Line Height
    Changing line height did not separate diacritics from characters, nor did it adversely impact ascenders or descenders.
    -

    As previously discussed, the ability to read text with adjusted spacing is a user responsibility. This is true no matter the language.

    +

    As previously discussed, the ability to read text with adjusted spacing is a user responsibility. This is true no matter the language.

    The SC's exception addresses cases where a text style property is not used in a language or script. In such cases, authors are only required to ensure relevant properties do not break the layout.

    From 1a8cc5610ea4b641e22fa13359cf57d7be3faf52 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 26 Jul 2021 13:58:45 -0400 Subject: [PATCH 09/73] Update XSLT in WCAG-2.1 branch Fixes #1906 --- xslt/base.xslt | 1 + xslt/generate-structure-xml.xslt | 4 +-- xslt/generate-techniques.xslt | 14 +++++----- xslt/generate-understanding.xslt | 48 ++++++++++++++++++++++---------- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/xslt/base.xslt b/xslt/base.xslt index 0b93332dae..87b22df22f 100644 --- a/xslt/base.xslt +++ b/xslt/base.xslt @@ -154,6 +154,7 @@ Figure + diff --git a/xslt/generate-structure-xml.xslt b/xslt/generate-structure-xml.xslt index 22b72fd190..2941bd1d6c 100644 --- a/xslt/generate-structure-xml.xslt +++ b/xslt/generate-structure-xml.xslt @@ -34,7 +34,7 @@ - Understanding ACT Rules + Understanding Test Rules for WCAG Success Criteria @@ -105,4 +105,4 @@ - \ No newline at end of file + diff --git a/xslt/generate-techniques.xslt b/xslt/generate-techniques.xslt index 0ec75eb4ce..e84dbe1173 100644 --- a/xslt/generate-techniques.xslt +++ b/xslt/generate-techniques.xslt @@ -57,7 +57,7 @@
  • Related Techniques
  • Tests
  • -
  • Testing Rules
  • +
  • Test Rules
  • @@ -107,7 +107,7 @@ using a more specific technique - as a way to meet + when used with @@ -388,12 +388,12 @@ -
    -

    Testing Rules

    -

    The following are testing rules for certain aspects of this Technique. It is not necessary to use these particular rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Accessibility Conformance Testing (ACT) Rules, see Understanding ACT Rules for WCAG Success Criteria.

    +
    +

    Test Rules

    +

    The following are Test Rules related to this Technique. It is not necessary to use these particular Test Rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Test Rules, see Understanding Test Rules for WCAG Success Criteria.

      -
    • +
    @@ -470,4 +470,4 @@ - \ No newline at end of file + diff --git a/xslt/generate-understanding.xslt b/xslt/generate-understanding.xslt index 7ff34c63b8..572d60daec 100644 --- a/xslt/generate-understanding.xslt +++ b/xslt/generate-understanding.xslt @@ -91,8 +91,8 @@
  • Previous:
  • -
  • Previous GL:
  • -
  • Previous SC:
  • +
  • Previous GL:
  • +
  • Previous SC:
  • First GL:
  • @@ -119,7 +119,7 @@
  • Related Resources
  • Techniques
  • -
  • Testing Rules
  • +
  • Test Rules
  • @@ -187,15 +187,14 @@ - - - - - - + + + + + - + @@ -212,18 +211,37 @@ -
    -

    Testing Rules

    -

    The following are testing rules for certain aspects of this Success Criterion. It is not necessary to use these particular rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Accessibility Conformance Testing (ACT) Rules, see Understanding ACT Rules for WCAG Success Criteria.

    +
    +

    Test Rules

    +

    The following are Test Rules for certain aspects of this Success Criterion. It is not necessary to use these particular Test Rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Test Rules, see Understanding Test Rules for WCAG Success Criteria.

      -
    • +
    + + + + + + + Unable to find term "" in " ()"; key terms list will be incomplete. + + + + + + + + + + + +
    @@ -424,4 +442,4 @@ - \ No newline at end of file + From fdb632ab5293de477f9dff100b85e063328a2568 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 26 Jul 2021 14:14:27 -0400 Subject: [PATCH 10/73] Update act-mapping.json --- guidelines/act-mapping.json | 54 ++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 12 deletions(-) diff --git a/guidelines/act-mapping.json b/guidelines/act-mapping.json index 4bd8edd04d..34f95ffe0a 100644 --- a/guidelines/act-mapping.json +++ b/guidelines/act-mapping.json @@ -1,16 +1,26 @@ -{ +{ "act-rules": [{ - "title": "HTML page has title", - "permalink": "/standards-guidelines/act/rules/html-page-has-title-2779a5/", - "successCriteria": ["page-titled"], - "wcagTechniques": ["G88", "H25"] + "title": "Button has non-empty accessible name", + "permalink": "/standards-guidelines/act/rules/button-non-empty-accessible-name-97a4e1/", + "successCriteria": ["name-role-value"], + "wcagTechniques": [] + }, { + "title": "svg element with explicit role has non-empty accessible name", + "permalink": "/standards-guidelines/act/rules/explicit-SVG-image-non-empty-accessible-name-7d6734/", + "successCriteria": ["non-text-content"], + "wcagTechniques": [] }, { - "title": "HTML page has `lang` attribute", + "title": "Form field has non-empty accessible name", + "permalink": "/standards-guidelines/act/rules/form-field-non-empty-accessible-name-e086e5/", + "successCriteria": ["name-role-value"], + "wcagTechniques": [] + }, { + "title": "HTML page has lang attribute", "permalink": "/standards-guidelines/act/rules/html-page-lang-b5c3f8/", "successCriteria": ["language-of-page"], "wcagTechniques": ["H57"] }, { - "title": "HTML page language is valid", + "title": "HTML page lang attribute has valid language tag", "permalink": "/standards-guidelines/act/rules/html-page-lang-valid-bf051a/", "successCriteria": ["language-of-page"], "wcagTechniques": ["H57"] @@ -18,11 +28,31 @@ "title": "HTML page lang and xml:lang attributes have matching values", "permalink": "/standards-guidelines/act/rules/html-page-lang-xml-lang-match-5b7ae0/", "successCriteria": ["language-of-page"], - "wcagTechniques": ["H57"] + "wcagTechniques": [] }, { - "title": "Image button has accessible name", - "permalink": "/standards-guidelines/act/rules/image-button-accessible-name-59796f/", + "title": "HTML page has non-empty title", + "permalink": "/standards-guidelines/act/rules/html-page-non-empty-title-2779a5/", + "successCriteria": ["page-titled"], + "wcagTechniques": ["G88", "H25"] + }, { + "title": "Image button has non-empty accessible name", + "permalink": "/standards-guidelines/act/rules/image-button-non-empty-accessible-name-59796f/", "successCriteria": ["non-text-content", "name-role-value"], - "wcagTechniques": ["H36"] + "wcagTechniques": ["G94", "G95"] + }, { + "title": "Image has non-empty accessible name", + "permalink": "/standards-guidelines/act/rules/image-non-empty-accessible-name-23a2a8/", + "successCriteria": ["non-text-content"], + "wcagTechniques": ["G94", "G95"] + }, { + "title": "Link has non-empty accessible name", + "permalink": "/standards-guidelines/act/rules/link-non-empty-accessible-name-c487ae/", + "successCriteria": ["link-purpose-in-context", "link-purpose-link-only", "name-role-value"], + "wcagTechniques": ["G91"] + }, { + "title": "meta viewport allows for zoom", + "permalink": "/standards-guidelines/act/rules/meta-viewport-b4f0c3/", + "successCriteria": ["resize-text", "reflow"], + "wcagTechniques": [] }] -} \ No newline at end of file +} From 797afd1cf95d61b853a5c56ec2468c38528f3d4b Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Tue, 27 Jul 2021 11:38:06 -0400 Subject: [PATCH 11/73] Squashed commit of the following: commit fa8bc5a41f0380d67f094d4cb625af05e1155e3f Author: Michael Cooper Date: Tue Jul 27 11:36:35 2021 -0400 fix delete to allow CVS removes commit e19681de4f14aa736ddae70ae802b7276039467e Author: Michael Cooper Date: Mon Jul 26 15:16:32 2021 -0400 Clear old versions on W3C site before updating Fixes #1833 --- build.xml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/build.xml b/build.xml index 15fb36ee7b..83376a0251 100644 --- a/build.xml +++ b/build.xml @@ -328,18 +328,27 @@ - + + + + + + + + + + - + - + - + From d9460c5139553cca43731cac1b4af5f05b06fb7e Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Tue, 27 Jul 2021 11:45:30 -0400 Subject: [PATCH 12/73] Delete C41-enhanced.html --- techniques/css/C41-enhanced.html | 86 -------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 techniques/css/C41-enhanced.html diff --git a/techniques/css/C41-enhanced.html b/techniques/css/C41-enhanced.html deleted file mode 100644 index eac9d380d8..0000000000 --- a/techniques/css/C41-enhanced.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - Creating a strong focus indicator within the component - - - -

    Creating a strong focus indicator within the component

    -
    -

    Metadata

    -

    -

    CSS

    -

    -
    -
    -

    When to Use

    -

    All technologies that support CSS.

    -
    -
    -

    Description

    -

    The objective of this technique is to create a highly visible focus indicator that has sufficient contrast against the internal background color of a component.

    - -
    -
    -

    Examples

    -

    The examples demonstrate a simple implementation where a focus styles is applied to blue background. As the indicator is contained inside the component, you can be sure it maintains contrast whatever background the component is placed on

    - -
    -

    Inner border

    -

    HTML

    -
    <button>Example button</button>
    - -

    CSS to provide the indicator. It narrows the scope to buttons within the main element.

    -
    button { 
    -    background-color: #3f86d4 /* medium blue */
    -    color: white;
    -    padding: 10px;
    -    border: 1px #333 solid;
    -}
    -main button:focus { 
    -    outline: 2px #fff5be solid; /* light yellow */
    -    outline-offset: -4px;
    -}
    - -
    - Three blue buttons with a dark border, the middle button showing a bright yellow outline inside the button. -
    The default and focused states of the button.
    -
    - -
    - -
    -
    -

    Tests

    - -
    -

    Procedure

    -

    For each focusable user interface element:

    -
      -
    1. Place keyboard focus on each focusable user interface element on the page using the keyboard.
    2. -
    3. Check that the focus indicator area is at least the size of a 2 CSS px border around the component.
    4. -
    5. Check that the change of contrast of the indicator between focused and unfocused states has a ratio of 4.5:1 for the minimum focus indicator area.
    6. -
    -
    -
    -

    Expected Results

    -
      -
    • #2 and #3 are true.
    • -
    -
    -
    - -
    -

    Resources

    - -
    - - From c178bbb9d167478fb2833f24ac6b332166628e4a Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Fri, 13 Aug 2021 15:20:34 +0100 Subject: [PATCH 13/73] Typo --- understanding/21/non-text-contrast.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/non-text-contrast.html b/understanding/21/non-text-contrast.html index 77bd0fd0c9..b77f944ea5 100644 --- a/understanding/21/non-text-contrast.html +++ b/understanding/21/non-text-contrast.html @@ -59,7 +59,7 @@

    Adjacent colors

    Four radio buttons, the first is a plain circle labelled 'Not selected'. The second shows the circle filled with a darker color than the border. The third is filled with the same color as the border. The fourth has an inner filled circle with a gap between it and the outer border. -
    The first radio button shows the default state with a grey (#949494) circle. The second and third show the radio button selected and filled with a color that contasts with the color adjacent to the component. The last example shows the state indicator contrasting with the component colors.
    +
    The first radio button shows the default state with a grey (#949494) circle. The second and third show the radio button selected and filled with a color that contrasts with the color adjacent to the component. The last example shows the state indicator contrasting with the component colors.
    From e630681a2ff287d36fb00339e223b8d047bd7b90 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 17 Aug 2021 15:42:33 +0100 Subject: [PATCH 14/73] SC number typo --- understanding/20/parsing.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index bab3a2af20..363e98806e 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -46,7 +46,7 @@

    Intent of Parsing

    With the exception of one success criterion ( - 1.4.2: Resize text, which specifically mentions that the effect specified by the success criterion must + 1.4.4: Resize text, which specifically mentions that the effect specified by the success criterion must be achieved without relying on an assistive technology) authors can meet the success criteria with content that assumes use of an assistive technology (or access features in use agents) by the user, where such assistive technologies (or access features From fdb664f5ac1826cfef6969792bda15b1a6976095 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 23 Aug 2021 06:46:23 -0400 Subject: [PATCH 15/73] Fix output of version numbers for 2.2 --- xslt/base.xslt | 1 + xslt/generate-structure-xml.xslt | 4 ++-- xslt/generate-techniques.xslt | 2 +- xslt/xml-to-json.xslt | 5 +++-- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/xslt/base.xslt b/xslt/base.xslt index 87b22df22f..0e14f45c85 100644 --- a/xslt/base.xslt +++ b/xslt/base.xslt @@ -8,6 +8,7 @@ version="3.0"> + /guidelines/ /understanding/ diff --git a/xslt/generate-structure-xml.xslt b/xslt/generate-structure-xml.xslt index 2941bd1d6c..3e1d334556 100644 --- a/xslt/generate-structure-xml.xslt +++ b/xslt/generate-structure-xml.xslt @@ -26,7 +26,7 @@ - Introduction to Understanding WCAG 2.1 + Introduction to Understanding WCAG @@ -43,7 +43,7 @@ - How to Refer to WCAG 2.1 from Other Documents + How to Refer to WCAG from Other Documents diff --git a/xslt/generate-techniques.xslt b/xslt/generate-techniques.xslt index e84dbe1173..d75193cdcd 100644 --- a/xslt/generate-techniques.xslt +++ b/xslt/generate-techniques.xslt @@ -175,7 +175,7 @@

    Important Information about Techniques

    -

    See Understanding Techniques for WCAG Success Criteria for important information about the usage of these informative techniques and how they relate to the normative WCAG 2.1 success criteria. The Applicability section explains the scope of the technique, and the presence of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG 2.1.

    +

    See Understanding Techniques for WCAG Success Criteria for important information about the usage of these informative techniques and how they relate to the normative WCAG success criteria. The Applicability section explains the scope of the technique, and the presence of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG .

    diff --git a/xslt/xml-to-json.xslt b/xslt/xml-to-json.xslt index 16e53c3dcc..6ffc41b61c 100644 --- a/xslt/xml-to-json.xslt +++ b/xslt/xml-to-json.xslt @@ -31,8 +31,9 @@ - ["2.0", "2.1"] - ["2.1"] + ["2.0", "2.1", "2.2"] + ["2.0", "2.1"] + ["2.2"] From 6643b3e04f2e95373b70055fe17f16c9e5b75f4f Mon Sep 17 00:00:00 2001 From: "Patrick H. Lauke" Date: Wed, 27 Oct 2021 16:39:13 +0100 Subject: [PATCH 16/73] Correct 2.5.5 understanding with correct SC number Closes #2112 --- understanding/21/target-size.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/understanding/21/target-size.html b/understanding/21/target-size.html index 45207262ab..38a6ae01d0 100644 --- a/understanding/21/target-size.html +++ b/understanding/21/target-size.html @@ -2,11 +2,11 @@ - WCAG 2.0 Understanding Page + Understanding Target Size -

    Understanding SC 2.5.3 Target Size

    +

    Understanding SC 2.5.5 Target Size

    Intent

    The intent of this success criteria is to ensure that target sizes are large enough for users to easily activate them, even if the user is accessing content on a small handheld touch screen device, has limited dexterity, or has trouble activating small targets for other reasons. For instance, mice and similar pointing devices can be hard to use for these users, and a larger target will help them activate the target.

    @@ -88,8 +88,8 @@

    Advisory

    Failure

      -
    • Failure of success criterion 2.5.3 due to target size being less than 44 by 44 CSS pixels.
    • -
    • Failure of success criterion 2.5.3 due to target size of a paragraph that is also a link being less than 44 by 44 CSS pixels.
    • +
    • Failure of success criterion 2.5.5 due to target size being less than 44 by 44 CSS pixels.
    • +
    • Failure of success criterion 2.5.5 due to target size of a paragraph that is also a link being less than 44 by 44 CSS pixels.
    From 8e8cce22785e0c01ae58322e2d1e7b3fbb0a7469 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Wed, 12 Jan 2022 17:54:25 +0000 Subject: [PATCH 17/73] Updated colour tutor link --- understanding/20/use-of-color.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/20/use-of-color.html b/understanding/20/use-of-color.html index b3888cd814..be56a5e070 100644 --- a/understanding/20/use-of-color.html +++ b/understanding/20/use-of-color.html @@ -188,7 +188,7 @@

    Resources for Use of Color

  • - The Color Tutor application + The Color Tutor application
  • From f00709ae18d44bf3750c6bc996713ad950d468dc Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 4 Jan 2022 17:28:22 +0000 Subject: [PATCH 18/73] Merge pull request #1777 from w3c/Issue1758-conformance-requirements Conformance requirements, not criteria --- guidelines/terms/20/accessibility-supported.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guidelines/terms/20/accessibility-supported.html b/guidelines/terms/20/accessibility-supported.html index f33e2f900e..5711268545 100644 --- a/guidelines/terms/20/accessibility-supported.html +++ b/guidelines/terms/20/accessibility-supported.html @@ -84,7 +84,7 @@

    Web technologies can be used in ways that are not accessibility supported as long - as they are not relied upon and the page as a whole meets the conformance requirements, including Conformance Criterion 4 and Conformance Criterion 5, are met. + as they are not relied upon and the page as a whole meets the conformance requirements, including Conformance Requirement 4 and Conformance Requirement 5.

    When a Web Technology is used in a way that is "accessibility supported," it does not imply that the entire From c56f13b052d8a8902109878c1aef43bf8a2ff9a9 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Fri, 4 Feb 2022 08:53:44 +0000 Subject: [PATCH 19/73] Updated link --- understanding/21/identify-purpose.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/identify-purpose.html b/understanding/21/identify-purpose.html index c18476c368..b03c84cd96 100644 --- a/understanding/21/identify-purpose.html +++ b/understanding/21/identify-purpose.html @@ -43,7 +43,7 @@

    Benefits

    Examples

      -
    • A website uses ARIA landmarks to identify the regions of the page, and users can hide areas that do not have a role of main.
    • +
    • A website uses ARIA landmarks to identify the regions of the page, and users can hide areas that do not have a role of main.
    • The links in the navigation of a website are marked up so that users can add their own icons.
    • Icons on a website are marked up so that users can substitute their own icon sets into the page.
    From 826762cc28a50c44caaeec5ae82e47c9831b603d Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Thu, 10 Jun 2021 19:44:04 +0100 Subject: [PATCH 20/73] Updating the contrast value (#1780) * Updating the contrast value * Rain's suggested wording * removing the SRGB reference @MichaelC does this work for removing a bib entry? * Meeting updates. * Aligned understandings docs From AWK comment. --- biblio.js | 12 ------------ guidelines/terms/20/relative-luminance.html | 10 ++++++---- techniques/general/G145.html | 7 ++++--- techniques/general/G17.html | 7 ++++--- techniques/general/G18.html | 7 ++++--- understanding/20/contrast-enhanced.html | 4 ++-- understanding/20/contrast-minimum.html | 4 ++-- 7 files changed, 22 insertions(+), 29 deletions(-) diff --git a/biblio.js b/biblio.js index c87140e278..7c3a0057ea 100644 --- a/biblio.js +++ b/biblio.js @@ -31,18 +31,6 @@ respecConfig.localBiblio = { "publisher": "International Standards Organization" }, - "sRGB": { - "authors": [ - "M. Stokes", - "M. Anderson", - "S. Chandrasekar", - "R. Motta" - ], - "date": "November 5, 1996", - "href": "https://www.w3.org/Graphics/Color/sRGB.html", - "title": "A Standard Default Color Space for the Internet - sRGB, Version 1.10" - }, - "UNESCO": { "date": "1997", "href": "http://www.unesco.org/education/information/nfsunesco/doc/isced_1997.htm", diff --git a/guidelines/terms/20/relative-luminance.html b/guidelines/terms/20/relative-luminance.html index 0fb72a3d29..4e2633c023 100644 --- a/guidelines/terms/20/relative-luminance.html +++ b/guidelines/terms/20/relative-luminance.html @@ -12,13 +12,13 @@
      -
    • if RsRGB <= 0.03928 then R = RsRGB/12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4 +
    • if RsRGB <= 0.04045 then R = RsRGB/12.92 else R = ((RsRGB+0.055)/1.055) ^ 2.4
    • -
    • if GsRGB <= 0.03928 then G = GsRGB/12.92 else G = ((GsRGB+0.055)/1.055) ^ 2.4 +
    • if GsRGB <= 0.04045 then G = GsRGB/12.92 else G = ((GsRGB+0.055)/1.055) ^ 2.4
    • -
    • if BsRGB <= 0.03928 then B = BsRGB/12.92 else B = ((BsRGB+0.055)/1.055) ^ 2.4 +
    • if BsRGB <= 0.04045 then B = BsRGB/12.92 else B = ((BsRGB+0.055)/1.055) ^ 2.4
    @@ -35,11 +35,13 @@ -

    The "^" character is the exponentiation operator. (Formula taken from [[sRGB]] and +

    The "^" character is the exponentiation operator. (Formula taken from [[IEC-4WD]]).

    + +

    Before May 2021 the value of 0.04045 in the definition was different (0.03928). It was taken from an older version of the specification and has been updated. It has no practical effect on the calculations in the context of these guidelines.

    Almost all systems used today to view Web content assume sRGB encoding. Unless it is known that another color space will be used to process and display the content, diff --git a/techniques/general/G145.html b/techniques/general/G145.html index 04a910e3cd..eff670fa33 100644 --- a/techniques/general/G145.html +++ b/techniques/general/G145.html @@ -52,7 +52,7 @@

    • if R sRGB - <= 0.03928 then + <= 0.04045 then R = R sRGB @@ -63,7 +63,7 @@ +0.055)/1.055) ^ 2.4
    • if G sRGB - <= 0.03928 then + <= 0.04045 then G = G sRGB @@ -74,7 +74,7 @@ +0.055)/1.055) ^ 2.4
    • if B sRGB - <= 0.03928 then + <= 0.04045 then B = B sRGB @@ -146,6 +146,7 @@
    • #4 is true
    +

    Before May 2021 the value of 0.04045 in the definition was different (0.03928). It was taken from an older version of the specification and has been updated. It has no practical effect on the calculations in the context of these guidelines.

    Resources

      diff --git a/techniques/general/G17.html b/techniques/general/G17.html index e565671603..c0bf7d305d 100644 --- a/techniques/general/G17.html +++ b/techniques/general/G17.html @@ -53,7 +53,7 @@
      • if R sRGB - <= 0.03928 then + <= 0.04045 then R = R sRGB @@ -64,7 +64,7 @@ +0.055)/1.055) ^ 2.4
      • if G sRGB - <= 0.03928 then + <= 0.04045 then G = G sRGB @@ -75,7 +75,7 @@ +0.055)/1.055) ^ 2.4
      • if B sRGB - <= 0.03928 then + <= 0.04045 then B = B sRGB @@ -147,6 +147,7 @@
      • #4 is true
    +

    Before May 2021 the value of 0.04045 in the definition was different (0.03928). It was taken from an older version of the specification and has been updated. It has no practical effect on the calculations in the context of these guidelines.

    +

    Before May 2021 the value of 0.04045 in the definition was different (0.03928). It was taken from an older version of the specification and has been updated. It has no practical effect on the calculations in the context of these guidelines.

    Resources

    diff --git a/guidelines/sc/21/identify-input-purpose.html b/guidelines/sc/21/identify-input-purpose.html index bd3e7b7992..48f11559ac 100644 --- a/guidelines/sc/21/identify-input-purpose.html +++ b/guidelines/sc/21/identify-input-purpose.html @@ -7,7 +7,7 @@

    Identify Input Purpose

    The purpose of each input field collecting information about the user can be programmatically determined when:

    diff --git a/guidelines/sc/21/identify-purpose.html b/guidelines/sc/21/identify-purpose.html index 3ef13fb893..f614dd4cb6 100644 --- a/guidelines/sc/21/identify-purpose.html +++ b/guidelines/sc/21/identify-purpose.html @@ -4,5 +4,5 @@

    Identify Purpose

    AAA

    -

    In content implemented using markup languages, the purpose of User Interface Components, icons, and regions can be programmatically determined.

    +

    In content implemented using markup languages, the purpose of user interface components, icons, and regions can be programmatically determined.

    diff --git a/guidelines/sc/21/target-size-enhanced.html b/guidelines/sc/21/target-size-enhanced.html new file mode 100644 index 0000000000..683f50af99 --- /dev/null +++ b/guidelines/sc/21/target-size-enhanced.html @@ -0,0 +1,19 @@ +
    + +

    Target Size (Enhanced)

    + +

    AAA

    + +

    The size of the target for pointer inputs is at least 44 by 44 CSS pixels except when:

    +
    +
    Equivalent
    +
    The target is available through an equivalent link or control on the same page that is at least 44 by 44 CSS pixels;
    +
    Inline
    +
    The target is in a sentence or block of text;
    +
    User Agent Control
    +
    The size of the target is determined by the user agent and is not modified by the author;
    +
    Essential
    +
    A particular presentation of the target is essential to the information being conveyed.
    +
    + +
    diff --git a/guidelines/terms/20/changes-of-context.html b/guidelines/terms/20/changes-of-context.html index e155cbb307..5c4719e59d 100644 --- a/guidelines/terms/20/changes-of-context.html +++ b/guidelines/terms/20/changes-of-context.html @@ -1,7 +1,7 @@
    changes of context
    -

    major changes in the content of the Web page that, if made without user awareness, can disorient users who are not able to view +

    major changes that, if made without user awareness, can disorient users who are not able to view the entire page simultaneously

    diff --git a/guidelines/terms/20/process.html b/guidelines/terms/20/process.html index 3a22b8194e..aaa9e27880 100644 --- a/guidelines/terms/20/process.html +++ b/guidelines/terms/20/process.html @@ -8,7 +8,7 @@ shipping information and provide payment information.

    -

    An account registration page requires successful completion of a Turing test before +

    An account registration page requires successful completion of a Turing test before the registration form can be accessed.

    diff --git a/guidelines/terms/20/relative-luminance.html b/guidelines/terms/20/relative-luminance.html index 4e2633c023..93d748fbf5 100644 --- a/guidelines/terms/20/relative-luminance.html +++ b/guidelines/terms/20/relative-luminance.html @@ -45,7 +45,7 @@

    Almost all systems used today to view Web content assume sRGB encoding. Unless it is known that another color space will be used to process and display the content, - authors should evaluate using sRGB colorspace. If using other color spaces, see Understanding Success Criterion 1.4.3. + authors should evaluate using sRGB colorspace. If using other color spaces, see Understanding Success Criterion 1.4.3.

    If dithering occurs after delivery, then the source color value is used. For colors diff --git a/guidelines/terms/20/text-alternative.html b/guidelines/terms/20/text-alternative.html index 7829cf34c1..95e3bf555a 100644 --- a/guidelines/terms/20/text-alternative.html +++ b/guidelines/terms/20/text-alternative.html @@ -10,7 +10,7 @@ text alternative for the chart indicates that a description follows.

    -

    Refer to Understanding Text Alternatives for more information. +

    Refer to Understanding Text Alternatives for more information.

    diff --git a/guidelines/terms/20/user-interface-component.html b/guidelines/terms/20/user-interface-component.html index 890997ade0..3a9faa487c 100644 --- a/guidelines/terms/20/user-interface-component.html +++ b/guidelines/terms/20/user-interface-component.html @@ -6,7 +6,7 @@

    Multiple user interface components may be implemented as a single programmatic element. - Components here is not tied to programming techniques, but rather to what the user + "Components" here is not tied to programming techniques, but rather to what the user perceives as separate controls.

    diff --git a/guidelines/terms/21/motion-animation.html b/guidelines/terms/21/motion-animation.html index 854af17600..2e65d73188 100644 --- a/guidelines/terms/21/motion-animation.html +++ b/guidelines/terms/21/motion-animation.html @@ -2,6 +2,6 @@

    addition of steps between conditions to create the illusion of movement or to give a sense of a smooth transition

    -

    For example, an element which moves into place or changes size while appearing is considered to be animated. An element which appears instantly without transitioning is not using animation. Motion animation does not include changes of color, blurring or opacity.

    +

    For example, an element which moves into place or changes size while appearing is considered to be animated. An element which appears instantly without transitioning is not using animation. Motion animation does not include changes of color, blurring, or opacity which do not change the perceived size, shape, or position of the element.

    diff --git a/guidelines/terms/21/target.html b/guidelines/terms/21/target.html index b978f6ead0..c834be56f2 100644 --- a/guidelines/terms/21/target.html +++ b/guidelines/terms/21/target.html @@ -1,4 +1,4 @@ -
    target
    +
    target

    region of the display that will accept a pointer action, such as the interactive area of a user interface component

    diff --git a/techniques/aria/ARIA11.html b/techniques/aria/ARIA11.html index 6e65bb3edd..685c45494a 100644 --- a/techniques/aria/ARIA11.html +++ b/techniques/aria/ARIA11.html @@ -50,7 +50,7 @@

    Multiple landmarks of the same type and aria-labelledby

    The following example shows a best practice of how landmarks might be added to an HTML4 or XHTML 1.0 document in situations where there are more than two of the same type of landmark on the same page. For instance, if a navigation role is used multiple times on a Web page, each instance may have a unique label specified using aria-labelledby:

    -
    <div id="leftnav" role="navigaton" aria-labelledby="leftnavheading">
    +            
    <div id="leftnav" role="navigation" aria-labelledby="leftnavheading">
     <h2 id="leftnavheading">Institutional Links</h2>
     <ul><li>...a list of links here ...</li> </ul></div>
     <div id="rightnav" role="navigation" aria-labelledby="rightnavheading">
    @@ -62,7 +62,7 @@ 

    Multiple landmarks of the same type and aria-labelledby

    Multiple landmarks of the same type and aria-label

    The following example shows a best practice of how landmarks might be added to an HTML4 or XHTML 1.0 document in situations where there are more than two of the same type of landmark on the same page, and there is no existing text on the page that can be referenced as the label.

    -
    <div id="leftnav" role="navigaton" aria-label="Primary">
    +            
    <div id="leftnav" role="navigation" aria-label="Primary">
     <ul><li>...a list of links here ...</li></ul> </div>
     <div id="rightnav" role="navigation" aria-label="Secondary">
     <ul><li>...a list of links here ...</li> </ul></div>
    @@ -117,4 +117,4 @@

    Search form

    - \ No newline at end of file + diff --git a/techniques/aria/ARIA2.html b/techniques/aria/ARIA2.html index 2049f559cd..66121bfc61 100644 --- a/techniques/aria/ARIA2.html +++ b/techniques/aria/ARIA2.html @@ -5,7 +5,7 @@

    The fact that the element is required is often visually presented (via a text or non-text symbol, or text indicating input is required or color / styling) but this is not programmatically determinable as part of the field's name.

    The WAI-ARIA aria-required property indicates that user input is required before submission. The aria-required property can have values of true or false. For example, if a user must fill in an address field, then aria-required is set to true.

    -

    Note: Use of aria-required="true" might be beneficial even when an asterisk or other text symbol is programmatically associated with the field as it may reinforce its required property for some assistive technology users.

    +

    Use of aria-required="true" might be beneficial even when an asterisk or other text symbol is programmatically associated with the field as it may reinforce its required property for some assistive technology users.

    The fact that the element is required is often visually presented (such as a sign or symbol after the control). Using the aria-required property in addition to the visual presentation makes it much easier for user agents to pass on this important information to the user in a user agent-specific manner. Refer to Supporting ARIA in XHTML and HTML 4.01 for information on how to provide WAI-ARIA States and Properties with XHTML and HTML. WAI-ARIA States and Properties is compatible with other languages as well; refer to documentation in those languages.

    Examples

    diff --git a/techniques/client-side-script/SCR39.html b/techniques/client-side-script/SCR39.html index ee3b111d82..dd1a636f45 100644 --- a/techniques/client-side-script/SCR39.html +++ b/techniques/client-side-script/SCR39.html @@ -65,7 +65,7 @@

    CSS of example 1

    left:0; top:1em; }
    -
    +

    JavaScript of example 1

    @@ -103,6 +103,7 @@

    JavaScript of example 1

    Tests

    +

    Procedure

    For additional content that appears on hover check that:

    @@ -128,6 +129,7 @@

    Expected Results

  • #1 and #2 are true.
  • +
    -

    Working example: Show message asking to reorient device

    +

    Working example: Show message asking to reorient device

    diff --git a/techniques/failures/F104.html b/techniques/failures/F104.html index da3693db0c..fa65dacc22 100644 --- a/techniques/failures/F104.html +++ b/techniques/failures/F104.html @@ -45,7 +45,7 @@

    Text inside a box overflows and overlaps text below it when text spacing is Now is the time for all good men to come to the aid of their country.

    Now is the time for all good men to come to the aid of their country.

    -

    Here is the view AFTER the text spacing has been overridden by the user with the text spacing in the success criteria. The text overlaps the paragraph below it.

    +

    Here is the view AFTER the text spacing has been overridden by the user with the text spacing in the success criterion. The text overlaps the paragraph below it.

    Now is the time for all good men to come to the aid of their country.

    @@ -62,7 +62,7 @@

    Text inside a box is clipped when text spacing is implemented.

    Now is the time for all good men to come to the aid of their country.

    Now is the time for all good men to come to the aid of their country.

    -

    Here is the view AFTER the text spacing has been overridden by the user with the maximum text spacing in the success criteria, the text is clipped.

    +

    Here is the view AFTER the text spacing has been overridden by the user with the maximum text spacing in the success criterion, the text is clipped.

    Now is the time for all good men to come to the aid of their country.

    @@ -76,7 +76,7 @@

    Tests

    Procedure

    1. Open the page and review the available content.
    2. -
    3. Override the CSS on the page using a user stylesheet, bookmarklet, extension, or application with the values listed in the success criteria: +
    4. Override the CSS on the page using a user stylesheet, bookmarklet, extension, or application with the values listed in the success criterion:
      1. Line height to at least 1.5 times the font size;
      2. Spacing following paragraphs to at least 2 times the font size;
      3. diff --git a/techniques/failures/F106.html b/techniques/failures/F106.html index deb5b84f1c..ce5afb38ca 100644 --- a/techniques/failures/F106.html +++ b/techniques/failures/F106.html @@ -44,7 +44,7 @@

        Procedure

        Expected Results

          -
        • If #1 and 2 are false then the control fails this success criteria.
        • +
        • If #1 and 2 are false then the control fails this success criterion.
        diff --git a/techniques/failures/F107.html b/techniques/failures/F107.html index 75df78d4c0..098b1f6e82 100644 --- a/techniques/failures/F107.html +++ b/techniques/failures/F107.html @@ -26,7 +26,7 @@

        Applicability

        Description

        The purpose of this technique is to identify a failure condition where form inputs do not have the correct autocomplete attribute values for inputs that request information about the user of the form.

        -

        Success Criteria 1.3.5 uses a fixed list of tokens in Input Purposes for User Interface Components (based on the HTML 5.2 autocomplete attribute’s fixed list of token values) because the programmatic association of specified token values (metadata) allows for other machine processing, such as expressing the input label in different modalities.

        +

        Success Criteria 1.3.5 uses a fixed list of tokens in Input Purposes for user interface components (based on the HTML 5.2 autocomplete attribute’s fixed list of token values) because the programmatic association of specified token values (metadata) allows for other machine processing, such as expressing the input label in different modalities.

        Another important part of this Success Criterion is that the token values are associated with inputs that are scoped directly to the primary end user.

        diff --git a/techniques/failures/F108.html b/techniques/failures/F108.html new file mode 100644 index 0000000000..3cbefd185f --- /dev/null +++ b/techniques/failures/F108.html @@ -0,0 +1,78 @@ + + + + Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement + + + + + + + +

        Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement

        + +
        +

        Metadata

        +

        +

        failures

        +

        failure

        +
        + +
        +

        Applicability

        +

        Content using any technology which supports pointer input.

        +
        +
        +

        Description

        +

        The objective of this failure is to avoid situations in which people with motor impairments who cannot operate content because the only way to actuate a function is by dragging a target element from its initial position to some other position. The failure occurs when there is no alternative single pointer input available to actuate the function. The alternative may involve a series of single pointer interactions (for example, activating a target to be moved; opening a dropdown menu; and selecting a drop destination from the list of menu items offered).

        +
        + +
        +

        Examples

        + +
        +

        List re-ordering

        +

        A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. There is no alternative way to re-order the list that can be executed via a single pointer input.

        + +
        +
        +

        Kanban board

        +

        In a Kanban implementation for process management, tasks can be dragged horizontally across from one ‘swimming lane’ to another in order to change the status of tasks (for example, to change the status of a task from “in process” to “completed”). There is no alternative way to move targets between lanes that can be executed via a single pointer input.

        + +
        +
        + + +
        +

        Tests

        + +
        +

        Procedure

        + +
          +
        1. Check the interface for the presence of functions triggered by dragging movements
        2. +
        3. Check that there is a single pointer input alternative to operate the same function
        4. +
        + +
        +
        +

        Expected Results

        + +
          +
        • If #2 is false, then this failure condition applies and the content fails this Success Criterion.
        • +
        +
        +
        + +
        +

        Resources

        +
          +
        +
        + + + diff --git a/techniques/failures/F89.html b/techniques/failures/F89.html index c2108b7a5c..fd84199a2a 100644 --- a/techniques/failures/F89.html +++ b/techniques/failures/F89.html @@ -28,7 +28,7 @@

        HTML Search Results

        Expected Results

          -
        • If all checks are true, then this failure condition applies and the content fails the success criteria.
        • +
        • If all checks are true, then this failure condition applies and the content fails the success criterion.
        \ No newline at end of file + diff --git a/techniques/general/G156.html b/techniques/general/G156.html index 64a461d6cd..a16291e5e7 100644 --- a/techniques/general/G156.html +++ b/techniques/general/G156.html @@ -2,7 +2,7 @@

        All technologies

        Description

        Some people with cognitive disabilities require specific color combinations of foreground text and background to help them successfully understand the contents of the Web page. Most popular browsers provide the option to change colors settings globally within the browser. In this case the colors selected by the user override the foreground and background colors specified by the Web author.

        -

        In order to meet this success criteria, the Web author would design the page so that it works with browsers that have these controls, and the author does not override these controls.

        +

        In order to meet this success criterion, the Web author would design the page so that it works with browsers that have these controls, and the author does not override these controls.

        Note that overriding the foreground and background colors of all text on a page may hide visual clues to the grouping and organization of the Web page, making it much more difficult to understand and use. This technique may not be appropriate when background colors are used to delineate areas of the page. This technique may be appropriate for technologies and user agents that do not alter border colors when background colors are overridden. If background colors are used to delineate areas of the page, "Specifying text and background colors of secondary content such as banners, features and navigation in CSS while not specifying text and background colors of the main content" may be used to permit the user to control the colors of the main text while retaining the visual structure of the Web page.

        Examples

          diff --git a/techniques/general/G17.html b/techniques/general/G17.html index c0bf7d305d..ca7a151311 100644 --- a/techniques/general/G17.html +++ b/techniques/general/G17.html @@ -164,7 +164,7 @@ Colour Contrast Analyser - Firefox Extension
        • - Color Contrast Samples + Color Contrast Samples
        • Atypical colour response diff --git a/techniques/general/G176.html b/techniques/general/G176.html index 30dd527eb7..dab4b1ec15 100644 --- a/techniques/general/G176.html +++ b/techniques/general/G176.html @@ -79,10 +79,10 @@ Harding FPA Web Site
        • - Trace Center Photosensitive Epilepsy Analysis Tool (PEAT) + Trace Center Photosensitive Epilepsy Analysis Tool (PEAT)
        • - Information about Photosensitive Seizure Disorders + Information about Photosensitive Seizure Disorders
        • Epilepsy Action diff --git a/techniques/general/G18.html b/techniques/general/G18.html index 96fb737b6d..e46afd7614 100644 --- a/techniques/general/G18.html +++ b/techniques/general/G18.html @@ -166,7 +166,7 @@ Colour Contrast Analyser - Firefox Extension
        • - Color Contrast Samples + Color Contrast Samples
        • Atypical colour response diff --git a/techniques/general/G183.html b/techniques/general/G183.html index 40293aedad..626a575c4c 100644 --- a/techniques/general/G183.html +++ b/techniques/general/G183.html @@ -1,11 +1,13 @@ -Using a contrast ratio of 3:1 with surrounding text and providing additional visual cues on focus for links or controls where color alone is used to identify them

          Using a contrast ratio of 3:1 with surrounding text and providing additional visual cues on focus for links or controls where color alone is used to identify them

          ID: G183

          Technology: general

          Type: Technique

          When to Use

          + + 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 + + +

          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

          ID: G183

          Technology: general

          Type: Technique

          When to Use

          Colored text when color alone is used to convey information such as words that are links in a paragraph

          Description

          -

          The intent of this technique is to provide a redundant visual cue for users who may not be able to discern a difference in text color. Color is commonly used to indicate words that are links within a paragraph or other block of text. For example, scattered words in text may be hypertext links that are identified only by a difference in color with surrounding text. This technique describes a way to provide additional cues on hover and focus so that users who may have difficulty perceiving color differences or have low vision can identify them.

          -

          With this technique, a - relative luminance - (lightness) difference of 3:1 or greater with the text around it can be used if additional visual confirmation is available when a user points or tabs to the link. Visual highlights may, for example, take the form of underline, a change in font style such as bold or italics, or an increase in font size.

          -

          While using this technique is sufficient to meet this success criteria, it is not the preferred technique to differentiate link text. This is because links that use the relative luminance of color alone may not be obvious to people with black/white color blindness. If there are not a large number of links in the block of text, underlines are recommended for links.

          +

          The intent of this technique is to provide a redundant visual cue for users who may not be able to discern a difference in text color. Color (generally defined as a combination of hue, saturation and luminance) is commonly used to indicate words that are links within a paragraph or other block of text. For example, scattered words in text may be hypertext links that are identified only by a difference in color with surrounding text. This technique describes a way to provide a difference in contrast rather than relying on hue.

          +

          To meet success criterion 1.4.1: Use of Color a relative luminance (lightness) difference of 3:1 or greater with the text around can be used. This technique goes beyond the success criterion and asks for visual highlights when the user hovers over each link, such as an underline, a change in font style such as bold or italics, or an increase in font size. Such a hover effect provides confirmation to pointer users that the text is a link, similar to how the link alters its appearance for keyboard users when it receives focus, in order to meet 2.4.7 Focus Visible.

          +

          While using this technique is sufficient to meet this success criterion, it is not the preferred technique to differentiate link text. This is because links that use the relative luminance of color alone may not be obvious to people with low vision. If there are not a large number of links in the block of text, underlines are recommended for links in blocks of text.

          This technique is about the use of color in addition to luminosity. In this technique, the contrast ratio refers to the contrast between a link and the words around it. In Success Criterion 1.4.3 and 1.4.6, contrast ratio refers to the contrast between a word and its background. The difference is that this technique is about the ability for users to tell the difference (a noticeable difference) between different pieces of text whereas the contrast ratio used in success criterion 1.4.3 and 1.4.6 is about the readability of the text with its background for different color and vision disabilities.

          If an author wants to use the color portion of this technique (i.e., using different colors for the words where the colors have sufficient contrast with each other) and the author also wants to conform to SC 1.4.3 (contrast of both words with their backgrounds) the following colors can be used. (e.g., black text in a paragraph on a white background with the links shown as one of the colors in example 1 below.

          @@ -27,18 +29,15 @@

          Colors that would provide 3:1 contrast with black words and 4.5:1 contrast w

          Tests

          Procedure

          +

          For each instance where color is used to convey information about text:

            -
          1. Locate all instances where color alone is used to convey information about text.
          2. -
          3. Check that the - relative luminance - of the color of the text differs from the relative luminance of the surrounding text by a contrast ratio of at least 3:1.
          4. -
          5. Check that pointing (mouseover) to the link causes a visual enhancement (such as an underline, font change, etc.)
          6. -
          7. Check that moving keyboard focus to the link causes a visual enhancement (such as an underline, font change, etc.)
          8. +
          9. Check that the relative luminance of the color of the text differs from the relative luminance of the surrounding text by a contrast ratio of at least 3:1.
          10. +
          11. Check that hovering over the link causes a visual enhancement (such as an underline, font change, etc.)

          Expected Results

            -
          • Checks #2, #3, and #4 are all true.
          • +
          • Checks #1 and #2 are true.

          Resources

          -
          \ No newline at end of file +
        diff --git a/techniques/general/G19.html b/techniques/general/G19.html index 987f8e3506..125d6f8725 100644 --- a/techniques/general/G19.html +++ b/techniques/general/G19.html @@ -35,7 +35,7 @@ diff --git a/techniques/general/G195.html b/techniques/general/G195.html index 6aedf9e9e9..aa4c69a509 100644 --- a/techniques/general/G195.html +++ b/techniques/general/G195.html @@ -1,8 +1,8 @@ -Using an author-supplied, highly visible focus indicator

        Using an author-supplied, highly visible focus indicator

        ID: G195

        Technology: general

        Type: Technique

        When to Use

        +Using an author-supplied, visible focus indicator

        Using an author-supplied, visible focus indicator

        ID: G195

        Technology: general

        Type: Technique

        When to Use

        Generally applicable.

        Description

        -

        The objective of this technique is enhance the focus indicator in the browser, by creating a highly visible one in the content. The default focus indicator in many browsers is a thin, dotted, black line. It can be difficult to see the line when it is around a form element which already has an outline, when the focused element is inside a table cell, when the focused element is very small, or when the background of the page is a dark color. Some browsers use a pale blue outline, which can be difficult to see on some backgrounds.

        -

        In this technique, when the user places focus on an element, using the mouse, tab key, arrow keys, keyboard shortcuts, or any other method, the application makes that focus more visible, using a combination of a highly contrasting color, a thick line, and other visual indicators such as a glow.

        +

        The objective of this technique is enhance the focus indicator in the browser, by creating a visible one in the content. The default focus indicator in some browsers is a thin, dotted, black line. It can be difficult to see the line when it is around a form element which already has an outline, when the focused element is inside a table cell, when the focused element is very small, or when the background of the page is a dark color. Some browsers use a pale blue outline, which can be difficult to see on some backgrounds.

        +

        In this technique, when the user places focus on an element using the keyboard, the application makes that focus more visible, using a combination of a highly contrasting color, a thick line, and other visual indicators such as a glow.

        Examples

        @@ -13,29 +13,29 @@

        Links

        Form Elements

        -

        A Web page includes a form inside a table. The borders of both the table and the form elements are thin, black lines. When focus lands on a form element, the element is outlined with a 5 pixel red line that is partially transparent.

        +

        A Web page includes a form inside a table. The borders of both the table and the form elements are thin, black lines. When focus lands on a form element, the element is outlined with a 5 pixel red line that is partially transparent. The red is equivalent to a hex color of #FF3838, providing a 3.6:1 contrast ratio with the white background.

        Menus

        -

        A Web page includes an interactive menu with sub-menus. A user can move focus in the menu using the arrow keys. As focus moves, the currently focused menu item changes its background to a different color, which has a 3:1 contrast ratio with the surrouding items and a 4.5:1 contrast ratio with its own text.

        +

        A Web page includes an interactive menu with sub-menus. A user can move focus in the menu using the arrow keys. As focus moves, the currently focused menu item changes its background to a different color, which has a 3:1 contrast ratio with the surrounding items and a 4.5:1 contrast ratio with its own text.

        Tests

        Procedure

        +

        For each user interface component on the page that should receive keyboard focus:

          -
        1. Place focus on each focusable user interface element on the page using the mouse.
        2. -
        3. Check that there is a highly visible focus indicator.
        4. -
        5. Place focus on each focusable user interface element on the page using the keyboard.
        6. +
        7. Navigate to the component and check that it has a visible focus indicator.
        8. Check that the focus indicator area is at least the size of a 1 CSS px border around the component.
        9. -
        10. Check that the change of contrast of the indicator between focused and unfocused states has a ratio of 3:1 for the minimum focus indicator area.
        11. +
        12. If the focus indicator area is not at least equal to the area of a 1 CSS pixel border, check that it has an area of at least 4 CSS pixels along the shortest side of the component.
        13. +
        14. Check that the change of contrast of the indicator between focused and unfocused states has a ratio of 3:1 or more for the minimum focus indicator area.
        15. If the focus indicator does not have 3:1 contrast ratio with its adjacent colors, check that it is at least 2px thick.

        Expected Results

          -
        • Checks #2, #4, #5 and #6 are true.
        • +
        • Checks #2, #4, and #5 are true.
        \ No newline at end of file +
        diff --git a/techniques/general/G207.html b/techniques/general/G207.html index 55e4794291..399be5a865 100644 --- a/techniques/general/G207.html +++ b/techniques/general/G207.html @@ -37,13 +37,13 @@

        Solid icon color against a custom background

        Solid icon with a gradient background

        -

        A solid icon such as a telephone symbol using a dark blue icon on a white-to-blue gradient background. The first test of the icon should be against the darkest (least contrasting) background that is adjacent to the icon color. If that is at least 3:1, it passes the success criteria.

        +

        A solid icon such as a telephone symbol using a dark blue icon on a white-to-blue gradient background. The first test of the icon should be against the darkest (least contrasting) background that is adjacent to the icon color. If that is at least 3:1, it passes the success criterion.

        Dark blue icon on white-to-blue background.

        Solid icon with gradient background overlapping in contrast

        A solid icon on a gradient background can overlap in contrast if the graphic is still understandable where it does not have contrast against all of the background. If you find the part of the gradient where it does not meet a 3:1 ratio with the graphic and treat that part as if it was removed, does the icon still convey the appropriate meaning?

        -

        A method of visualizing this is to remove the non-contrasting area and check that you can still understand the icon. If so, it is sufficient. The images below shows an icon on a gradient background, and a second version where it removes the area of the icon that does not meet the 3:1 contrast ratio. It is still recognizable as a phone icon, so passes the success criteria.

        +

        A method of visualizing this is to remove the non-contrasting area and check that you can still understand the icon. If so, it is sufficient. The images below shows an icon on a gradient background, and a second version where it removes the area of the icon that does not meet the 3:1 contrast ratio. It is still recognizable as a phone icon, so passes the success criterion.

        Dark blue icon on white-to-blue background that is dark at the bottom. Dark blue icon on white-to-blue background.

        diff --git a/techniques/general/G212.html b/techniques/general/G212.html index ff5929da42..89751b935a 100644 --- a/techniques/general/G212.html +++ b/techniques/general/G212.html @@ -19,7 +19,7 @@

        When to Use

        Description

        The objective of this technique is to ensure that users who attempt to interact with a control do not trigger the action of the event accidentally. This can be accomplished most directly by relying on the pointer's up-event (for example, the onclick or mouseup event).

        -

        The easiest way to meet this success criteria is simply to use the default behavior of controls and not override that behaviour with an explicit down-event trigger. The up-event is the default behaviour for almost all controls and any programming or markup language.

        +

        The easiest way to meet this success criterion is simply to use the default behavior of controls and not override that behaviour with an explicit down-event trigger. The up-event is the default behaviour for almost all controls and any programming or markup language.

        In native languages where a control is fired on the down event it is usually for good reason and is easily recoverable. For instance, an HTML input element could have the cursor enter the editable area on the “pointer down” event, because the action is trivially reversible, and as such meets the requirements of the Pointer Cancellation SC. This is because if the user realizes they made a mistake after pressing down the control, they can simply move their pointer away from the hit area while still holding down the pointer, then release their pointer and the event is not triggered.

        diff --git a/techniques/general/G218.html b/techniques/general/G218.html new file mode 100644 index 0000000000..c60bfd5371 --- /dev/null +++ b/techniques/general/G218.html @@ -0,0 +1,63 @@ + + + + Email link authentication + + + +

        Email link authentication

        +
        +

        Metadata

        +

        3.3.7 Accessible Authentication

        +

        Sufficient

        +
        +
        +

        Applicability

        +

        Technologies that support authentication.

        +
        +
        +

        Description

        +

        The objective of this technique is to provide an easy way for users to authenticate without needing a password. This technique involves providing an authentication mechanism where the user can enter their email address, and they are sent an email with a link to click. When the user clicks the link in the email, they are directed back to the website and automatically logged in.

        +

        The security of the email link mechanism is not the focus of this technique, but it generally involves sending a time limited token as part of the email.

        + +
        +
        +

        Examples

        +
        +

        Author provides an email mechanism to login with a link

        +

        A social media website has a username and password based login mechanism. As part of the forgotten password feature, there is a separate link to login with an email. When the user enters their email and submits the form, the site sends an email to the user. Clicking the link in the email opens the website and the user is logged in.

        +
        +
        +
        +

        Tests

        +
        +

        Procedure

        +

        For websites which allow users to login by emailing a link to the email address associated with the account:

        +
          +
        1. Enter a valid email address (with an account on the website) and use the email-link feature.
        2. +
        3. Check that the email is received.
        4. +
        5. Check that selecting the link opens the website.
        6. +
        7. Check that the user account is logged in.
        8. +
        +
        +
        +

        Expected Results

        +
          +
        • #2, #3 and #4 are true.
        • +
        +
        +
        + +
        +

        Resources

        + +
        + + diff --git a/techniques/general/G219.html b/techniques/general/G219.html new file mode 100644 index 0000000000..c64011e0ff --- /dev/null +++ b/techniques/general/G219.html @@ -0,0 +1,70 @@ + + + + Ensuring that a single pointer alternative is available for dragging movements that operate on content + + + +

        Ensuring that a single pointer alternative is available for dragging movements that operate on content

        +
        +

        Metadata

        +

        Provide information below to help editors associate the technique properly. Contents of the meta section are not output by the processor.

        +

        2.5.X Dragging

        +

        Sufficient

        +
        +
        +

        Applicability

        +

        Content using any technology which supports pointer input.

        +
        +
        +

        Description

        +

        The objective of this Technique is to ensure that people with motor impairments who cannot carry out dragging movements are presented with an alternative single pointer interaction.

        +

        Some direct manipulation interfaces allow users to pick up targets and use dragging movements to move them to another position, for example, to change the position of an item in a priority list, or to move a task on a Kanban or planning board.

        +

        Such dragging movements are difficult or impossible to carry out for some users with motor disabilities. The alternative to dragging movements operates the underlying function by one or several single pointer activations. A single tap or click may reveal controls (arrows) to move a target in a stepwise fashion; open a drop-down menu where the drop position can be selected; or allow moving it to an ajacent postion by a swipe gesture.

        + + +
        +
        +

        Examples

        +
        +
          +
        • A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. After a single pointer activation, the list items display up and down arrows which allow a step-wise re-ordering of the the list via a single pointer inputs (taps or clicks at the up or down arrow).
        • +
        • A vertical priority list indicates the priority of items listed. Each item can be ‘picked up’ with a pointer and dragged up or down to another position. The other list items rearrange dynamically. To the left of each list item, a number in a text field shows the current priority position. For any of the items, users can put in another number. This leads to a dynamic reordering and renumbering of the priority list.
        • +
        • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks (for example, to change the status of a task from “in process” to “completed”). One or several items in a lane can be selected by a single tap or click. A single pointer activation of a drop-down menu labelled “Move selected items to” offers a selection of drop targets (other lanes). A further single pointer activation over the desired menu item moves targets to the specified lane.
        • +
        • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks. A directional horizontal swipe over an item moves it to the adjacent lane. This process can be repeated until the item is in the desired lane.
        • +
        • In a radial control widget, the visual indicator of the current value of the control can be dragged to a different position. Users can also click or tap on another position of the radial control to change the value.
        • +
        + +
        +
        +
        +

        Tests

        +
        +

        Procedure

        +

        For interface elements that support dragging:

        +
          +
        1. Check the interface for the presence of functions triggered by dragging movements.
        2. +
        3. Check that there is a single pointer activation alternative to operate the same function
        4. +
        +
        +
        +

        Expected Results

        +
          +
        • Check #2 is true.
        • +

          If this is a sufficient technique for a success criterion, failing this test procedure does not necessarily mean that the success criterion has not been satisfied in some other way, only that this technique has not been successfully implemented and cannot be used to claim conformance.

          +
        +
        +
        + +
        +

        Resources

        + +
        + + diff --git a/techniques/general/G220.html b/techniques/general/G220.html new file mode 100644 index 0000000000..48d7e247c2 --- /dev/null +++ b/techniques/general/G220.html @@ -0,0 +1,60 @@ + + + + Provide a contact-us link in a consistent location + + + +

        Provide a contact-us link in a consistent location

        +
        +

        Metadata

        +

        Findable Help

        +

        Sufficient

        +
        +
        +

        Applicability

        +

        Technologies that contain links

        +
        +
        +

        Description

        +

        The objective of this technique is to provide a mechanism for finding contact details in a consistent location across pages to make it easier for users to find it. The interactive item in the Web page is a link to the contact details page. The programmatic and visual location is consistent on each page in the set of web pages, when viewed within the same size viewport. Activating the link brings users to a Web page with contact details such as a phone number and/or email address.

        + +
        +
        +

        Examples

        +
        +

        A link at the top of the page

        +

        An on-line job application asks for many types of information from the user, such as their identification number, but they may have several and not know which one to enter. They may need more information from someone that can answer their question when the contextual help provided does not meet their needs. One of the first links that the user reaches when tabbing through the page is titled "Contact Us". This link is also visually in the same location on each page. Activating the link brings the user to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

        +
        +
        +

        A link in the footer region

        +

        A Web page’s footer region contains links repeated on every page in a set of web pages. The visual and programmatic order are consistent when viewed in the same size display. One of the first links in the footer region is labeled visually and programmatically “Contact Us.” A user activates the link and is brought to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

        +
        +
        +
        +

        Tests

        +
        +

        Procedure

        +
          +
        1. Determine if this is a single page app or a set of web pages, with blocks of content that are repeated on multiple web pages.
        2. +
        3. Determine if at least one of the following is included or linked in a consistent location: +
            +
          • Human contact details
          • +
          • Human contact mechanism
          • +
          • Self-help option
          • +
          • A fully automated mechanism
          • +
          +
        4. +
        5. Without changing the viewport size, check that the identified help is present on all other web pages within that set of web pages.
        6. +
        +
        +
        + + + + diff --git a/techniques/general/G221.html b/techniques/general/G221.html new file mode 100644 index 0000000000..b9aa2978f5 --- /dev/null +++ b/techniques/general/G221.html @@ -0,0 +1,69 @@ + + + + Provide data from a previous step in a process + + + +

        Provide data from a previous step in a process

        +
        +

        Metadata

        +

        3.3.8 Redundant entry

        +

        Sufficient

        +
        +
        +

        Applicability

        +

        Any technology that supports user input.

        +
        +
        +

        Description

        +

        The objective of this technique is to provide information that was previously provided by the user or by the system, rather than requiring the user to remember and re-enter the information from a previous step. This improves success for individuals with cognitive and learning disabilities and memory impairments.

        +
        + +
        +

        Examples

        +
        +

        Populate previously entered information with a trigger

        +

        An ecommerce site provides a checkbox that triggers the shipping address to be pre-populated based on the billing address the user had entered in a previous step.

        + +
        +
        +

        Automatically populate information based on previous answers

        +

        During a two-step process for setting up a business, the first step provides a business identification number after the user enters a name, and address. The second step requires creating a user profile. The business identification number, name and address are prepopulated.

        +
        +
        +

        Display the information from a previous step

        +

        During a two-step process for setting up a business, the first step provides a business identification number after the user enters a name and address. The second step requires creating a user profile. The interface allows the user to select the business they just set up with all associated information.

        +
        +
        +
        +

        Tests

        +
        +

        Procedure

        +

        For each input in a process that requires information to be entered:

        +
          +
        1. Check if the information has already been requested on a previous step of the process;
        2. +
        3. Check that the information entered previously is prepopulated in the fields or displayed on the page.
        4. +
        +
        +
        +

        Expected Results

        +
          +
        • #1 and #2 are true.
        • +
        +
        +
        + +
        +

        Resources

        +
          +
        • Link
        • +
        +
        + + diff --git a/techniques/general/G222.html b/techniques/general/G222.html new file mode 100644 index 0000000000..7c4d84d473 --- /dev/null +++ b/techniques/general/G222.html @@ -0,0 +1,62 @@ + + + + Provide persistently visible controls + + + +

        Provide persistently visible controls

        +
        +

        Metadata

        +

        3.2.6 Hidden Controls

        +

        Sufficient

        +
        +
        +

        Applicability

        +

        Any technology

        +
        +
        +

        Description

        +

        The objective of this technique is to ensure that controls are visible without requiring the user hover with the mouse or another pointer device or move the keyboard focus to the control. This is important when the user needs the control to progress or complete a process. Ensuring users can see the controls they need prevents users from having to search for controls and remember where they are located. This improves success for individuals with cognitive and learning disabilities and memory impairments.

        +

        To meet this technique use controls that are visible without onmouseover or onfocus events.

        +

        Some pages may appear cluttered when the same control is repeated in multiple places on the page. Often in these cases, the control is not needed to progress but is functioning as a shortcut through the process. If the control is provided in a later step when it is needed to progress, then these shortcuts do not need to be displayed.

        +
        +
        +

        Examples

        +
        +

        Replying to an Email

        +

        Replying to an email involves opening an inbox, opening the email, hitting reply, writing an email and hitting send. When the email is open, the Reply button is clearly visible at the top. When the editable email opens, a send button is visible at the top. The reply button is also displayed when the email is hovered over in the inbox, but since it is available later in the process when it is needed to progress, the hover approach is OK.

        +
        +
        +

        Login Form

        +

        A login form requires the user complete a name and two matching passwords that meet certain criteria. When the information is completed, the Submit button becomes visible.

        +
        +
        +
        +

        Tests

        +
        +

        Procedure

        +

        For controls that progress or complete a process:

        +
          +
        1. Verify that the controls are visible at the time they are needed without requiring pointer hover or keyboard focus.
        2. +
        +

        Note: Where a page has multiple page variations (i.e., in a responsive design) controls should be tested in each variation.

        +
        +
        +

        Expected Results

        +
          +
        • #1 is true.
        • +
        +
        +
        + +
        +

        Resources

        +
        + + diff --git a/techniques/general/G223.html b/techniques/general/G223.html new file mode 100644 index 0000000000..ec09518b8a --- /dev/null +++ b/techniques/general/G223.html @@ -0,0 +1,43 @@ +Using an author-supplied, highly visible focus indicator

        Using an author-supplied, highly visible focus indicator

        ID: G195

        Technology: general

        Type: Technique

        When to Use

        +

        Generally applicable.

        +

        Description

        +

        The objective of this technique is enhance the focus indicator in the browser, by creating a highly visible one in the content. This technique is very similar to G195, but with a stronger indicator to meet Focus Appearance (Enhanced).

        +
        +
        +

        Examples

        +
        +

        Links

        +

        A Web page has a dark background color and light text and links. When focus lands on a link, the link is outlined with a bright yellow line, 3 pixels wide.

        +
        +
        +

        Form Elements

        + +

        A Web page includes a form inside a table. The borders of both the table and the form elements are thin, black lines. When focus lands on a form element, the element is outlined with a 5 pixel red line that is partially transparent. The red is equivalent to a hex color of #CA0000, providing a 6:1 contrast ratio with the white background.

        + +
        +
        +

        Menus

        + +

        A Web page includes an interactive menu with sub-menus. A user can move focus in the menu using the arrow keys. As focus moves, the currently focused menu item changes its background to a different color, which has a 15:1 contrast ratio with the surrounding items (whilst maintaining text contrast).

        + +
        +

        Tests

        +

        Procedure

        +

        For each user interface component on the page that should receive keyboard focus:

        +
          +
        1. Navigate to the component and check that it has a visible focus indicator that is not obscured by other content.
        2. +
        3. Check that the focus indicator area is at least double the size of a 1 CSS px border around the component.
        4. +
        5. Check that the change of contrast of the indicator between focused and unfocused states has a ratio of 4.5:1 or more for the minimum focus indicator area.
        6. +
        +
        +

        Expected Results

        +
          +
        • Checks #2, #4, and #5 are true.
        • +
        +
        +
        diff --git a/techniques/general/G56.html b/techniques/general/G56.html index 09592fdd8a..f202c4a3ba 100644 --- a/techniques/general/G56.html +++ b/techniques/general/G56.html @@ -6,9 +6,8 @@

        The objective of this technique is to allow authors to include sound behind speech without making it too hard for people with hearing problems to understand the speech. Making sure that the foreground speech is 20 db louder than the - backgound sound makes the speech 4 times louder than the background audio. - For information on Decibels (dB), refer to - About Decibels.

        + backgound sound makes the speech 4 times louder than the background audio. For information on Decibels (dB), refer to + About Decibels.

        Examples

        An announcer speaking over a riot scene

        @@ -74,12 +73,8 @@

        Insufficient Audio Contrast between a narrator and background music

        diff --git a/techniques/general/hidden-control-2.html b/techniques/general/hidden-control-2.html new file mode 100644 index 0000000000..325282942c --- /dev/null +++ b/techniques/general/hidden-control-2.html @@ -0,0 +1,60 @@ + + + + Provide a setting to make controls visibly persist + + + +

        Provide a setting to make controls visibly persist

        +
        +

        Metadata

        +

        3.2.6 Hidden Controls

        +

        Sufficient

        +
        +
        +

        Applicability

        +

        Any technology

        +
        +
        +

        Description

        +

        The objective of this technique is to ensure that controls are visible without requiring the user hover with the mouse or another pointer device or move the keyboard focus to the control. This is important when the user needs the control to progress or complete a process. Ensuring users can see the controls they need prevents users from having to search for controls and remember where they are located. This improves success for individuals with cognitive and learning disabilities and memory impairments.

        +

        To meet this technique, provide a setting that makes controls needed to progress or complete a process visible without onmouseover or onfocus events.

        +

        Some pages may appear cluttered when the same control is repeated in multiple places on the page. In these cases, it may make sense for the controls to only appear on hover by default. Provide a setting that changes the default to display the controls without pointer hover or keyboard focus. If setting information can be retained by the system, maintain this setting across sessions.

        +
        +
        +

        Examples

        +
        +

        Webpage Editor

        +

        A webpage editor allows user to edit many parts of the page. Once the editor is open, a user must hover over a section of the page to discover if it is editable. If all the edit icons are displayed, it will clutter the page so a setting is provided that will display all the icons for users who need to see them. This setting persists across sessions once selected.

        +
        +
        +
        +

        Tests

        +
        +

        Procedure

        +

        For controls that progress or complete a process:

        +
          +
        1. Identify controls that only display when pointer hover or mouse focus is over them.
        2. +
        3. Locate a setting that changes these controls so that they visibly persist.
        4. +
        5. Test that all controls needed to progress or complete a process remain visible.
        6. +
        +

        Note: Where a page has multiple page variations (i.e., in a responsive design) controls should be tested in each variation.

        +
        +
        +

        Expected Results

        +
          +
        • #3 is true.
        • +
        +
        +
        + +
        +

        Resources

        +
        + + diff --git a/techniques/html/H71.html b/techniques/html/H71.html index bd5e7698d3..23c4469ec5 100644 --- a/techniques/html/H71.html +++ b/techniques/html/H71.html @@ -8,7 +8,7 @@

        Grouping controls is most important for related radio buttons and checkboxes. A set of radio buttons or checkboxes is related when they all submit values for a single named field. They work in the same way as selection lists, allowing the user to choose from a set of options, except selection lists are single controls while radio buttons and checkboxes are multiple controls. The individual label associated with each radio or checkbox control may not fully convey the group's descriptive context. In this situation, it is essential that they be grouped together semantically to facilitate being treated as a single control, as well as to provide an additional group level description. Often, user agents will present the value of the legend before the label of each control to provide this description, as well as to remind users that they are part of the same group.

        It can also be useful to group other sets of controls less tightly related than radio buttons and checkboxes. For instance, several fields that collect a user's address might be grouped together with a legend of "Address", thus providing a group level description for these controls. As a rule of thumb, it can be said that where a group of controls within a larger form requires an additional heading to provide a description specific to that particular group, the use of fieldset and legend elements is appropriate.

        However, when a group of related radio buttons or checkboxes (even having values for a single named field) includes clear instructions and distinct selections (i.e. where the individual label associated with each particular control provides a sufficient description), the use of the fieldset and legend elements is not required. - is sufficient in this case.

        + H44 is sufficient in this case.

        Authors sometimes avoid using the fieldset element because of the default display in the browser, which draws a border around the grouped controls. This visual grouping is also useful and authors should seriously consider retaining it (or some form of visual grouping). The visual effect can be modified in CSS by overriding the "border" property of the fieldset and the "position" property of the legend.

        Examples

        @@ -129,4 +129,4 @@

        Logically related controls

        -
        \ No newline at end of file +
        diff --git a/techniques/html/H95.html b/techniques/html/H95.html index 73c9fc59d8..34a468b19f 100644 --- a/techniques/html/H95.html +++ b/techniques/html/H95.html @@ -3,7 +3,7 @@

        Description

        The objective of this technique is to use the HTML5 track element to specify a captions timed text track for a video element. Caption timed text tracks contain transcription or translation of the dialogue, sound effects, relevant musical cues, and other relevant audio information, suitable for when sound is unavailable or not clearly audible.

        The src attribute of the track element is a URL that is the address of the text track data.

        -

        The kind attribute of the track element indicates the kind of information in the timed text. captions text tracks provide a text version of dialogue and other sounds important to understanding the video. Subtitles contain only the dialogue. If other audio information is important to understanding the video, a subtitle track will not be sufficient to meet the success criteria.

        +

        The kind attribute of the track element indicates the kind of information in the timed text. captions text tracks provide a text version of dialogue and other sounds important to understanding the video. Subtitles contain only the dialogue. If other audio information is important to understanding the video, a subtitle track will not be sufficient to meet the success criterion.

        Some regions use the term "subtitle" for any visible text representation of the audio track. An author may mark up a timed text track in the language of the audio track as kind=subtitles, instead of kind=captions, and may include additional relevant audio information. It is not best practice to use subtitles in this situation, since it may confuse users who are trying to find captions, but such a timed text track would meet the requirements of Success Criterion 1.2.2.

        diff --git a/techniques/html/H99.html b/techniques/html/H99.html new file mode 100644 index 0000000000..3f57b7faa3 --- /dev/null +++ b/techniques/html/H99.html @@ -0,0 +1,112 @@ + + + + Provide a page-selection mechanism + + + +

        Provide a page-selection mechanism

        +
        +

        Applicability

        +

        applicability

        +

        html

        +

        sufficient

        +

        Digital publications derived from a fixed layout source or that include static page break locations to enable common points of reference.

        +

        User Agent and Assistive Technology Support Notes

        +

        User agents may provide a specialized interface to the page list rather than render it directly, especially in ebook formats. Users might be presented with an input box into which to enter the page number they wish to go to, for example.

        +
        +
        +

        Description

        + +

        The objective of this technique is to ensure that a page-selection mechanism is provided that makes available programmatically all set page locations in the digital publication.

        + +

        The page-selection mechanism provides a way to locate static page break locations (i.e., where each new page begins) within a digital publication. These locations typically come from a print equivalent of the edition and allow synchronization in, for example, a mix of print and digital publications in environments such as schools and universities.

        + +

        The source of pagination is not limited to print but could match up to any statically paginated alternative, such as a PDF or even a fixed-layout EPUB (i.e., where the content does not reflow to fit the available screen size).

        + +

        The order of the page break locations in a digital publication is not sequential in all cases, and not all page breaks may be represented. Publishers often rearrange and remove content from the paginated source content when creating a digital version.

        + +

        Page lists are a central feature of many digital publishing formats. EPUB 3 defines the page list in its navigation document,[1] while EPUB 2 and DAISY 3 use the pageList element in the NCX.[2] The DPUB-ARIA module also includes a doc-pagelist role for identifying the navigation element containing the page list.[3]

        + +

        Other publications provide a means of page navigation through a 'go to' mechanism.

        + +
        +
        +

        Examples

        +
        +

        Page list in HTML publications

        +

        To add a page list to a web-based document, the role "doc-pagelist" is added to the element (typically a nav element) that encloses the list and its title.

        +
        <nav role="doc-pagelist" aria-labelledby="pglist">
        + <h2 id="pglist">Page List</h2>
        + <ol>
        +   <li><a href="intro.xhtml#pg1">1</a></li>
        +   <li><a href="intro.xhtml#pg2">2</a></li>
        +   …
        + </ol>
        +</nav>
        +
        +

        The destinations of the page list links are usually explicit page break markers like the following:

        +
        <span id="pg1" role="doc-pagebreak" aria-label="page 1">
        +
        +
        +

        Page list in EPUB 3 publications

        +

        EPUB 3 uses the epub:type attribute to identify the page list in the navigation document. The attribute is used on a nav element with the value "page-list" (note the different hyphenation). The ARIA role attribute has no effect unless the navigation document can be directly accessed by users (i.e., the document is in the EPUB spine). Like the previous HTML example, the contents of the nav element is a list of links to the page break locations.

        +
        <nav epub:type="page-list" role="doc-pagelist" aria-labelledby="pglist">
        +   <h2 id="pglist">Page List</h2>
        +   <ol>
        +      <li><a href="chapter01.xhtml#page001">1</a></li>
        +      <li><a href="chapter01.xhtml#page002">2</a></li>
        +      <li><a href="chapter01.xhtml#page003">3</a></li>
        +      …
        +   </ol>
        +   </nav>
        +
        +
        +

        Page list in EPUB 2 and DAISY publications

        +

        The EPUB 2 and DAISY 3 formats both use an XML grammar called the NCX for expressing navigation aids. The page list is defined within the ncx element using the pageList tag. Each pageTarget within this element identifies a page break, providing both a label and a destination.

        +
        <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/"
        +     version="2005-1"
        +     xml:lang="en-US">
        +   …
        +   <pageList>
        +      <pageTarget id="p1" type="normal" value="1">
        +         <navLabel><text>1</text></navLabel>
        +         <content src="content.html#p001"/>
        +      </pageTarget>
        +      <pageTarget id="p2" type="normal" value="2">
        +         <navLabel><text>2</text></navLabel>
        +         <content src="content.html#p002"/>
        +      </pageTarget>
        +   </pageList>
        +</ncx>
        +
        +
        +

        Go to page mechanism

        +

        A mechanism provides the ability to enter a page number as an input and reposition the user to the matching target page location.

        +
        +
        +
        +

        Resources

        +

        [1] https://www.w3.org/publishing/epub3/epub-packages.html#sec-nav-pagelist

        +

        [2] http://www.daisy.org/z3986/2005/Z3986-2005.html#NCXElem

        +

        [3] https://www.w3.org/TR/dpub-aria-1.0/#doc-pagelist

        +
        +
        +

        Tests

        +
        +

        Procedure

        +
          +
        1. Check that a page-selection mechanism exists in the publication.
        2. +
        3. Check that all the static page break locations in the publication are represented in the selection mechanism.
        4. +
        5. Check that the entries in the page-selection mechanism link to the correct location in the publication.
        6. +
        +
        +
        +

        Expected Results

        +
          +
        • #1, #2 and #3 are true.
        • +
        +
        +
        + + diff --git a/techniques/index.html b/techniques/index.html index c3359cf90e..d07e153192 100644 --- a/techniques/index.html +++ b/techniques/index.html @@ -4,7 +4,7 @@ - Techniques for WCAG 2.1 + Techniques for WCAG 2.2 @@ -13,14 +13,14 @@ -

        Techniques for WCAG 2.1

        +

        Techniques for WCAG 2.2

        Updated

        @@ -42,30 +42,30 @@

        Updated

        Abstract

        -

        This Techniques for WCAG 2.1 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.1 success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.1. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        -

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.1 is the success criteria from the WCAG 2.1 standard—not the techniques. For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.1.

        -

        Techniques for WCAG 2.1 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.0: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.0 and to specific techniques.

        +

        This Techniques for WCAG 2.2 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.2 success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.2. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        +

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.2 is the success criteria from the WCAG 2.2 standard—not the techniques. For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.2.

        +

        Techniques for WCAG 2.2 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.0: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.0 and to specific techniques.

        Status of This Document

        -

        This is the official version of "Understanding WCAG 2.1", and is referenced by Web Content Accessibility Guidelines 2.1. This resource is maintained as needed to update interpretive guidance and reference techniques to meet the guidelines.

        -

        To comment, file an issue in the W3C WCAG 2.1 GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

        +

        This is the official version of "Understanding WCAG 2.2", and is referenced by Web Content Accessibility Guidelines 2.2. This resource is maintained as needed to update interpretive guidance and reference techniques to meet the guidelines.

        +

        To comment, file an issue in the W3C WCAG 2.2 GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

        -

        Introduction to Techniques for WCAG 2.1

        -

        This Techniques for WCAG 2.1 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.1success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.1. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        -

        WCAG 2.1 itself is a stable document that does not change. This Techniques for WCAG 2.1 document is updated periodically to cover more current best practices and changes in technologies and tools.

        -

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.1 is the success criteria from the WCAG 2.1 standard—not the techniques.

        +

        Introduction to Techniques for WCAG 2.2

        +

        This Techniques for WCAG 2.2 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.2success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.2. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        +

        WCAG 2.2 itself is a stable document that does not change. This Techniques for WCAG 2.2 document is updated periodically to cover more current best practices and changes in technologies and tools.

        +

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.2 is the success criteria from the WCAG 2.2 standard—not the techniques.

        -

        W3C cautions against requiring W3C's sufficient techniques. The only thing that should be required is meeting the WCAG 2.1 success criteria. To learn more, see:

        +

        W3C cautions against requiring W3C's sufficient techniques. The only thing that should be required is meeting the WCAG 2.2 success criteria. To learn more, see:

        -

        Techniques for WCAG 2.1 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.1: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.1 and to specific techniques.

        -

        Publication of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG 2.1 success criteria and conformance requirements. Developers need to be aware of the limitations of specific technologies and provide content in a way that is accessible to people with disabilities.

        -

        For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.1.

        +

        Techniques for WCAG 2.2 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.2: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.2 and to specific techniques.

        +

        Publication of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG 2.2 success criteria and conformance requirements. Developers need to be aware of the limitations of specific technologies and provide content in a way that is accessible to people with disabilities.

        +

        For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.2.

        @@ -75,37 +75,37 @@

        Change Log

        A list of new, removed or significantly updated techniques:

        1. : Removed Flash techniques.
        2. -
        3. : Added Failure of Success Criterion 2.5.1 due to providing functionality via a path-based gesture without simple pointer alternative
        4. -
        5. : Added Failure due to inability to deactivate motion actuation
        6. -
        7. : Added Failure of Success Criterion 1.4.12 due to clipped or overlapped content when text spacing is adjusted
        8. -
        9. : Added Failure of Success Criterion 4.1.3 due to providing status messages that cannot be programmatically determined through role or properties
        10. -
        11. : Added Failure of Success Criterion 1.4.10 due to content disappearing and not being available when content has reflowed
        12. -
        13. : Added Providing single point activation for a control slider
        14. -
        15. : Added Providing controls to achieve the same result as path based or multipoint gestures
        16. -
        17. : Added Failure of Success Criterion 1.3.4 due to showing a message asking to reorient device
        18. -
        19. : Added Using a control to allow access to content in different orientations which is otherwise restricted
        20. -
        21. : Added Creating a two-color focus indicator to ensure sufficient contrast
        22. -
        23. : Added Failure of Success Criterion 2.1.4 due to implementing character key shortcuts that cannot be turned off or remapped
        24. -
        25. : Added Making content on focus or hover hoverable, dismissible, and persistent
        26. -
        27. : Added Using native controls to ensure functionality is triggered on the up-event
        28. -
        29. : Added Failure of Success Criterion 2.5.6 due to interactions being limited to touch-only on touchscreen devices
        30. -
        31. : Added Provide conventional controls and an application setting for motion activated input
        32. -
        33. : Added Semantically identifying a font icon with role="img"
        34. -
        35. : Added Failure due to locking the orientation to landscape or portrait view
        36. -
        37. : Removed F52 from SC 3.2.1 (still attached to SC 3.2.5)
        38. -
        39. : Added Provide sufficient contrast at the boundaries between adjoining colors
        40. -
        41. : Added Using the CSS reduce-motion query to prevent motion
        42. -
        43. : Added Ensuring that a contrast ratio of 3:1 is provided for icons
        44. -
        45. : Added Using CSS width, max-width and flexbox to fit labels and inputs
        46. -
        47. : Added F95 of 1.4.13 due to content shown on hover not being hoverable
        48. -
        49. : Added C34 Using media queries to un-fixing sticky headers / footers
        50. -
        51. : Added C36 Allowing for text spacing override
        52. -
        53. : Added C37 Using CSS max-width and height to fit images
        54. -
        55. : Added G207 Ensuring that drag-and-drop actions can be cancelled
        56. -
        57. : Added F95 Failure of Success Criterion 1.4.13 due to content shown on hover not being hoverable
        58. -
        59. : Added F96 Failure of Success Criterion 2.5.3 due to "accessible name" not containing the visible label text
        60. -
        61. : Added C38 Using CSS width, max-width and flexbox to fit labels and inputs
        62. -
        63. : Added G207 Ensuring that a contrast ratio of 3:1 is provided for icons
        64. +
        65. : Added Failure of Success Criterion 2.5.1 due to providing functionality via a path-based gesture without simple pointer alternative
        66. +
        67. : Added Failure due to inability to deactivate motion actuation
        68. +
        69. : Added Failure of Success Criterion 1.4.12 due to clipped or overlapped content when text spacing is adjusted
        70. +
        71. : Added Failure of Success Criterion 4.1.3 due to providing status messages that cannot be programmatically determined through role or properties
        72. +
        73. : Added Failure of Success Criterion 1.4.10 due to content disappearing and not being available when content has reflowed
        74. +
        75. : Added Providing single point activation for a control slider
        76. +
        77. : Added Providing controls to achieve the same result as path based or multipoint gestures
        78. +
        79. : Added Failure of Success Criterion 1.3.4 due to showing a message asking to reorient device
        80. +
        81. : Added Using a control to allow access to content in different orientations which is otherwise restricted
        82. +
        83. : Added Creating a two-color focus indicator to ensure sufficient contrast
        84. +
        85. : Added Failure of Success Criterion 2.1.4 due to implementing character key shortcuts that cannot be turned off or remapped
        86. +
        87. : Added Making content on focus or hover hoverable, dismissible, and persistent
        88. +
        89. : Added Using native controls to ensure functionality is triggered on the up-event
        90. +
        91. : Added Failure of Success Criterion 2.5.6 due to interactions being limited to touch-only on touchscreen devices
        92. +
        93. : Added Provide conventional controls and an application setting for motion activated input
        94. +
        95. : Added Semantically identifying a font icon with role="img"
        96. +
        97. : Added Failure due to locking the orientation to landscape or portrait view
        98. +
        99. : Removed F52 from SC 3.2.1 (still attached to SC 3.2.5)
        100. +
        101. : Added Provide sufficient contrast at the boundaries between adjoining colors
        102. +
        103. : Added Using the CSS reduce-motion query to prevent motion
        104. +
        105. : Added Ensuring that a contrast ratio of 3:1 is provided for icons
        106. +
        107. : Added Using CSS width, max-width and flexbox to fit labels and inputs
        108. +
        109. : Added F95 of 1.4.13 due to content shown on hover not being hoverable
        110. +
        111. : Added C34 Using media queries to un-fixing sticky headers / footers
        112. +
        113. : Added C36 Allowing for text spacing override
        114. +
        115. : Added C37 Using CSS max-width and height to fit images
        116. +
        117. : Added G207 Ensuring that drag-and-drop actions can be cancelled
        118. +
        119. : Added F95 Failure of Success Criterion 1.4.13 due to content shown on hover not being hoverable
        120. +
        121. : Added F96 Failure of Success Criterion 2.5.3 due to "accessible name" not containing the visible label text
        122. +
        123. : Added C38 Using CSS width, max-width and flexbox to fit labels and inputs
        124. +
        125. : Added G207 Ensuring that a contrast ratio of 3:1 is provided for icons

        For a more detailed view of recent changes to the informative documents see the github updates.

        diff --git a/understanding/20/captions-prerecorded.html b/understanding/20/captions-prerecorded.html index 1845c77bef..c97b74c8da 100644 --- a/understanding/20/captions-prerecorded.html +++ b/understanding/20/captions-prerecorded.html @@ -40,7 +40,7 @@

        Intent of Captions (Prerecorded)

        See also - 1.2.1: Captions (Live). + 1.2.4: Captions (Live).

        @@ -68,9 +68,7 @@

        Examples of Captions (Prerecorded)

      4. - A captioned tutorial -

        A video clip shows how to tie a knot. The captions read,

        @@ -133,15 +131,11 @@

        Guides to Captioning

        @@ -155,27 +149,19 @@

        SMIL Resources

        @@ -189,15 +175,11 @@

        Other Captioning Resources

        @@ -211,9 +193,7 @@

        Captioning Tools

        @@ -233,9 +213,7 @@

        Sufficient Techniques for Captions (Prerecorded)

        1. - Providing open (always visible) captions -
        2. @@ -256,33 +234,23 @@

          Sufficient Techniques for Captions (Prerecorded)

          @@ -306,26 +274,15 @@

          Failures for Captions (Prerecorded)

          diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index cbe5bd6148..33799946c2 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -188,7 +188,7 @@

          Notes on formula

          See also - 2.4.3: Focus Visible for techniques for indicating keyboard focus. + 2.4.7: Focus Visible for techniques for indicating keyboard focus.

          @@ -259,7 +259,7 @@

          Resources for Contrast (Enhanced)

        3. - Color Contrast Samples + Adobe Color - Color Contrast Analyzer Tool
        4. diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index bc1a05d824..36740e4c22 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -172,7 +172,7 @@

          Rationale for the Ratios Chosen

          low contrast, and therefore we allow and encourage authors to provide mechanisms to adjust the foreground and background colors of the content. Some of the combinations that could be chosen may have contrast levels that will be lower than those found - in the Success Criteria. This is not a violation of this Success Criteria provided + in the Success Criteria. This is not a violation of this Success Criterion provided there is a mechanism that will return to the default values set out in the Success Criteria. @@ -248,13 +248,13 @@

          Notes on formula

          See also - 2.4.3: Focus Visible for techniques for indicating keyboard focus. + 2.4.7: Focus Visible for techniques for indicating keyboard focus.

          It is sometimes helpful for authors to not specify colors for certain sections of a page in order to help users who need to view content with specific color combinations to view the content in their preferred color scheme. Refer to - 1.4.3: Images of Text for more information. + 1.4.5: Images of Text for more information.

          @@ -325,7 +325,7 @@

          Resources for Contrast (Minimum)

        5. - Color Contrast Samples + Adobe Color - Color Contrast Analyzer Tool
        6. diff --git a/understanding/20/focus-visible.html b/understanding/20/focus-visible.html index 39274a81e8..b027ed01bc 100644 --- a/understanding/20/focus-visible.html +++ b/understanding/20/focus-visible.html @@ -21,7 +21,7 @@

          Intent of Focus Visible

          “Mode of operation” accounts for user-agents which may not always show a focus indicator, or only show the focus indicator when the keyboard is used. User agents may optimise when the focus indicator is shown, such as only showing it when a keyboard is used. Authors are responsible for providing at least one mode of operation where the focus is visible. In most cases there is only one mode of operation so this success criterion applies. The focus indicator must not be time limited, when the keyboard focus is shown it must remain.

          -

          Note that a keyboard focus indicator can take different forms. One common way is a caret within the text field to indicate that the text field has the keyboard focus. Another is a visual change to a button to indicate that that button has the keyboard focus.

          +

          Note that a keyboard focus indicator can take different forms. This criterion does not specify what the form is, but Focus Appearance (Minimum) does define how visible the indicator should be. Passing Focus Appearance (Minimum) would pass this success criterion.

          diff --git a/understanding/20/headings-and-labels.html b/understanding/20/headings-and-labels.html index c0ef5c20c9..6b1578fd7c 100644 --- a/understanding/20/headings-and-labels.html +++ b/understanding/20/headings-and-labels.html @@ -41,7 +41,7 @@

          Intent of Headings and Labels

          and therefore pass Success Criterion 4.1.2, but to still fail this Success Criterion (if the label is not sufficiently clear or descriptive).

          -

          This success criteria does not require the use of labels; however, it does require that if labels are present, they must be sufficiently clear or descriptive. Please see 3.3.2: Labels or Instructions for more information on the use of labels. +

          This success criterion does not require the use of labels; however, it does require that if labels are present, they must be sufficiently clear or descriptive. Please see 3.3.2: Labels or Instructions for more information on the use of labels.

          diff --git a/understanding/20/images-of-text.html b/understanding/20/images-of-text.html index c2d36f145d..b308d3d56d 100644 --- a/understanding/20/images-of-text.html +++ b/understanding/20/images-of-text.html @@ -49,7 +49,7 @@

          Intent of Images of Text

          See also - 1.4.4: Images of Text (No Exception). + 1.4.9: Images of Text (No Exception).

          diff --git a/understanding/20/labels-or-instructions.html b/understanding/20/labels-or-instructions.html index 95fa704ae3..9c93d4d9f1 100644 --- a/understanding/20/labels-or-instructions.html +++ b/understanding/20/labels-or-instructions.html @@ -14,7 +14,10 @@

          Intent of Labels or Instructions

          The intent of this Success Criterion is to have content authors present instructions or labels that identify the controls in a form so that users know what input data - is expected. Instructions or labels may also specify data formats for fields especially + is expected. In the case of radio buttons, checkboxes, comboboxes, or similar controls + that provide users with options, each option must have an appropriate label so that + users know what they are actually selecting. + Instructions or labels may also specify data formats for data entry fields, especially if they are out of the customary formats or if there are specific rules for correct input. Content authors may also choose to make such instructions available to users only when the individual control has focus especially when instructions are long and @@ -41,7 +44,10 @@

          Intent of Labels or Instructions

          and therefore pass Success Criterion 4.1.2, but to still fail this Success Criterion (if the labels or instructions aren't presented to all users, not just those using assistive technologies).

          -

          While this Success Criterion requires that controls and inputs have labels, whether or not +

          This Success Criterion does not apply to links or other controls (such as an expand/collapse widget, or similar + interactive components) that are not associated with data entry. +

          +

          While this Success Criterion requires that controls and inputs for data entry and submission have labels, whether or not these labels are sufficiently clear or descriptive is covered separately by 2.4.6: Headings and Labels.

          diff --git a/understanding/20/low-or-no-background-audio.html b/understanding/20/low-or-no-background-audio.html index 5d1661119a..5f54e60ae0 100644 --- a/understanding/20/low-or-no-background-audio.html +++ b/understanding/20/low-or-no-background-audio.html @@ -48,22 +48,22 @@

          Examples of Low or No Background Audio

          -
          +

          Resources for Low or No Background Audio

          - - + + - +
          - +

          Techniques for Low or No Background Audio

          diff --git a/understanding/20/sensory-characteristics.html b/understanding/20/sensory-characteristics.html index c4ca649181..7e1b610056 100644 --- a/understanding/20/sensory-characteristics.html +++ b/understanding/20/sensory-characteristics.html @@ -12,7 +12,6 @@

          Understanding Sensory Characteristics

          Intent of Sensory Characteristics

          -

          The intent of this Success Criterion is to ensure that all users can access instructions for using the content, even when they cannot perceive shape or size or use information about spatial location or orientation. @@ -22,15 +21,13 @@

          Intent of Sensory Characteristics

          Some users with disabilities are not able to perceive shape or position due to the nature of the assistive technologies they use. This Success Criterion requires that additional information be provided to clarify - anything that is dependent on this kind of information. - + instructions that are dependent on this kind of information.

          Providing information using shape and/or location, however, is an effective method for many users including those with cognitive limitations. This provision should not discourage those types of cues as long as the information is also provided in other ways. -

          In some languages, it is commonly understood that "above" refers to the content previous @@ -38,7 +35,6 @@

          Intent of Sensory Characteristics

          such languages, if the content being referenced is in the appropriate place in the reading order and the references are unambiguous, statements such as "choose one of the links below" or "all of the above" would conform to this Success Criterion. -

          WCAG was designed to apply only to controls that were displayed on a web page. The @@ -48,8 +44,7 @@

          Intent of Sensory Characteristics

          (e.g. the arrow shaped key, the round key on the right side). This success criterion is not intended to prevent the use of tactile cues in instructions.

          - - +

          Benefits of Sensory Characteristics

          @@ -58,9 +53,10 @@

          Benefits of Sensory Characteristics

          • People who are blind and people who have low vision may not be able to understand - information if it is conveyed by shape and/or location. Providing additional information - other than shape and/or location will allow them to understand the information conveyed - by shape and/or alone. + instructions if they rely only on a description of the shape and/or location of content. + Providing additional information in any instructions other than shape and/or location + will allow users to understand the instructions even if they cannot perceive shape + and/or location.
          @@ -78,19 +74,19 @@

          Examples of Sensory Characteristics

          - Example 1: A schedule of competitive events uses color and shape to distinguish the - time of each event + Example 1: Instructions for interpreting a schedule of competitive events references + colored icons in different shapes to indicate the venue for each event

          - A table presents a list of times across the top row and a list of events in the first - vertical column. The cell corresponding to the time of a particular event has a specific - background color and diamond shaped glyph so it can be identified by color and shape. - - + A table presents a list of times across the top row and a list of events in the first + vertical column and instructions are provided under the table: "Events marked with a + blue diamond are played on field A and events marked with a green circle are played + on field B." The instructions rely on color and shape only and result in a failure of + this criterion.

          @@ -100,19 +96,20 @@

          Examples of Sensory Characteristics

          - Example 2: An on-line multi-page survey + Example 2: An online multi-page survey

          - An on-line multi-page survey uses a link implemented as a green arrow icon placed + An online multi-page survey uses a link implemented as a green arrow icon placed in the lower right hand corner of the content to move from one survey page to the next. The arrow is clearly labeled with "Next" and the instructions state, "To move to the next section of the survey, select the green arrow icon labeled 'Next' in the - lower right corner below the last survey question." This example uses both positioning, - color and labeling to help identify the icon. + lower right corner below the last survey question." + The instruction uses positioning and color to help identify the icon; + the instruction does not rely on these sensory characteristics since it also refers to the label, so it passes this criterion.

          @@ -165,11 +162,11 @@

          Failures for Sensory Characteristics

          Failure due to identifying content only by its shape or location - +
        7. - + Failure due to using a non-text mark alone to convey information - +
        8. diff --git a/understanding/20/three-flashes-or-below-threshold.html b/understanding/20/three-flashes-or-below-threshold.html index 20e30c5642..2a18bcb03c 100644 --- a/understanding/20/three-flashes-or-below-threshold.html +++ b/understanding/20/three-flashes-or-below-threshold.html @@ -20,8 +20,8 @@

          Intent of Three Flashes or Below Threshold

          Individuals who have photosensitive seizure disorders can have a seizure triggered by content that flashes at certain frequencies for more than a few flashes. People are even more sensitive to red flashing than to other colors, so a special test is - provided for saturated red flashing. These guidelines are based on guidelines for - the broadcasting industry as adapted for computer screens, where content is viewed + provided for saturated red flashing. These guidelines were originally based on guidelines for + the broadcasting industry as adapted for desktop monitors, where content is viewed from a closer distance (using a larger angle of vision).

          @@ -38,12 +38,15 @@

          Intent of Three Flashes or Below Threshold

          did not allow any flashing (even of a single pixel) within a broad frequency range (3 to 50 Hz). This Success Criterion is based on existing specifications in use in the UK and by others for television broadcast and has been adapted for computer display - viewing. The 1024 x 768 screen is used as the reference screen resolution for the + viewing. In WCAG 2.0, a 1024 x 768 screen was used as the reference screen resolution for the evaluation. The 341 x 256 pixel block represents a 10 degree viewport at a typical viewing distance. (The 10 degree field is taken from the original specifications and represents the central vision portion of the eye, where people are most susceptible to photo stimuli.)

          +

          With the proliferation of devices of varying screen sizes (from small hand-helds to large living room displays), as well as the adoption of CSS pixels as a density-independent unit of measurement, the prior assessment criteria may seem outdated. However, an image of a consistent size uses up relatively the same percentage of a user's visual field on any device. On a large screen, the image takes up less size, but the large screen takes up a larger part of the visual field. On a mobile screen, the image may take up most or all of the screen; however, the mobile screen itself takes up a smaller portion of the user's visual field. So the same dimension of the flashing content, represented in CSS pixels can still provide a consistent means of assessment. Substituting CSS pixels for the original pixel block means that the combined area of flashing becomes 341 x 256 CSS pixels, or a flashing area of 87,296 CSS pixels.

          + +

          The specification cannot account for the actual viewing distance that a person chooses. Users that are closer to their screens than the idealized viewing distance will be affected by flashing areas that normatively pass. The same problem applies to users who rely on zoom or screen magnification. Conversely, users who are further away from the screen than the idealized distance should be able to tolerate flashing areas that are larger than the threshold.

          The combined area of flashes occurring concurrently and contiguously means the total area that is actually flashing at the same time. It is calculated by adding up the @@ -129,13 +132,13 @@

          Resources for Three Flashes or Below Threshold

        9. - Trace Center Photosensitive Epilepsy Analysis Tool (PEAT) + Trace Center Photosensitive Epilepsy Analysis Tool (PEAT)
        10. - Information about Photosensitive Seizure Disorders + Information about Photosensitive Seizure Disorders
        11. diff --git a/understanding/20/three-flashes.html b/understanding/20/three-flashes.html index 7fb27e3c51..ecaa288349 100644 --- a/understanding/20/three-flashes.html +++ b/understanding/20/three-flashes.html @@ -95,13 +95,13 @@

          Resources for Three Flashes

        12. - Trace Center Photosensitive Epilepsy Analysis Tool (PEAT) + Trace Center Photosensitive Epilepsy Analysis Tool (PEAT)
        13. - Information about Photosensitive Seizure Disorders + Information about Photosensitive Seizure Disorders
        14. diff --git a/understanding/20/timing-adjustable.html b/understanding/20/timing-adjustable.html index a3982f45a8..8fa0f8922d 100644 --- a/understanding/20/timing-adjustable.html +++ b/understanding/20/timing-adjustable.html @@ -34,15 +34,11 @@

          Intent of Timing Adjustable

          a user to react to a request for input.

          -

          It also includes content that is advancing or updating at a rate beyond the user's - ability to read and/or understand it. In other words, animated, moving or scrolling - content introduces a time limit on a user's ability to read content. -

          - -

          In some cases, however, it is not possible to change the time limit (for example, - for an auction or other real-time event) and exceptions are therefore provided for - those cases. -

          +

          It also includes content that is advancing or updating at a rate beyond the user's ability to read and/or understand it. In other words, animated, moving or scrolling content introduces a time limit on a users ability to read content.

          + +

          This success criterion is generally not applicable when the content repeats or is synchronized with other content, so long as the information and data is adjustable or otherwise under the control of the end user. Examples of time limits for which this success criterion is not applicable include scrolling text that repeats, captioning, and carousels. These are situations which do include time limits, but the content is still available to the user because it has controls for accessing it, as specified in 2.2.2 Pause, Stop, Hide.

          + +

          In some cases, however, it is not possible to change the time limit (for example, for an auction or other real-time event) and exceptions are therefore provided for those cases.

          @@ -170,7 +166,7 @@

          Examples of Timing Adjustable

          bid. Since the time limit applies to all users who want to bid on a particular item, it would be unfair to extend the time limit for any one particular user. Therefore, a time limit is required for this type of activity and no extension, adjustment, or - deactivation of the time limit is required by this Success Criteria. + deactivation of the time limit is required by this Success Criterion. diff --git a/understanding/20/use-of-color.html b/understanding/20/use-of-color.html index be56a5e070..ec476f0383 100644 --- a/understanding/20/use-of-color.html +++ b/understanding/20/use-of-color.html @@ -13,7 +13,7 @@

          Understanding Use of Color

          Intent of Use of Color

          -

          The intent of this Success Criterion is to ensure that all users can access information +

          The intent of this Success Criterion is to ensure that all sighted users can access information that is conveyed by color differences, that is, by the use of color where each color has a meaning assigned to it. If the information is conveyed through color differences in an image (or other non-text format), the color may not be seen by users with color @@ -24,7 +24,7 @@

          Intent of Use of Color

          Color is an important asset in design of Web content, enhancing its aesthetic appeal, its usability, and its accessibility. However, some users have difficulty perceiving color. People with partial sight often experience limited color vision, and many older - users do not see color well. In addition, people using text-only, limited-color or + users do not see color well. In addition, people using limited-color or monochrome displays and browsers will be unable to access information that is presented only in color.

          @@ -36,14 +36,51 @@

          Intent of Use of Color

          of prompting a response would be: using highlighting on form fields to indicate that a required field had been left blank.

          - +
          -

          This should not in any way discourage the use of color on a page, or even color coding - if it is redundant with other visual indication. +

          This should not in any way discourage the use of color on a page, or even color coding if it is complemented by other visual indication.

          + + +
          + +

          If content is conveyed through the use of colors that differ not only in their hue, + but that also have a significant difference in lightness, then this counts as an additional + visual distinction, as long as the difference in relative luminance between the colors leads + to a contrast ratio of 3:1 or greater. + For example, a light green and a dark red differ both by color (hue) + and by lightness, so they would pass if the contrast ratio is at least 3:1. + Similarly, if content is distinguished by inverting an element's foreground and background colors, + this would pass (again, assuming that the foreground and background colors have a sufficient contrast). +

          +

          However, if content relies on the user's ability to accurately perceive or differentiate a particular color + an additional visual indicator will be required regardless of the contrast ratio between those colors. For example, + knowing whether an outline is green for valid or red for invalid. +

          + +
          + +
          + +

          This criterion does not directly address the needs of users with assistive technologies. + It aims to ensure that sighted users who cannot distinguish between some colors can still + understand content. + How information is conveyed to assistive technology users is covered separately in other + criteria, including (but not limited to) + 1.1.1 Non-text Content, + 1.3.1 Info and Relationships, and + 4.1.2 Name, Role, Value. +

          +

          Conversely, even if information that is conveyed by color differences is appropriately conveyed + to assistive technologies, it does not necessarily pass this criterion, as sighted users who cannot + distinguish between certain color may not necessarily be using any assistive technologies. This + criterion requires a visible alternative to color. +

          + +
          @@ -61,7 +98,7 @@

          Benefits of Use of Color

          in other visual ways. -
        15. People using text-only, limited color, or monochrome displays may be unable to access +
        16. People using limited color monochrome displays may be unable to access color-dependent information.
        17. @@ -69,10 +106,6 @@

          Benefits of Use of Color

          cues. -
        18. People using Braille displays or other tactile interfaces can detect text cues by - touch. -
        19. -
          @@ -92,11 +125,10 @@

          Examples of Use of Color

          A form contains both required and optional fields. Instructions at the top of the - form explain that required fields are labeled with red text and also with an icon - whose text alternative says, "Required." Both the red text and the icon are programmatically - associated with the appropriate form fields so that assistive technology users can - determine the required fields. - + form explain that required fields are labeled with red text and also with an icon. + Users who cannot perceive the difference between the optional field labels and the + red labels for the required fields will still be able to see the icon next to the + red labels.

          @@ -110,32 +142,10 @@

          Examples of Use of Color

          Students view an SVG image of a chemical compound and identify the chemical elements - present based on the colors and numbers used in the diagram. The text alternatives - associated with each element name the color of the element and indicate the element's - position in the diagram. Students who cannot perceive color have the same information - about the compound as their classmates. (This technique also satisfies - Guideline 1.1 Level A.) -

          - - - -
        20. - -

          - - Disabled Form elements. - -

          - -

          - Form elements which are disabled via markup or scripting, are greyed out and made - inactive by the user agent. When in the disabled state these elements do not receive - focus. Assistive technologies can programmatically determine the state of disabled - elements and will provide this information to the user as the elements are encountered - on the page. The change in color and loss of focus provides redundant, visual information - about the state of the control. - - + present based both on the colors used, as well as numbers next to each + element. A legend shows the color and number for each type of element. Sighted users who + cannot perceive all the color differences can still understand the image by relying on + the numbers.

        21. @@ -191,7 +201,7 @@

          Resources for Use of Color

          The Color Tutor application - +
          @@ -276,7 +286,7 @@

          Additional Techniques (Advisory) for Use of Color

        22. - + Using CSS to change the presentation of a user interface component when it receives focus
        23. diff --git a/understanding/21/accessible-authentication.html b/understanding/21/accessible-authentication.html new file mode 100644 index 0000000000..640cfbaff9 --- /dev/null +++ b/understanding/21/accessible-authentication.html @@ -0,0 +1,99 @@ + + + + + WCAG 2.0 Understanding Page + + + +

          Understanding Accessible Authentication

          +
          +

          Intent

          +

          The intent of this success criterion is to ensure that, that users do not encounter a barrier that prevents them from accessing content that they could otherwise use.

          +

          Most user interfaces are designed to help users complete tasks. However, traditionally, web security and privacy technologies intentionally introduce barriers to task completion. They require users to perceive more and to do more to complete tasks.

          +

          Web security and privacy technologies often block people with cognitive and/or physical disabilities who may not be able to:

          +
            +
          • discern text they are required to enter and submit;
          • +
          • recall text or instructions they have seen or heard;
          • +
          • follow multi-step procedures.
          • +
          +

          The scope of the problem is vast because, for examples, people with disabilities:

          +
            +
          • are prevented from purchasing goods and registering for services on the millions of websites that employ web security and privacy technologies;
          • +
          • may circumvent web security and privacy technologies with insecure techniques/methods;
          • +
          • may become so frustrated working through web security and privacy technologies that they relinquish their efforts, and thereby are thwarted from purchasing goods and registering for services;
          • +
          • may be unable to become accustomed to a web security and privacy technology because there are multiple versions of it across websites.
          • +
          • may be afraid to trust a web site, thus causing them to cancel a transaction.
          • +
          +

          Many user authentication methods rely upon trying to differentiate between a human, and software (bots) that try to pose as a human. The most common way of trying to make this distinction is by the setting of tasks that rely upon human abilities, and that are almost impossible for software (bots) to perform. These methods can frequently be quite challenging for people who have a high level of cognitive ability. For people who have  a disability or cognitive disability such as dementia, an authentication task often presents an insurmountable barrier.

          +
          +
          +

          Benefits

          +

          The benefit of this success criterion is it allows people with cognitive and learning disabilities to use many  important sites. Long changing passwords and  other difficult authentication procedures prevent many people from using critical services. For example,  people cannot make doctors appointments by themselves and often put off making a doctor appointment as not to be a burden to other people.. This may be partly responsible for the reduced life expectancy of people with learning and cognitive disabilities.

          +

          With this success criterion, people who are able to use a primary user authentication method will be able to successfully complete a user authentication procedure almost irrespective of the level of their cognitive abilities. Those who have to use an alternative method will be able to successfully complete a user authentication even though they have limited levels of the cognitive abilities specified in the success criterion.

          +
          +
          +

          Examples

          +
            +
          1. As a user who has memory impairments and often forgets passwords, I need to be able to use a site, without remembering or copying passwords and usernames, so that I can use this service.
          2. +
          3. As a user who has impairments, I need to be able to use a site without being required to copy items in the correct sequence.
          4. +
          5. As a user who has weak executive function, I need the login process to be simple, and not multi-step, so that I can use it.
          6. +
          7. As a symbol user, I need a login process I can use.
          8. +
          +
          +
          +

          Resources

          + +
          +
          +

          Techniques

          +
          +

          Sufficient

          +
            +
          • Allowing the user to reset a password by pressing a link sent to them in an SMS or email.sms, which brings the user to a page that displays either the:
              +
            • current username and/or password; OR
            • +
            • suggested new username and/or password; OR
            • +
            • opportunity to create a new username and/or password
            • +
            +
          • +
          • Compiling to https://www.w3.org/TR/webauthn/ and allowing one component method such as biometrics or tokens (Possibly reword this to be more clear)
          • +
          • Automatic user authentication based upon the use of a trusted device (to which the user has already logged in with their own identity);
          • +
          • Security tokens, some of which are hardware devices, can be used to make authentication easier. Security tokens are used instead of, or in addition to, other forms of authentication such as passwords. Security-token hardware devices:
              +
            • include key fobs, rings, or small keypads;
            • +
            • can store and/or generate a digital signature, a PIN, or biometric data;
            • +
            • can transmit such data via a USB connector, RFID, Bluetooth wireless, or NFC.
            • +
            • +
            +
          • +
          • biometrics;
          • +
          • being already logged in to third-party authentication services (e.g., OAuth, Facebook, etc.).
          • +
          • Fast IDentity Online (FIDO), password-free standards for typical and two-factor authentication.
              +
            • FIDO relies upon user authentication based upon a user's device (e.g., phone, tablet, computer).
            • +
            • A user's device registers the user, to a server, via a public key.
            • +
            • Upon a challenge from the server, the user's device responds with a private key.
            • +
            • The device's keys are unlocked by the user biometrically (e.g., fingerprint scanner) or by a button press, not by a password.
            • +
            +
          • +
          +
          +
          + + diff --git a/understanding/21/concurrent-input-mechanisms.html b/understanding/21/concurrent-input-mechanisms.html index 00cc05ef02..b6a168d730 100644 --- a/understanding/21/concurrent-input-mechanisms.html +++ b/understanding/21/concurrent-input-mechanisms.html @@ -47,8 +47,8 @@

          Techniques

          Sufficient

            -
          • @@ Only using high-level, input-agnostic event handlers (focus, blur, click) in Javascript (operating systems/UAs fire these events for all input mechanisms).
          • -
          • @@ Registering event handlers for keyboard/keyboard-like and pointer inputs simultaneously in Javascript (see Example 1 in Pointer Events Level 2)
          • +
          • Only using high-level, input-agnostic event handlers, such as focus, blur, click, in Javascript (Potential future technique).
          • +
          • Registering event handlers for keyboard/keyboard-like and pointer inputs simultaneously in Javascript; see Example 1 in Pointer Events Level 2 (Potential future technique)
          diff --git a/understanding/21/content-on-hover-or-focus.html b/understanding/21/content-on-hover-or-focus.html index 7da9a5d1f5..2254877623 100644 --- a/understanding/21/content-on-hover-or-focus.html +++ b/understanding/21/content-on-hover-or-focus.html @@ -42,7 +42,7 @@

          Dismissable

        24. Provide a mechanism to easily dismiss the additional content, such as by pressing Escape.

        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.

        -

        The success criteria allows for input error messages to persist as there are cases that require attention, explicit confirmation or remedial action.

        +

        The success criterion allows for input error messages to persist as there are cases that require attention, explicit confirmation or remedial action.

        Hoverable

        @@ -117,8 +117,8 @@

        Techniques

        Sufficient

        ( - + + Sufficient + Advisory + Failure + + + , together with + + + + + and + + + + using a more specific technique + + + + when used with + + + + ) @@ -465,7 +463,7 @@ - + From 51d1aa9261c483a06db85d604da33e278f7fe293 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 4 Apr 2022 15:06:18 -0400 Subject: [PATCH 27/73] update from main --- understanding/20/bypass-blocks.html | 2 ++ understanding/20/contrast-enhanced.html | 2 +- understanding/20/contrast-minimum.html | 2 +- understanding/20/multiple-ways.html | 14 +++++++------- understanding/20/visual-presentation.html | 6 +++--- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/understanding/20/bypass-blocks.html b/understanding/20/bypass-blocks.html index a66a484a78..6a41371a66 100644 --- a/understanding/20/bypass-blocks.html +++ b/understanding/20/bypass-blocks.html @@ -253,6 +253,8 @@

        Additional Techniques (Advisory) for Bypass Blocks

        Positioning content based on structural markup
      5. + +
      6. H97
      7. diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index 33799946c2..5519ca99d0 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -67,7 +67,7 @@

        Intent of Contrast (Enhanced)

        resulting image is roughly equivalent to 1.2 and 1.5 em or to 120% or 150% of the default size for body text as rendered by the browser.

        - +

        The 7:1 and 4.5:1 contrast ratios referenced in this Success Criteria are intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criteria ratio the computed values should not be rounded (eg. 4.499:1 would not meet the 4.5:1 threshold).

        The previously-mentioned contrast requirements for text also apply to diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index 36740e4c22..cfad83c798 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -61,7 +61,7 @@

        Intent of Contrast (Minimum)

        to use approximately 19 pt and 24 pt font sizes in order to successfully present images of large-scale text to a user.

        - +

        The 4.5:1 and 3:1 contrast ratios referenced in this Success Criteria are intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criteria ratio the computed values should not be rounded (eg. 4.499:1 would not meet the 4.5:1 threshold).

        The previously-mentioned contrast requirements for text also apply to images of text diff --git a/understanding/20/multiple-ways.html b/understanding/20/multiple-ways.html index 9c13913ace..1b4a349813 100644 --- a/understanding/20/multiple-ways.html +++ b/understanding/20/multiple-ways.html @@ -43,7 +43,7 @@

        Benefits of Multiple Ways

      8. Individuals with cognitive limitations may find it easier to use search features than - to use a hierarchical navigation scheme that is difficult to understand. + to use a hierarchical navigation scheme that may be difficult to understand.
      9. @@ -156,12 +156,6 @@

        Sufficient Techniques for Multiple Ways

        -
      10. - - - -
      11. -
      12. Providing a Site Map @@ -206,6 +200,12 @@

        Additional Techniques (Advisory) for Multiple Ways

      13. +
      14. + + + +
      15. + diff --git a/understanding/20/visual-presentation.html b/understanding/20/visual-presentation.html index 2f59b5bb08..a1771acec3 100644 --- a/understanding/20/visual-presentation.html +++ b/understanding/20/visual-presentation.html @@ -220,11 +220,11 @@

        Resources for Visual Presentation

        problem in using magnifiers. Vision Research, 36, 3723-3733. -
      16. +
      17. 川嶋英嗣・小田浩一(2003).読書におけるスクロール方向とウィンドウ幅の影響 日本心理学会第67回大会, 502.
      18. -
      19. +
      20. 小田浩一・今橋真理子(1995). 文字認知の閾値と読みの閾値. VISION, 7, 165-168.
      21. @@ -234,7 +234,7 @@

        Resources for Visual Presentation

        9(1), 5-13. -
      22. +
      23. 山中今日子・小田浩一 (2007). 漢字の画数と書体のウェイトが視認性に及ぼす 影響. 視覚学会2007年夏季大会ポスター 1p1 Vision, P.167.
      24. From ce3b4e7883f4af7bcc798284aa8b0458232d1812 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Wed, 20 Apr 2022 10:04:55 +0100 Subject: [PATCH 28/73] Verticaly typo --- understanding/21/reflow.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/reflow.html b/understanding/21/reflow.html index fcbac49a74..6d273acfa9 100644 --- a/understanding/21/reflow.html +++ b/understanding/21/reflow.html @@ -46,7 +46,7 @@

        Responsive web design and other ways to meet this Success Criterion

        Avoiding scrolling in horizontally and vertically written languages

        -

        The success Criterion applies to both horizontally and verticaly written languages. Zooming the page for horizontally written languages where pages scroll vertically by default (e.g. English) should not require horizontal scrolling. Zooming the page for vertically written languages which scroll horizontally by default should not require vertical scrolling.

        +

        The success Criterion applies to both horizontally and vertically written languages. Zooming the page for horizontally written languages where pages scroll vertically by default (e.g. English) should not require horizontal scrolling. Zooming the page for vertically written languages which scroll horizontally by default should not require vertical scrolling.

        The relation of Reflow to the Success Criterion 1.4.4 Resize Text

        From 2dcd8204596313f81196d6dab76e9f2a9437ce73 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 25 Apr 2022 11:24:14 -0400 Subject: [PATCH 29/73] update from main --- techniques/css/C15.html | 12 ++++++------ understanding/20/contrast-enhanced.html | 5 ++++- understanding/20/contrast-minimum.html | 5 ++++- understanding/21/non-text-contrast.html | 4 ++++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/techniques/css/C15.html b/techniques/css/C15.html index bed91b140f..26a125b68e 100644 --- a/techniques/css/C15.html +++ b/techniques/css/C15.html @@ -43,8 +43,8 @@

        Highlighting elements that receive focus

        color: #000; } input[type=checkbox]:focus + label, input[type=radio]:focus + label { - background-color: #FF6; - color: #000; + background-color: #1E2EB8; + color: #FFF; } </style> </head> @@ -87,11 +87,11 @@

        Highlighting elements that receive focus

        \ No newline at end of file diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index 5519ca99d0..16f00e14e3 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -67,7 +67,10 @@

        Intent of Contrast (Enhanced)

        resulting image is roughly equivalent to 1.2 and 1.5 em or to 120% or 150% of the default size for body text as rendered by the browser.

        -

        The 7:1 and 4.5:1 contrast ratios referenced in this Success Criteria are intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criteria ratio the computed values should not be rounded (eg. 4.499:1 would not meet the 4.5:1 threshold).

        +

        The 7:1 and 4.5:1 contrast ratios referenced in this Success Criterion are intended to be + treated as threshold values. When comparing the computed contrast ratio to the Success Criterion + ratio, the computed values should not be rounded (e.g. 4.499:1 would not meet the 4.5:1 threshold).

        +

        The previously-mentioned contrast requirements for text also apply to diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index cfad83c798..2f90fc1f00 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -61,7 +61,10 @@

        Intent of Contrast (Minimum)

        to use approximately 19 pt and 24 pt font sizes in order to successfully present images of large-scale text to a user.

        -

        The 4.5:1 and 3:1 contrast ratios referenced in this Success Criteria are intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criteria ratio the computed values should not be rounded (eg. 4.499:1 would not meet the 4.5:1 threshold).

        +

        The 3:1 and 4.5:1 contrast ratios referenced in this Success Criterion are intended to be + treated as threshold values. When comparing the computed contrast ratio to the Success Criterion + ratio, the computed values should not be rounded (e.g. 4.499:1 would not meet the 4.5:1 threshold).

        +

        The previously-mentioned contrast requirements for text also apply to images of text diff --git a/understanding/21/non-text-contrast.html b/understanding/21/non-text-contrast.html index a6d20b10ac..01a82b75e9 100644 --- a/understanding/21/non-text-contrast.html +++ b/understanding/21/non-text-contrast.html @@ -15,6 +15,10 @@

        Intent

        Low contrast controls are more difficult to perceive, and may be completely missed by people with a visual impairment. Similarly, if a graphic is needed to understand the content or functionality of the webpage then it should be perceivable by people with low vision or other impairments without the need for contrast-enhancing assistive technology.

        +
        +

        The 3:1 contrast ratios referenced in this Success Criterion is intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criterion ratio, the computed values should not be rounded (e.g. 2.999:1 would not meet the 3:1 threshold).

        +
        +

        Active User Interface Components

        From 95e70af5593e238c0b2f842915636bed7f9b2186 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 25 Apr 2022 11:28:46 -0400 Subject: [PATCH 30/73] revert techniques index to 2.1 fixes #2318 --- techniques/index.html | 94 +++++++++++++++++++++---------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/techniques/index.html b/techniques/index.html index d07e153192..c3359cf90e 100644 --- a/techniques/index.html +++ b/techniques/index.html @@ -4,7 +4,7 @@ - Techniques for WCAG 2.2 + Techniques for WCAG 2.1 @@ -13,14 +13,14 @@ -

        Techniques for WCAG 2.2

        +

        Techniques for WCAG 2.1

        Updated

        @@ -42,30 +42,30 @@

        Updated

        Abstract

        -

        This Techniques for WCAG 2.2 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.2 success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.2. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        -

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.2 is the success criteria from the WCAG 2.2 standard—not the techniques. For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.2.

        -

        Techniques for WCAG 2.2 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.0: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.0 and to specific techniques.

        +

        This Techniques for WCAG 2.1 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.1 success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.1. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        +

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.1 is the success criteria from the WCAG 2.1 standard—not the techniques. For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.1.

        +

        Techniques for WCAG 2.1 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.0: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.0 and to specific techniques.

        Status of This Document

        -

        This is the official version of "Understanding WCAG 2.2", and is referenced by Web Content Accessibility Guidelines 2.2. This resource is maintained as needed to update interpretive guidance and reference techniques to meet the guidelines.

        -

        To comment, file an issue in the W3C WCAG 2.2 GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

        +

        This is the official version of "Understanding WCAG 2.1", and is referenced by Web Content Accessibility Guidelines 2.1. This resource is maintained as needed to update interpretive guidance and reference techniques to meet the guidelines.

        +

        To comment, file an issue in the W3C WCAG 2.1 GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

        -

        Introduction to Techniques for WCAG 2.2

        -

        This Techniques for WCAG 2.2 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.2success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.2. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        -

        WCAG 2.2 itself is a stable document that does not change. This Techniques for WCAG 2.2 document is updated periodically to cover more current best practices and changes in technologies and tools.

        -

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.2 is the success criteria from the WCAG 2.2 standard—not the techniques.

        +

        Introduction to Techniques for WCAG 2.1

        +

        This Techniques for WCAG 2.1 document provides guidance for web content authors and evaluators on meeting Web Content Accessibility Guidelines (WCAG) 2.1success criteria. It is part of a series of documents published by the W3C Web Accessibility Initiative (WAI) to support WCAG 2.1. For an introduction to WCAG, supporting technical documents, and educational material, see Web Content Accessibility Guidelines (WCAG) Overview.

        +

        WCAG 2.1 itself is a stable document that does not change. This Techniques for WCAG 2.1 document is updated periodically to cover more current best practices and changes in technologies and tools.

        +

        Techniques are informative—that means they are not required. The basis for determining conformance to WCAG 2.1 is the success criteria from the WCAG 2.1 standard—not the techniques.

        -

        W3C cautions against requiring W3C's sufficient techniques. The only thing that should be required is meeting the WCAG 2.2 success criteria. To learn more, see:

        +

        W3C cautions against requiring W3C's sufficient techniques. The only thing that should be required is meeting the WCAG 2.1 success criteria. To learn more, see:

        -

        Techniques for WCAG 2.2 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.2: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.2 and to specific techniques.

        -

        Publication of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG 2.2 success criteria and conformance requirements. Developers need to be aware of the limitations of specific technologies and provide content in a way that is accessible to people with disabilities.

        -

        For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.2.

        +

        Techniques for WCAG 2.1 is not intended to be used as a stand-alone document. Instead, it is expected that content authors will usually use How to Meet WCAG 2.1: A customizable quick reference to read the WCAG success criteria, and follow links from there to specific topics in Understanding WCAG 2.1 and to specific techniques.

        +

        Publication of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG 2.1 success criteria and conformance requirements. Developers need to be aware of the limitations of specific technologies and provide content in a way that is accessible to people with disabilities.

        +

        For important information about techniques, please see the Understanding Techniques for WCAG Success Criteria section of Understanding WCAG 2.1.

        @@ -75,37 +75,37 @@

        Change Log

        A list of new, removed or significantly updated techniques:

        1. : Removed Flash techniques.
        2. -
        3. : Added Failure of Success Criterion 2.5.1 due to providing functionality via a path-based gesture without simple pointer alternative
        4. -
        5. : Added Failure due to inability to deactivate motion actuation
        6. -
        7. : Added Failure of Success Criterion 1.4.12 due to clipped or overlapped content when text spacing is adjusted
        8. -
        9. : Added Failure of Success Criterion 4.1.3 due to providing status messages that cannot be programmatically determined through role or properties
        10. -
        11. : Added Failure of Success Criterion 1.4.10 due to content disappearing and not being available when content has reflowed
        12. -
        13. : Added Providing single point activation for a control slider
        14. -
        15. : Added Providing controls to achieve the same result as path based or multipoint gestures
        16. -
        17. : Added Failure of Success Criterion 1.3.4 due to showing a message asking to reorient device
        18. -
        19. : Added Using a control to allow access to content in different orientations which is otherwise restricted
        20. -
        21. : Added Creating a two-color focus indicator to ensure sufficient contrast
        22. -
        23. : Added Failure of Success Criterion 2.1.4 due to implementing character key shortcuts that cannot be turned off or remapped
        24. -
        25. : Added Making content on focus or hover hoverable, dismissible, and persistent
        26. -
        27. : Added Using native controls to ensure functionality is triggered on the up-event
        28. -
        29. : Added Failure of Success Criterion 2.5.6 due to interactions being limited to touch-only on touchscreen devices
        30. -
        31. : Added Provide conventional controls and an application setting for motion activated input
        32. -
        33. : Added Semantically identifying a font icon with role="img"
        34. -
        35. : Added Failure due to locking the orientation to landscape or portrait view
        36. -
        37. : Removed F52 from SC 3.2.1 (still attached to SC 3.2.5)
        38. -
        39. : Added Provide sufficient contrast at the boundaries between adjoining colors
        40. -
        41. : Added Using the CSS reduce-motion query to prevent motion
        42. -
        43. : Added Ensuring that a contrast ratio of 3:1 is provided for icons
        44. -
        45. : Added Using CSS width, max-width and flexbox to fit labels and inputs
        46. -
        47. : Added F95 of 1.4.13 due to content shown on hover not being hoverable
        48. -
        49. : Added C34 Using media queries to un-fixing sticky headers / footers
        50. -
        51. : Added C36 Allowing for text spacing override
        52. -
        53. : Added C37 Using CSS max-width and height to fit images
        54. -
        55. : Added G207 Ensuring that drag-and-drop actions can be cancelled
        56. -
        57. : Added F95 Failure of Success Criterion 1.4.13 due to content shown on hover not being hoverable
        58. -
        59. : Added F96 Failure of Success Criterion 2.5.3 due to "accessible name" not containing the visible label text
        60. -
        61. : Added C38 Using CSS width, max-width and flexbox to fit labels and inputs
        62. -
        63. : Added G207 Ensuring that a contrast ratio of 3:1 is provided for icons
        64. +
        65. : Added Failure of Success Criterion 2.5.1 due to providing functionality via a path-based gesture without simple pointer alternative
        66. +
        67. : Added Failure due to inability to deactivate motion actuation
        68. +
        69. : Added Failure of Success Criterion 1.4.12 due to clipped or overlapped content when text spacing is adjusted
        70. +
        71. : Added Failure of Success Criterion 4.1.3 due to providing status messages that cannot be programmatically determined through role or properties
        72. +
        73. : Added Failure of Success Criterion 1.4.10 due to content disappearing and not being available when content has reflowed
        74. +
        75. : Added Providing single point activation for a control slider
        76. +
        77. : Added Providing controls to achieve the same result as path based or multipoint gestures
        78. +
        79. : Added Failure of Success Criterion 1.3.4 due to showing a message asking to reorient device
        80. +
        81. : Added Using a control to allow access to content in different orientations which is otherwise restricted
        82. +
        83. : Added Creating a two-color focus indicator to ensure sufficient contrast
        84. +
        85. : Added Failure of Success Criterion 2.1.4 due to implementing character key shortcuts that cannot be turned off or remapped
        86. +
        87. : Added Making content on focus or hover hoverable, dismissible, and persistent
        88. +
        89. : Added Using native controls to ensure functionality is triggered on the up-event
        90. +
        91. : Added Failure of Success Criterion 2.5.6 due to interactions being limited to touch-only on touchscreen devices
        92. +
        93. : Added Provide conventional controls and an application setting for motion activated input
        94. +
        95. : Added Semantically identifying a font icon with role="img"
        96. +
        97. : Added Failure due to locking the orientation to landscape or portrait view
        98. +
        99. : Removed F52 from SC 3.2.1 (still attached to SC 3.2.5)
        100. +
        101. : Added Provide sufficient contrast at the boundaries between adjoining colors
        102. +
        103. : Added Using the CSS reduce-motion query to prevent motion
        104. +
        105. : Added Ensuring that a contrast ratio of 3:1 is provided for icons
        106. +
        107. : Added Using CSS width, max-width and flexbox to fit labels and inputs
        108. +
        109. : Added F95 of 1.4.13 due to content shown on hover not being hoverable
        110. +
        111. : Added C34 Using media queries to un-fixing sticky headers / footers
        112. +
        113. : Added C36 Allowing for text spacing override
        114. +
        115. : Added C37 Using CSS max-width and height to fit images
        116. +
        117. : Added G207 Ensuring that drag-and-drop actions can be cancelled
        118. +
        119. : Added F95 Failure of Success Criterion 1.4.13 due to content shown on hover not being hoverable
        120. +
        121. : Added F96 Failure of Success Criterion 2.5.3 due to "accessible name" not containing the visible label text
        122. +
        123. : Added C38 Using CSS width, max-width and flexbox to fit labels and inputs
        124. +
        125. : Added G207 Ensuring that a contrast ratio of 3:1 is provided for icons

        For a more detailed view of recent changes to the informative documents see the github updates.

        From cd5c98d33cb611f2c1c987d14b91a64237fbcf98 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Wed, 11 May 2022 11:14:58 -0400 Subject: [PATCH 31/73] update from main --- techniques/html/H99.html | 10 ++-- understanding/20/audio-only-live.html | 8 +--- understanding/20/captions-prerecorded.html | 46 ++++--------------- understanding/20/consistent-navigation.html | 4 +- understanding/20/contrast-enhanced.html | 30 +++--------- understanding/20/contrast-minimum.html | 26 ++++------- understanding/20/navigable.html | 4 +- understanding/20/page-titled.html | 8 ++-- understanding/20/reading-level.html | 39 ++++------------ .../20/three-flashes-or-below-threshold.html | 12 ++--- understanding/20/three-flashes.html | 10 +--- understanding/20/use-of-color.html | 6 +-- 12 files changed, 56 insertions(+), 147 deletions(-) diff --git a/techniques/html/H99.html b/techniques/html/H99.html index 3f57b7faa3..204d71e320 100644 --- a/techniques/html/H99.html +++ b/techniques/html/H99.html @@ -26,7 +26,7 @@

        Description

        The order of the page break locations in a digital publication is not sequential in all cases, and not all page breaks may be represented. Publishers often rearrange and remove content from the paginated source content when creating a digital version.

        -

        Page lists are a central feature of many digital publishing formats. EPUB 3 defines the page list in its navigation document,[1] while EPUB 2 and DAISY 3 use the pageList element in the NCX.[2] The DPUB-ARIA module also includes a doc-pagelist role for identifying the navigation element containing the page list.[3]

        +

        Page lists are a central feature of many digital publishing formats. EPUB 3 defines the page list in its navigation document while EPUB 2 and DAISY 3 use the pageList element in the NCX. The DPUB-ARIA module also includes a doc-pagelist role for identifying the navigation element containing the page list.

        Other publications provide a means of page navigation through a 'go to' mechanism.

        @@ -87,9 +87,11 @@

        Go to page mechanism

        Resources

        -

        [1] https://www.w3.org/publishing/epub3/epub-packages.html#sec-nav-pagelist

        -

        [2] http://www.daisy.org/z3986/2005/Z3986-2005.html#NCXElem

        -

        [3] https://www.w3.org/TR/dpub-aria-1.0/#doc-pagelist

        +

        Tests

        diff --git a/understanding/20/audio-only-live.html b/understanding/20/audio-only-live.html index 6ebcb2e307..dc5efbd701 100644 --- a/understanding/20/audio-only-live.html +++ b/understanding/20/audio-only-live.html @@ -80,13 +80,7 @@

        Resources for Audio-only (Live)

      25. - Captioning and Subtitling International - -
      26. - -
      27. - - WebAIM Real time captioning resource + WebAIM Real time captioning resource
      28. diff --git a/understanding/20/captions-prerecorded.html b/understanding/20/captions-prerecorded.html index c97b74c8da..027f1a8fce 100644 --- a/understanding/20/captions-prerecorded.html +++ b/understanding/20/captions-prerecorded.html @@ -131,11 +131,15 @@

        Guides to Captioning

        @@ -149,21 +153,13 @@

        SMIL Resources

        @@ -175,25 +171,11 @@

        Other Captioning Resources

        - - - -
        - -

        Captioning Tools

        - - @@ -242,15 +224,7 @@

        Sufficient Techniques for Captions (Prerecorded)

      29. - -
      30. - -
      31. - -
      32. - -
      33. - + Using the track element to provide captions
      34. diff --git a/understanding/20/consistent-navigation.html b/understanding/20/consistent-navigation.html index 7ac2e7539e..4693bb9413 100644 --- a/understanding/20/consistent-navigation.html +++ b/understanding/20/consistent-navigation.html @@ -94,7 +94,7 @@

        Examples of Consistent Navigation

        A navigation menu includes a list of seven items with links to the main sections of a site. - When a user selects one of these items, a list of subnavigation items is inserted + When a user selects one of these items, a list of sub-navigation items is inserted into the top-level navigation menu.

        @@ -148,7 +148,7 @@

        Resources for Consistent Navigation

      35. - Understanding disability issues when designing Web sites. + IBM: User experience design - Navigation.
      36. diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index 16f00e14e3..141b501edd 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -232,31 +232,25 @@

        Resources for Contrast (Enhanced)

      37. - Contrast Analyser – Application + Colour Contrast Analyser application
      38. - Contrast Ratio Analyser - online service + Luminosity Colour Contrast Ratio Analyser
      39. - Colour Contrast Analyser - Firefox Extension + Colour Contrast Check
      40. - Colour Contrast Check - -
      41. - -
      42. - - Contrast Ratio Calculator + Contrast Ratio Calculator
      43. @@ -280,25 +274,13 @@

        Resources for Contrast (Enhanced)

      44. - 6 Surprising Bad Practices That Hurt Dyslexic Users - -
      45. - -
      46. - - Design for Dyslexics - -
      47. - -
      48. - - Typefaces for Dyslexia + Reading with Dyslexia - Fonts that can help alleviate visual stress.
      49. - Web Design for Dyslexia + Good Fonts for Dyslexia - An Experimental Study
      50. diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index 2f90fc1f00..1c53e26716 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -298,31 +298,25 @@

        Resources for Contrast (Minimum)

      51. - Contrast Analyser – Application + Colour Contrast Analyser application
      52. - Contrast Ratio Analyser - online service + Luminosity Colour Contrast Ratio Analyser
      53. - Colour Contrast Analyser - Firefox Extension + Colour Contrast Check
      54. - Colour Contrast Check - -
      55. - -
      56. - - Contrast Ratio Calculator + Contrast Ratio Calculator
      57. @@ -346,26 +340,24 @@

        Resources for Contrast (Minimum)

      58. - Tool to convert images based on color loss so that contrast is restored as luminance - contrast when there was only color contrast (that was lost due to color deficiency) - - + Tool to convert images based on color loss so that contrast is restored as luminance contrast when there was only color contrast (that was lost due to color deficiency) +
      59. - List of color contrast tools + List of color contrast tools
      60. - The American Printing House for the Blind Guidelines for Large Printing + The American Printing House for the Blind Guidelines for Large Printing
      61. - National Library Service for the Blind and Physically Handicapped (NLS), The Library of Congress Guidelines for Large Print + National Library Service for the Blind and Physically Handicapped (NLS), The Library of Congress reference guide on large print materials
      62. diff --git a/understanding/20/navigable.html b/understanding/20/navigable.html index 4f62d10488..f365581484 100644 --- a/understanding/20/navigable.html +++ b/understanding/20/navigable.html @@ -28,9 +28,7 @@

        Intent of Navigable

        -

        As described in The - Motive Web Design Glossary, navigation has two main functions: -

        +

        Navigation has two main functions:

        diff --git a/understanding/20/three-flashes.html b/understanding/20/three-flashes.html index ecaa288349..6ac39c87ba 100644 --- a/understanding/20/three-flashes.html +++ b/understanding/20/three-flashes.html @@ -89,7 +89,7 @@

        Resources for Three Flashes

      63. - Harding FPA Web Site + Harding FPA Web Site
      64. @@ -113,13 +113,7 @@

        Resources for Three Flashes

      65. - Epilepsy Foundation - -
      66. - -
      67. - - ITC Guidance Note for Licensees on Flashing Images and Regular Patterns in Television + Epilepsy Foundation - Photosensitivity and Seizures
      68. diff --git a/understanding/20/use-of-color.html b/understanding/20/use-of-color.html index ec476f0383..7a8bf82a65 100644 --- a/understanding/20/use-of-color.html +++ b/understanding/20/use-of-color.html @@ -162,7 +162,7 @@

        Resources for Use of Color

      69. - Vischeck + Vischeck
      70. @@ -180,7 +180,7 @@

        Resources for Use of Color

      71. - Microsoft: Can Color-Blind Users See Your Site? + Microsoft: Verify that a page is usable by people with color blindness
      72. @@ -192,7 +192,7 @@

        Resources for Use of Color

      73. - How to make figures and presentations that are friendly to Colorblind people + How to make figures and presentations that are friendly to Colorblind people
      74. From 4030eca84c5294849086f17f91b18a57cec54588 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 6 Jun 2022 15:21:39 -0400 Subject: [PATCH 32/73] cumulative update from main --- guidelines/terms/20/large-scale.html | 2 +- techniques/aria/ARIA1.html | 2 +- techniques/aria/ARIA10.html | 2 +- techniques/aria/ARIA11.html | 2 +- techniques/aria/ARIA12.html | 4 +- techniques/aria/ARIA13.html | 2 +- techniques/aria/ARIA14.html | 2 +- techniques/aria/ARIA15.html | 2 +- techniques/aria/ARIA16.html | 2 +- techniques/aria/ARIA18.html | 2 +- techniques/aria/ARIA19.html | 4 +- techniques/aria/ARIA2.html | 2 +- techniques/aria/ARIA4.html | 13 +- techniques/aria/ARIA5.html | 2 +- techniques/aria/ARIA6.html | 2 +- techniques/aria/ARIA7.html | 32 +-- techniques/aria/ARIA9.html | 2 +- techniques/client-side-script/SCR14.html | 4 +- techniques/client-side-script/SCR20.html | 164 ++++++------- techniques/css/C22.html | 14 +- techniques/css/C39.html | 2 +- techniques/css/C41.html | 4 +- techniques/css/C9.html | 12 +- techniques/failures/F10.html | 6 +- techniques/failures/F107.html | 6 +- techniques/failures/F15.html | 2 +- techniques/failures/F59.html | 2 +- techniques/failures/F63.html | 2 +- techniques/failures/F8.html | 8 +- techniques/failures/F87.html | 18 +- techniques/general/G142.html | 2 +- techniques/general/G149.html | 2 +- techniques/general/G18.html | 4 +- techniques/general/G190.html | 4 +- techniques/general/G219.html | 2 +- techniques/html/H30.html | 218 +++++++++--------- techniques/html/H45.html | 9 +- techniques/html/H98.html | 2 +- techniques/server-side-script/SVR3.html | 4 +- understanding/20/audio-control.html | 12 - ...tion-or-media-alternative-prerecorded.html | 28 --- .../20/audio-description-prerecorded.html | 10 - ...audio-only-and-video-only-prerecorded.html | 12 - understanding/20/audio-only-live.html | 2 +- understanding/20/bypass-blocks.html | 12 - understanding/20/contrast-enhanced.html | 12 - understanding/20/contrast-minimum.html | 12 - understanding/20/error-identification.html | 12 - ...error-prevention-legal-financial-data.html | 6 - understanding/20/error-suggestion.html | 6 - understanding/20/focus-order.html | 6 - understanding/20/focus-visible.html | 14 +- .../20/images-of-text-no-exception.html | 6 - understanding/20/images-of-text.html | 8 +- understanding/20/info-and-relationships.html | 12 - understanding/20/keyboard.html | 18 -- understanding/20/labels-or-instructions.html | 20 +- understanding/20/language-of-parts.html | 124 +++------- understanding/20/link-purpose-in-context.html | 6 - understanding/20/link-purpose-link-only.html | 6 - understanding/20/meaningful-sequence.html | 6 - .../20/media-alternative-prerecorded.html | 6 - understanding/20/name-role-value.html | 36 --- understanding/20/non-text-content.html | 58 ----- understanding/20/on-focus.html | 2 +- understanding/20/on-input.html | 6 - understanding/20/parsing.html | 6 - understanding/20/pause-stop-hide.html | 18 -- understanding/20/resize-text.html | 14 +- understanding/20/timing-adjustable.html | 6 - .../21/animation-from-interactions.html | 2 +- .../21/content-on-hover-or-focus.html | 2 +- understanding/21/identify-input-purpose.html | 2 +- understanding/21/identify-purpose.html | 2 +- understanding/21/non-text-contrast.html | 4 +- understanding/21/pointer-gestures.html | 2 +- understanding/21/target-size-enhanced.html | 11 +- 77 files changed, 319 insertions(+), 778 deletions(-) diff --git a/guidelines/terms/20/large-scale.html b/guidelines/terms/20/large-scale.html index b8fb9ae498..d14580beb6 100644 --- a/guidelines/terms/20/large-scale.html +++ b/guidelines/terms/20/large-scale.html @@ -16,7 +16,7 @@

        The actual size of the character that a user sees is dependent both on the author-defined - size and the user's display or user-agent settings. For many mainstream body text + size and the user's display or user agent settings. For many mainstream body text fonts, 14 and 18 point is roughly equivalent to 1.2 and 1.5 em or to 120% or 150% of the default size for body text (assuming that the body font is 100%), but authors would need to check this for the particular fonts in use. When fonts are defined in diff --git a/techniques/aria/ARIA1.html b/techniques/aria/ARIA1.html index 0efce9dc7c..fc2403c9cb 100644 --- a/techniques/aria/ARIA1.html +++ b/techniques/aria/ARIA1.html @@ -228,7 +228,7 @@

        HTML

        WAI-ARIA Overview
      75. - WAI-ARIA Authoring Practices 1.1 + WAI-ARIA Authoring Practices Guide
      76. HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation diff --git a/techniques/aria/ARIA10.html b/techniques/aria/ARIA10.html index 583121c648..d4f4163282 100644 --- a/techniques/aria/ARIA10.html +++ b/techniques/aria/ARIA10.html @@ -40,7 +40,7 @@

        Providing a short description for a complex graphic

        • - WAI-ARIA Authoring Practices 1.1 + WAI-ARIA Authoring Practices Guide
        • HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation diff --git a/techniques/aria/ARIA11.html b/techniques/aria/ARIA11.html index 83cfe52789..49014902fb 100644 --- a/techniques/aria/ARIA11.html +++ b/techniques/aria/ARIA11.html @@ -101,7 +101,7 @@

          Search form

          diff --git a/techniques/aria/ARIA13.html b/techniques/aria/ARIA13.html index 7ac55e9a07..b7e5973726 100644 --- a/techniques/aria/ARIA13.html +++ b/techniques/aria/ARIA13.html @@ -63,7 +63,7 @@

          Identification for Application landmarks

          • - WAI-ARIA Authoring Practices 1.1 + WAI-ARIA Authoring Practices Guide
          • HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation diff --git a/techniques/aria/ARIA14.html b/techniques/aria/ARIA14.html index 9f195b9f4d..c49a768e75 100644 --- a/techniques/aria/ARIA14.html +++ b/techniques/aria/ARIA14.html @@ -53,7 +53,7 @@

            A phone number with multiple fields

            • - WAI-ARIA Authoring Practices 1.1 + WAI-ARIA Authoring Practices Guide
            • HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation diff --git a/techniques/aria/ARIA15.html b/techniques/aria/ARIA15.html index 4afc38cc0f..aea3c297f7 100644 --- a/techniques/aria/ARIA15.html +++ b/techniques/aria/ARIA15.html @@ -43,7 +43,7 @@

              Describing an image

              diff --git a/techniques/aria/ARIA7.html b/techniques/aria/ARIA7.html index 494273413e..7fb2159a58 100644 --- a/techniques/aria/ARIA7.html +++ b/techniques/aria/ARIA7.html @@ -1,30 +1,30 @@ -Using aria-labelledby for link purpose

              Using aria-labelledby for link purpose

              ID: ARIA7

              Technology: aria

              Type: Technique

              When to Use

              +Using aria-labelledby for link purpose

              Using aria-labelledby for link purpose

              ID: ARIA7

              Technology: aria

              Type: Technique

              When to Use

              Technologies that support Accessible Rich Internet Applications (WAI-ARIA).

              Description

              -

              With the aria-labelledby attribute, authors can use a visible text element on the page as a label for a focusable element (a form control or a link). For example, a "read more..." link could be associated with the text of the heading of the preceding section to make the purpose of the link unambiguous (see example 1).

              -

              When associating text to a focusable element with the help of aria-labelledby, the target text element is given an ID which is referenced in the value of the aria-labelledby attribute of the focusable element.

              -

              It is also possible to use several text elements on the page as a label for a focusable element. Each of the text elements used must be given a unique ID which is referenced as a string of IDs (IDREF) in the value of the aria-labelledby attribute. The label text should then be concatenated following the order of IDs in the value of the aria-labelledby attribute.

              -

              When applied on links, aria-labelledby can be used to identify the purpose of a link that may be readily apparent for sighted users, but less obvious for screen reader users.

              -

              The specified behavior of aria-labelledby is that the associated label text is announced instead of the link text (not in addition to the link text). When the link text itself should be included in the label text, the ID of the link should be referenced as well in the string of IDs forming the value of the aria-labelledby attribute.

              -

              For more information on the naming hierarchy please consult the Accessible Name and Description Computation and the accessible name and description calculation for links in the HTML to Platform Accessibility APIs Implementation Guide.

              +

              With the aria-labelledby attribute, authors can use a visible text element on the page as a label for a focusable element (a form control or a link). For example, a "read more..." link could be associated with the text of the heading of the preceding section to make the purpose of the link unambiguous (see example 1).

              +

              When associating text to a focusable element with the help of aria-labelledby, the target text element is given an ID which is referenced in the value of the aria-labelledby attribute of the focusable element.

              +

              It is also possible to use several text elements on the page as a label for a focusable element. Each of the text elements used must be given a unique ID which is referenced as a string of IDs (IDREF) in the value of the aria-labelledby attribute. The label text should then be concatenated following the order of IDs in the value of the aria-labelledby attribute.

              +

              When applied on links, aria-labelledby can be used to identify the purpose of a link that may be readily apparent for sighted users, but less obvious for screen reader users.

              +

              The specified behavior of aria-labelledby is that the associated label text is announced instead of the link text (not in addition to the link text). When the link text itself should be included in the label text, the ID of the link should be referenced as well in the string of IDs forming the value of the aria-labelledby attribute.

              +

              For more information on the naming hierarchy please consult the Accessible Name and Description Computation.

              Examples

              Providing additional information for links

              -

              This example will mean that the link text as shown on screen is then used as the start of the accessible name for the link. Popular screen readers like JAWS and NVDA will announce this as: +

              This example will mean that the link text as shown on screen is then used as the start of the accessible name for the link. Screen readers will announce this as: "Read more ...Storms hit east coast" and will display that same text in the links list which is very useful for screen reader users who may browse by links.

              <h2 id="headline">Storms hit east coast</h2>
               
              -<p>Torrential rain and gale force winds have struck the east coast, causing flooding in many coastal towns.
              +<p>Torrential rain and gale force winds have struck the east coast, 
              +   causing flooding in many coastal towns.
               <a id="p123" href="news.html" aria-labelledby="p123 headline">Read more...</a></p>

              Concatenating link text from multiple sources

              -

              There may be cases where an author will placed a tag around a section of code that will be referenced.

              -

              Note: The use of tabindex="-1" on the span element is not meant to support focusing by scripts - here, it merely serves to ensure that some browsers (IE9, IE10) will include the span element in the accessibility tree, thus making it available for reference by aria-labelledby. For more details see Accessible HTML Elements.

              -
              <p>Download <span id="report-title" tabindex="-1">2012 Sales Report</span>:
              +            

              There may be cases where an author will place a tag around a section of code that will be referenced.

              +
              <p>Download <span id="report-title">2012 Sales Report</span>:
               <a aria-labelledby="report-title pdf" href="#" id="pdf">PDF</a> |
               <a aria-labelledby="report-title doc" href="#" id="doc">Word</a> |
               <a aria-labelledby="report-title ppt" href="#" id="ppt">Powerpoint</a></p>
              @@ -32,10 +32,10 @@

              Concatenating link text from multiple sources

              Tests

              Procedure

              -

              For each link that has an aria-labelledby attribute:

              +

              For each link that has an aria-labelledby attribute:

                -
              1. Check that each ID in the value of the aria-labelledby attribute matches an ID of a text element used as part of the link purpose.
              2. -
              3. Check that the combined value of the text referenced by the one or more ID's in the aria-labelledby attribute properly describes the purpose of the link element.
              4. +
              5. Check that each ID in the value of the aria-labelledby attribute matches an ID of a text element used as part of the link purpose.
              6. +
              7. Check that the combined value of the text referenced by the one or more ID's in the aria-labelledby attribute properly describes the purpose of the link element.

              Expected Results

              @@ -51,4 +51,4 @@

              Concatenating link text from multiple sources

            - \ No newline at end of file + diff --git a/techniques/aria/ARIA9.html b/techniques/aria/ARIA9.html index f90b8c40ca..1182ff1b66 100644 --- a/techniques/aria/ARIA9.html +++ b/techniques/aria/ARIA9.html @@ -170,7 +170,7 @@

            A conference workshop booking table

            HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation
          • - WAI-ARIA Authoring Practices 1.1 + WAI-ARIA Authoring Practices Guide
          • Using WAI-ARIA in HTML: Section 2.7 aria-labelledby and aria-describedby
          • diff --git a/techniques/client-side-script/SCR14.html b/techniques/client-side-script/SCR14.html index ff6c8def6a..be2fb9489e 100644 --- a/techniques/client-side-script/SCR14.html +++ b/techniques/client-side-script/SCR14.html @@ -31,7 +31,7 @@ // quotes variable would be initialized with famous quotations var quotes = new Array("quote 1", "quote 2", "quote 3", "quote 4", "quote 5"); function showQuotes() { - if (++gCounter &gt;= quotes.length) { + if (++gCounter >= quotes.length) { gCounter = 0; } doAlert(quotes[gCounter]); @@ -70,4 +70,4 @@
          • For a Web page that supports non-emergency interruptions using a JavaScript alert, checks 1, 2, and 3 above are true.
          - \ No newline at end of file + diff --git a/techniques/client-side-script/SCR20.html b/techniques/client-side-script/SCR20.html index 58fbeca570..297a273f6a 100644 --- a/techniques/client-side-script/SCR20.html +++ b/techniques/client-side-script/SCR20.html @@ -1,15 +1,27 @@ -Using both keyboard and other device-specific functions

          Using both keyboard and other device-specific functions

          ID: SCR20

          Technology: client-side-script

          Type: Technique

          When to Use

          + + + + Using both keyboard and other device-specific functions + + + +

          Using both keyboard and other device-specific functions

          +
          +

          ID: SCR20

          +

          Technology: client-side-script

          +

          Type: Technique

          +
          +
          +

          When to Use

          Applies to all content that uses Script to implement functionality.

          -

          Description

          -

          - The objective of this technique is to illustrate the use of both keyboard-specific and mouse-specific events with code that has a scripting function associated with an event. Using both keyboard-specific and mouse-specific events together ensures that content can be operated by a wide range of devices. For example, a script may perform the same action when a keypress is detected that is performed when a mouse button is clicked. This technique goes beyond the Success Criterion requirement for keyboard access by including not only keyboard access but access using other devices as well. -

          -

          - In JavaScript, commonly used event handlers include, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onload, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onreset, onselect, onsubmit, onunload. Some mouse-specific functions have a logical corresponding keyboard-specific function (such as 'onmouseover' and 'onfocus'). A keyboard event handler should be provided that executes the same function as the mouse event handler. -

          -

          - The following table suggests keyboard event handlers to pair mouse event handlers. -

          +
          +
          +

          Description

          +

          The objective of this technique is to illustrate the use of both keyboard-specific and mouse-specific events with code that has a scripting function associated with an event. Using both keyboard-specific and mouse-specific events together ensures that content can be operated by a wide range of devices. For example, a script may perform the same action when a keypress is detected that is performed when a mouse button is clicked. This technique goes beyond the Success Criterion requirement for keyboard access by including not only keyboard access but access using other devices as well.

          + +

          In JavaScript, commonly used event handlers include, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onload, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onreset, onselect, onsubmit, onunload. Some mouse-specific functions have a logical corresponding keyboard-specific function (such as 'onmouseover' and 'onfocus'). A keyboard event handler should be provided that executes the same function as the mouse event handler.

          + +

          The following table suggests keyboard event handlers to pair mouse event handlers.

          @@ -19,110 +31,80 @@ - - + + - - + + - - + + - - + + - - + +
          Device Handler Correspondences
          ...with
          - mousedown - - keydown - mousedownkeydown
          - mouseup - - keyup - mouseupkeyup
          - click - - [1] - - keypress - - [2] - click [1]keypress [2]
          - mouseover - - focus - mouseoverfocus
          - mouseout - - blur - mouseoutblur
          -

          - 1 Although click is in principle a mouse event handler, most HTML and XHTML user agents also process this event when a native HTML control (e.g. a button or a link) is activated, regardless of whether it was activated with the mouse or the keyboard. In practice, therefore, it is not necessary to duplicate this event when adding handlers to natively focusable HTML elements. However, it is necessary when adding handlers to other events, such as in Example 2 below.

          -

          - 2 Since the keypress event handler reacts to any key, the event handler function should check first to ensure the Enter key was pressed before proceeding to handle the event. Otherwise, the event handler will run each time the user presses any key, even the tab key to leave the control, and this is usually not desirable. -

          -

          - Some mouse-specific functions (such as dblclick and mousemove) do not have a corresponding keyboard-specific function. This means that some functions may need to be implemented differently for each device (for example, including a series of buttons to execute, via keyboard, the equivalent mouse-specific functions implemented).

          -

          Examples

          + +

          1 Although click is in principle a mouse event handler, most HTML and XHTML user agents also process this event when a native HTML control (e.g. a button or a link) is activated, regardless of whether it was activated with the mouse or the keyboard. In practice, therefore, it is not necessary to duplicate this event when adding handlers to natively focusable HTML elements. However, it is necessary when adding handlers to other events, such as in Example 2 below.

          +

          2 Since the keypress event handler reacts to any key, the event handler function should check first to ensure the Enter key was pressed before proceeding to handle the event. Otherwise, the event handler will run each time the user presses any key, even the tab key to leave the control, and this is usually not desirable.

          +

          Some mouse-specific functions (such as dblclick and mousemove) do not have a corresponding keyboard-specific function. This means that some functions may need to be implemented differently for each device (for example, including a series of buttons to execute, via keyboard, the equivalent mouse-specific functions implemented).

          +
          +
          +

          Examples

          - -

          In this example of an image link, the image is changed when the user positions the pointer over the image. To provide keyboard users with a similar experience, the image is also changed when the user tabs to it. -

          +

          In this example of an image link, the image is changed when the user positions the pointer over the image. To provide keyboard users with a similar experience, the image is also changed when the user tabs to it.

           <a href="menu.php" onmouseover="swapImageOn('menu')" onfocus="swapImageOn('menu')" 
           onmouseout="swapImageOff('menu')" onblur="swapImageOff('menu')"> 
          -<img id="menu" src="menu_off.gif" alt="Menu" /> 
          +  <img id="menu" src="menu_off.gif" alt="Menu" /> 
           </a>
          - -

          - This example shows a custom image control for which both the mouse and the keyboard can be used to activate the function. The mouse event onclick is duplicated by an appropriate keyboard event onkeypress. The tabindex attribute ensures that the keyboard will have a tab stop on the image. Note that in this example, the nextPage() function should check that the keyboard key pressed was Enter, otherwise it will respond to all keyboard actions while the image has focus, which is not the desired behavior.

          +

          This example shows a custom link control where both the mouse and the keyboard can be used to activate the function. The mouse onclick event is duplicated by an appropriate keyboard onkeypress event. The tabindex attribute ensures that the keyboard will have a tab stop on the span element. Note that in this example, the nextPage() function should check that the key pressed was Enter, otherwise it will respond to all keyboard actions while the span has focus, which is not the desired behavior.

          -<img onclick="nextPage();" onkeypress="nextPage();" tabindex="0" src="arrow.gif" 
          -alt="Go to next page"> 
          - -
          -

          This example uses tabindex on an img element. Even though this is currently invalid, it is provided as a transitional technique to make this function work. Custom controls like this should also use WAI-ARIA to expose the role and state of the control.

          -
          - -
          -

          Tests

          -

          Procedure

          +<span onclick="nextPage();" onkeypress="nextPage();" role="link" tabindex="0"> + <img alt="Go to next page" src="arrow.gif"> +</span>
    + +
    +

    Tests

    +
    +

    Procedure

      -
    1. - Find all interactive functionality -
    2. -
    3. - Check that all interactive functionality can be accessed using the keyboard alone -
    4. +
    5. Find all interactive functionality
    6. +
    7. Check that all interactive functionality can be accessed using the keyboard alone
    -

    Expected Results

    +
    +

    Expected Results

      -
    • - #2 is true -
    • +
    • #2 is true
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + diff --git a/techniques/css/C22.html b/techniques/css/C22.html index ca413e4a46..480ffc77a6 100644 --- a/techniques/css/C22.html +++ b/techniques/css/C22.html @@ -22,9 +22,9 @@
  • The text-transform property is used to control the case of letters in text.
  • The letter-spacing property is used to control the spacing of letters in text.
  • The background-image property can be used to display text on a non-text background.
  • -
  • The first-line pseudo class can be used to modify the presentation of the first line in a block of text.
  • -
  • The :first-letter pseudo class can be used to modify the presentation of the first letter in a block of text.
  • -
  • The :before and :after pseudo classes can be used to insert decorative non-text content before or after blocks of text.
  • +
  • The :first-line pseudo-element can be used to modify the presentation of the first line in a block of text.
  • +
  • The ::first-letter pseudo-element can be used to modify the presentation of the first letter in a block of text.
  • +
  • The ::before and ::after pseudo-elements can be used to insert decorative non-text content before or after blocks of text.
  • Examples

    @@ -249,7 +249,7 @@

    Using CSS background-image to layer text and images

    Using CSS first-line to control the presentation of the first line of text

    -

    The CSS :first-line pseudo class is used to display the first line of text in a larger, red font.

    +

    The CSS ::first-line pseudo-element is used to display the first line of text in a larger, red font.

    The XHTML component:

    @@ -260,13 +260,13 @@ 

    Using CSS first-line to control the presentation of the first line of textThe CSS component:

    -.startline:first-line { font-size:2em; color:#990000; }
    +.startline::first-line { font-size:2em; color:#990000; }
     

    Using CSS first-letter to control the presentation of the first letter of text

    -

    The CSS :first-letter pseudo class is used to display the first letter in a larger font size, red and vertically aligned in the middle.

    +

    The CSS ::first-letter pseudo-element is used to display the first letter in a larger font size, red and vertically aligned in the middle.

    The XHTML component:

    @@ -276,7 +276,7 @@ 

    Using CSS first-letter to control the presentation of the first letter of t

    The CSS component:

    -.startletter:first-letter { font-size:2em; color:#990000; vertical-align:middle; }
    +.startletter::first-letter { font-size:2em; color:#990000; vertical-align:middle; }
     

    Tests

    diff --git a/techniques/css/C39.html b/techniques/css/C39.html index 31f6f0f7f7..f6a0f80e77 100644 --- a/techniques/css/C39.html +++ b/techniques/css/C39.html @@ -24,7 +24,7 @@

    When to Use

    Description

    -

    The objective of this technique is to allow users to prevent animation from being displayed on Web pages, via the use of of the 'prefers-reduced-motion' CSS Media Query.

    +

    The objective of this technique is to allow users to prevent animation from being displayed on Web pages, via the use of the 'prefers-reduced-motion' CSS Media Query.

    Some users experience distraction or nausea from animated content. For example, if scrolling a page causes elements to move (other than the essential movement associated with scrolling) it can trigger vestibular disorders. Enclosing the CSS that creates the animations in a media query allows people to prevent those symptoms.

    A typical example is 'parallax scrolling', where backgrounds move at different rates. The movement due to scrolling the page is essential (and under the users control), but additional movement triggered by the scrolling can also trigger vestibular symptoms.

    The understanding document for Motion Actuation includes links for changing the reduce motion setting.

    diff --git a/techniques/css/C41.html b/techniques/css/C41.html index 3f707242ef..389e05971f 100644 --- a/techniques/css/C41.html +++ b/techniques/css/C41.html @@ -42,7 +42,7 @@

    Inner border

    }
    - Three blue buttons with a dark border, the middle button showing a bright yellow outline inside the button. + Three blue buttons with a dark border, the middle button showing a bright yellow outline inside the button.
    The default and focused states of the button.
    @@ -66,7 +66,7 @@

    Expected Results

    • #2 and #3 are true.
    -

    The required change of contrast for Focus Appearance Minimum is 3:1, this technique also applies to Focus Appearance Enhanced, which has a higher requirement of 4.5:1.

    +

    The required change of contrast for Focus Appearance (Minimum) is 3:1, this technique goes slightly beyond the minumum requirement.

    Examples

    Background image for an HTML page

    @@ -109,4 +109,4 @@

    Background images with CSS to create rounded corners on element is deprecated -

    \ No newline at end of file +
    diff --git a/techniques/failures/F10.html b/techniques/failures/F10.html index 9553a25914..1615bece30 100644 --- a/techniques/failures/F10.html +++ b/techniques/failures/F10.html @@ -6,7 +6,7 @@

    Description

    When content includes multiple formats, one or more user agents or plug-ins are often needed in order to successfully present the content to users. For - example, a page that includes XHTML, SVG, SMIL and XForms may require a + example, a page that includes HTML, SVG, SMIL and XForms may require a browser to load as many as three different plug-ins in order for a user to successfully interact with the content. Some plug-ins create a common situation in which the keyboard focus can become "stuck" in a @@ -15,7 +15,7 @@

    Examples

    • - A plug-in traps the user A user tabs into a + A plug-in traps the user: A user tabs into a plug-in and is unable to return to content outside the plug-in content with the keyboard. The user has to restart their browser in order to regain control and navigate to a new page and is unable to @@ -39,4 +39,4 @@

    Resources

    \ No newline at end of file +

    Resources

    diff --git a/techniques/failures/F107.html b/techniques/failures/F107.html index 098b1f6e82..bfac84081d 100644 --- a/techniques/failures/F107.html +++ b/techniques/failures/F107.html @@ -80,10 +80,8 @@

    Related Techniques

    Resources

    diff --git a/techniques/failures/F15.html b/techniques/failures/F15.html index 950a2c7bf2..eac9c8c29f 100644 --- a/techniques/failures/F15.html +++ b/techniques/failures/F15.html @@ -40,7 +40,7 @@ Accessible Rich Internet Applications (WAI-ARIA) 1.0
  • - WAI-ARIA 1.0 Authoring Practices + WAI-ARIA Authoring Practices Guide
  • Using WAI-ARIA in HTML diff --git a/techniques/failures/F59.html b/techniques/failures/F59.html index 0bec2fe310..5337e1fd08 100644 --- a/techniques/failures/F59.html +++ b/techniques/failures/F59.html @@ -70,7 +70,7 @@ Accessible Rich Internet Applications (WAI-ARIA) 1.0
  • - WAI-ARIA 1.0 Authoring Practices + WAI-ARIA Authoring Practices Guide
  • diff --git a/techniques/failures/F63.html b/techniques/failures/F63.html index f1c06809c5..d3dc1dfe07 100644 --- a/techniques/failures/F63.html +++ b/techniques/failures/F63.html @@ -64,7 +64,7 @@

    A Link in an Adjacent Cell Within a Layout Table

    Accessible Rich Internet Applications (WAI-ARIA) 1.0
  • - WAI-ARIA 1.0 Authoring Practices + WAI-ARIA Authoring Practices Guide
  • diff --git a/techniques/failures/F8.html b/techniques/failures/F8.html index e6e5d88655..c5b00c4a6e 100644 --- a/techniques/failures/F8.html +++ b/techniques/failures/F8.html @@ -7,9 +7,9 @@ the "caption" does not include all of the dialogue (either verbatim or in essence) as well as all important sounds then the 'Captions' are not real captions.

    -

    NOTE: Captions sometimes simplify the spoken text both to make it easier to - read and to avoid forcing the viewer to read at very high speed. This is - standard procedure and does not invalidate a caption.

    +
    +

    Captions sometimes simplify the spoken text both to make it easier to read and to avoid forcing the viewer to read at very high speed. This is standard procedure and does not invalidate a caption.

    +

    Examples

    @@ -34,4 +34,4 @@
  • If check #2 and check #3 are false, then this failure condition applies and the content fails the Success Criterion.
  • -

    Resources

    \ No newline at end of file +

    Resources

    diff --git a/techniques/failures/F87.html b/techniques/failures/F87.html index 140d719939..d741ed5050 100644 --- a/techniques/failures/F87.html +++ b/techniques/failures/F87.html @@ -1,20 +1,20 @@ -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

    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

    ID: F87

    Technology: failures

    Type: Failure

    When to Use

    +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

    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

    ID: F87

    Technology: failures

    Type: Failure

    When to Use

    All technologies that support CSS.

    Description

    -

    The CSS :before and :after pseudo-elements specify the location of content before and after an element's document tree content. The content property, in conjunction with these pseudo-elements, specifies what is inserted. For users who need to customize style information in order to view content according to their needs, they may not be able to access the information that is inserted using CSS. Therefore, it is a failure to use these properties to insert non-decorative content.

    +

    The CSS ::before and ::after pseudo-elements specify the location of content before and after an element's document tree content. The content property, in conjunction with these pseudo-elements, specifies what is inserted. For users who need to customize style information in order to view content according to their needs, they may not be able to access the information that is inserted using CSS. Therefore, it is a failure to use these properties to insert non-decorative content.

    A common way to test this critieria is to disable CSS styles to view whether content added using pseudo-elements remains visible.

    Examples

    -

    In the following example, :before and :after are used to indicate speaker changes and to insert quotation marks in a screenplay.

    +

    In the following example, ::before and ::after are used to indicate speaker changes and to insert quotation marks in a screenplay.

    The CSS contains:

    -
     p.jim:before {	content: "Jim: " }
    -p.mary:before { content: "Mary: " }
    +         
     p.jim::before {	content: "Jim: " }
    +p.mary::before { content: "Mary: " }
     
    -q:before { content: open-quote }
    -q:after  { content: close-quote }
    +q::before { content: open-quote } +q::after { content: close-quote }

    It is used in this excerpt:

    @@ -44,7 +44,7 @@

    Tests

    Procedure

    -

    For each instance of content inserted through use of the :before and :after pseudo-elements and the content property:

    +

    For each instance of content inserted through use of the ::before and ::after pseudo-elements and the content property:

    1. Check that non-decorative information presented by the generated content is available when styles are overridden.
    @@ -60,7 +60,7 @@ diff --git a/techniques/general/G142.html b/techniques/general/G142.html index 6b79317b51..bcde28fa3f 100644 --- a/techniques/general/G142.html +++ b/techniques/general/G142.html @@ -1,5 +1,5 @@ Using a technology that has commonly-available user agents that support zoom

    Using a technology that has commonly-available user agents that support zoom

    ID: G142

    Technology: general

    Type: Technique

    When to Use

    -

    All technologies with user-agent provided zoom capability.

    +

    All technologies with user agent provided zoom capability.

    Description

    The objective of this technique is to ensure content can be scaled uniformly by using a Web technology supported by user agents that change text size via a Zoom tool.

    Content authored in technologies that are supported by user agents that can scale content uniformly (that is, zoom into content) satisfy this Success Criterion. Because this technique relies completely on user agent functionality, it is critical to test with a wide variety of user agents.

    diff --git a/techniques/general/G149.html b/techniques/general/G149.html index 07c76d7462..3d807f4020 100644 --- a/techniques/general/G149.html +++ b/techniques/general/G149.html @@ -1,5 +1,5 @@ Using user interface components that are highlighted by the user agent when they receive focus

    Using user interface components that are highlighted by the user agent when they receive focus

    ID: G149

    Technology: general

    Type: Technique

    When to Use

    -

    All technologies with user-agent provided focus highlighting.

    +

    All technologies with user agent provided focus highlighting.

    Description

    The objective of this technique is to ensure that the focused component can be visually identified by the user by relying on user agent support. It is common for user agents to highlight standard controls in some way when they receive focus. UAAG-conformant user agents do so when they satisfy checkpoint 10.2 "Highlight selection, content focus, enabled elements, visited links". When authors use standard controls for which the user agent provides this support, users are informed of the focus location in a standard, predictable way.

    Examples

    diff --git a/techniques/general/G18.html b/techniques/general/G18.html index e46afd7614..4b51ddabf0 100644 --- a/techniques/general/G18.html +++ b/techniques/general/G18.html @@ -4,7 +4,7 @@

    Any technology that produces visual output.

    Description

    The objective of this technique is to make sure that users can read text - that is presented over a background. For Success Criterion 1.4.3, this technique describes the minimum contrast ratio for text that is less than 18 point (if not bold) and less than 14 point (if bold). For Success Criterion 1.4.5, this technique relaxes the 7:1 contrast ratio requirement for text that is at least 18 point (if not bold) or at least 14 point (if bold).

    + that is presented over a background. For Success Criterion 1.4.3, this technique describes the minimum contrast ratio for text that is less than 18 point (if not bold) and less than 14 point (if bold). For Success Criterion 1.4.6, this technique relaxes the 7:1 contrast ratio requirement for text that is at least 18 point (if not bold) or at least 14 point (if bold).

    When evaluating this success criterion, the font size in points should be obtained from the user agent or calculated on font metrics in the way that user agents do. Point sizes are based on the CSS pt size CSS3 Values. The ratio between sizes in points and CSS pixels is 1pt = 1.333px, therefore 14pt and 18pt are equivalent to approximately 18.5px and 24px.

    @@ -182,4 +182,4 @@ -
    \ No newline at end of file +
    diff --git a/techniques/general/G190.html b/techniques/general/G190.html index 31e9867ada..1119f09bcb 100644 --- a/techniques/general/G190.html +++ b/techniques/general/G190.html @@ -1,7 +1,7 @@ Providing a link adjacent to or associated with a non-conforming object that links to a conforming alternate version

    Providing a link adjacent to or associated with a non-conforming object that links to a conforming alternate version

    ID: G190

    Technology: general

    Type: Technique

    When to Use

    All technologies.

    Description

    -

    It is better for all objects on a page to conform, but there are certain circumstances where that may not be possible. There may be situations when an object or section of content targets people with certain disabilities while those same attributes make it inaccessible for someone else. There may also be other reasons not to have a conforming object on the Web page. When an object does not conform, then a link to a conforming alternate version is adjacent to the non-conforming object in the linear reading order or is associated with the the non-conforming content. The conforming alternate version conveys the same information as the non-conforming version.

    +

    It is better for all objects on a page to conform, but there are certain circumstances where that may not be possible. There may be situations when an object or section of content targets people with certain disabilities while those same attributes make it inaccessible for someone else. There may also be other reasons not to have a conforming object on the Web page. When an object does not conform, then a link to a conforming alternate version is adjacent to the non-conforming object in the linear reading order or is associated with the non-conforming content. The conforming alternate version conveys the same information as the non-conforming version.

    Examples

    A video of a rap song where audio descriptions would interfere with the artistic integrity of the music

    @@ -37,4 +37,4 @@

    An animation that is not accessibility supported

    \ No newline at end of file +
    diff --git a/techniques/general/G219.html b/techniques/general/G219.html index c64011e0ff..42d965cd5f 100644 --- a/techniques/general/G219.html +++ b/techniques/general/G219.html @@ -28,7 +28,7 @@

    Description

    Examples

      -
    • A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. After a single pointer activation, the list items display up and down arrows which allow a step-wise re-ordering of the the list via a single pointer inputs (taps or clicks at the up or down arrow).
    • +
    • A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. After a single pointer activation, the list items display up and down arrows which allow a step-wise re-ordering of the list via single pointer inputs (taps or clicks at the up or down arrow).
    • A vertical priority list indicates the priority of items listed. Each item can be ‘picked up’ with a pointer and dragged up or down to another position. The other list items rearrange dynamically. To the left of each list item, a number in a text field shows the current priority position. For any of the items, users can put in another number. This leads to a dynamic reordering and renumbering of the priority list.
    • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks (for example, to change the status of a task from “in process” to “completed”). One or several items in a lane can be selected by a single tap or click. A single pointer activation of a drop-down menu labelled “Move selected items to” offers a selection of drop targets (other lanes). A further single pointer activation over the desired menu item moves targets to the specified lane.
    • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks. A directional horizontal swipe over an item moves it to the adjacent lane. This process can be repeated until the item is in the desired lane.
    • diff --git a/techniques/html/H30.html b/techniques/html/H30.html index 51c3b29b0e..d6b12f138e 100644 --- a/techniques/html/H30.html +++ b/techniques/html/H30.html @@ -1,127 +1,121 @@ -Providing link text that describes the purpose of a link for anchor elements

      Providing link text that describes the purpose of a link for anchor elements

      ID: H30

      Technology: html

      Type: Technique

      When to Use

      -

      HTML and XHTML documents that contain links, (<a - href> elements)

      -

      Description

      -

      The objective of this technique is to describe the purpose of a link by providing - descriptive text as the content of the a element. The description lets a - user distinguish this link from other links in the Web page and helps the user determine - whether to follow the link. The URI of the destination is generally not sufficiently - descriptive.

      -

      When an image is the only content of a link, the text alternative for the image - describes the unique function of the link.

      -

      When the content of a link contains both text and one or more images, if the text is - sufficient to describe the purpose of the link, the images may have an empty text - alternative. (See Using null alt text and no title - attribute on img elements for images that assistive technology should ignore.) - When the images convey information beyond the purpose of the link, they must also have - appropriate alt text.

      -

      Examples

      -
      - -

      Describing the purpose of a link in HTML in the text content of the a - element.

      + + + + Providing link text that describes the purpose of a link for anchor elements + + + +

      Providing link text that describes the purpose of a link for anchor elements

      +
      +

      ID: H30

      +

      Technology: html

      +

      Type: Technique

      +
      +
      +

      When to Use

      +

      HTML documents that contain links, (<a href> elements)

      +
      +
      +

      Description

      +

      The objective of this technique is to describe the purpose of a link by providing descriptive text as the content of the a element. The description lets a user distinguish this link from other links in the Web page and helps the user determine whether to follow the link. The URI of the destination is generally not sufficiently descriptive.

      +

      When an image is the only content of a link, the text alternative for the image describes the unique function of the link.

      +

      When the content of a link contains both text and one or more images, if the text is sufficient to describe the purpose of the link, the images may have an empty text alternative. (See Using null alt text and no title attribute on img elements for images that assistive technology should ignore.) When the images convey information beyond the purpose of the link, they must also have appropriate alt text.

      +
      +
      +

      Examples

      +
      +

      Describing the purpose of a link in HTML in the text content of the a element.

      -
      <a href="routes.html">
      +
      <a href="routes.html">
         Current routes at Boulders Climbing Gym
       </a>
      -
      -
      - -

      Using the alt attribute for the img element to describe - the purpose of a graphical link.

      +
      +
      +

      Using the alt attribute for the img element to describe the purpose of a graphical link.

      -
      <a href="routes.html">
      -   <img src="topo.gif" alt="Current routes at Boulders Climbing Gym" /> 
      +
      <a href="routes.html">
      +  <img src="topo.gif" alt="Current routes at Boulders Climbing Gym"> 
       </a> 
      -
      -
      - -

      Using an empty alt attribute when the anchor (a) element contains text - that describes the purpose of the link in addition to the img element. - Note that the link text will appear on the page next to the image.

      +
      +
      +

      Using an empty alt attribute when the anchor (a) element contains text that describes the purpose of the link in addition to the img element. Note that the link text will appear on the page next to the image.

      -
      <a href="routes.html">
      -  <img src="topo.gif" alt="" />
      +
      <a href="routes.html">
      +  <img src="topo.gif" alt="">
         Current routes at Boulders Climbing Gym
       </a>
      -
      -
      - -

      A site allows users to provide feedback on products, when the user is logged in, by clicking on the "Feedback" link in a product detail page. Other users or the product manufacturer are able to provide a response to any feedback. The feedback link displays an icon before the "Feedback" text when a response to the user's feedback is available. The help information describes this icon as a talking bubble containing quotation marks and includes the icon itself as an example. The icon's text alternative in the help text is "Response received icon". The same text alternative is used in the product detail pages (when a response is available) to allow identification of this icon through multiple modalities.

      +
      +
      +

      A site allows users to provide feedback on products by clicking on the "Feedback" link in a product detail page. Other users are able to provide a response to any feedback. When a response to the user's feedback is available, the feedback link displays an icon, with "response received" as its text alternative, after the "Feedback" text. The site's help document describes this icon as a speech bubble containing quotation marks and includes the icon, with its text alternative, as an example. The same text alternative is used in the product detail pages (when a response is available) to help ensure that users following the documentation can identify the image correctly as documented.

      -
      <a href="prod_123_feedback.htm">Feedback 
      -         <img src="response.gif" width="15" height="15" alt="Response received icon" /></a>
      -
      -
      - -

      A link contains text and an icon, and the icon provides additional information about the target.

      - -
      <a href="WMFP.pdf">
      -Woodend Music Festival Program
      -<img src="pdficon.gif" alt="PDF format"/>
      +
      <a href="prod_123_feedback.htm">
      +  Feedback 
      +  <img src="response.gif" width="15" height="15" alt="response received">
       </a>
      -
      -
      +
      +
      +

      A link contains text and an icon, and the icon provides additional information about the target.

      -

      The “MyCorp” company’s annual report is made available on the corporate - website as a PDF file, and the annual corporate budget is made available as an - Excel file on the web site.

      -
      -

      Many users prefer to know the file type when opening a file that results in opening a new application to view the file, so it is often regarded as useful to include this additional information. However, this is not required for compliance with this success criterion.

      -
      - -
      <p>
      -<a href=”2009mycorp_report.pdf”>MyCorp 2009 Annual Report (pdf)</a><br />
      -<a href=”2009mycorp_budget.xls”>MyCorp 2009 Annual Budget (Excel)</a>
      -</p>
      +
      <a href="WMFP.pdf">
      +  Woodend Music Festival Program
      +  <img src="pdficon.gif" alt="PDF format">
      +</a>
      +

      The "MyCorp" company's annual report is made available on the corporate website as a PDF file, and the annual corporate budget is made available as an Excel file on the web site.

      +
      +

      Many users prefer to know the file type when opening a file that results in opening a new application to view the file, so it is often regarded as useful to include this additional information. However, this is not required for compliance with this Success Criterion.

      +
      -

      Using a link to wrap block level elements in HTML5.

      - -
      <article>
      -<a href="news.html">
      -<h3>Budget Debate Continues in Parliament</h3>
      -<p class="subhead"><img class="alertimg" src="alerticon.png" alt="Breaking News" height="30" width="30">Members of Parliament continued vigorous debate on three challenging issues surrounding the upcoming year's budget.</p>
      -<p>Read more</p>
      -</a>
      -</article>
      -

      This is shown in the working example of using a link to wrap block level elements. -

      -
      -

      Tests

      -

      Procedure

      -

      For each link in the content that uses this technique:

      -
        -
      1. Check that text or a text alternative for non-text content is included in the - a element
      2. -
      3. If an img element is the only content of the a element, - check that its text alternative describes the purpose of the link
      4. -
      5. If the a element contains one or more img element(s) - and the text alternative of the img element(s) is empty, check that - the text of the link describes the purpose of the link
      6. -
      7. If the a element only contains text, check that the text describes - the purpose of the link
      8. -
      -
      -

      Expected Results

      -
        -
      • The above checks are true.
      • -
      -
      -
      +
      +
      +

      Tests

      +

      Procedure

      +

      For each link in the content that uses this technique:

      +
        +
      1. Check that text or a text alternative for non-text content is included in the + a element.
      2. +
      3. If an img element is the only content of the a element, + check that its text alternative describes the purpose of the link.
      4. +
      5. If the a element contains one or more img element(s) + and the text alternative of the img element(s) is empty, check that + the text of the link describes the purpose of the link.
      6. +
      7. If the a element only contains text, check that the text describes + the purpose of the link.
      8. +
      +
      +
      +

      Expected Results

      +
        +
      • The above checks are true.
      • +
      +
      +
      +

      Resources

      - - - -
      \ No newline at end of file +
    • H2
    • +
    • H24
    • +
    • H67
    • +
    +
    +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H45.html b/techniques/html/H45.html index d612a1b671..51a22206d9 100644 --- a/techniques/html/H45.html +++ b/techniques/html/H45.html @@ -1,5 +1,5 @@ Using longdesc

    Using longdesc

    ID: H45

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML documents that include images that cannot be +

    HTML documents that include images that cannot be described in a short text alternative.

    Description

    The objective of this technique is to provide information in a file designated by the @@ -43,11 +43,8 @@

    Using longdesc to refer to a long description within the same page.

    -
    \ No newline at end of file +
    diff --git a/techniques/html/H98.html b/techniques/html/H98.html index 70d603459c..3d8407a7f4 100644 --- a/techniques/html/H98.html +++ b/techniques/html/H98.html @@ -29,7 +29,7 @@

    Description

    It's important to note the success criterion Identify Input Purpose and autocomplete attribute only place requirements on input fields collecting information about the user.

    -

    For the success criterion, it is assumed that the autocomplete attribute is not used on form fields that do not correspond to an autocomplete field described in the HTML 5.2 specification. If the autocomplete field is used to describe a "custom" taxonomy, rather than that described in the specification, this rule may produce incorrect results.

    +

    For the success criterion, it is assumed that the autocomplete attribute is not used on form fields that do not correspond to an autocomplete field described in the HTML specification. If the autocomplete field is used to describe a "custom" taxonomy, rather than that described in the specification, this rule may produce incorrect results.

    Security considerations

    Organizations can be concerned about allowing input fields to be automatically filled-in. There is sometimes confusion about how browsers save information and the security implications.

    diff --git a/techniques/server-side-script/SVR3.html b/techniques/server-side-script/SVR3.html index dddab341f2..1a9f2ce826 100644 --- a/techniques/server-side-script/SVR3.html +++ b/techniques/server-side-script/SVR3.html @@ -14,7 +14,7 @@

    Interactive demonstrations of physical processes

    -

    Using Http referer in PHP

    +

    Using HTTP referer in PHP

    The following example illustrates how this technique can be used in PHP. It includes two files, conforming.php and non-conforming.php which work together to ensure that the only way to access non-conforming content is from conforming content.

    conforming.php:

    @@ -94,4 +94,4 @@

    Using Http referer in PHP

  • SVR2
  • SVR4
  • C29
  • -
    \ No newline at end of file +
    diff --git a/understanding/20/audio-control.html b/understanding/20/audio-control.html index e750e4a0dc..e6df75988f 100644 --- a/understanding/20/audio-control.html +++ b/understanding/20/audio-control.html @@ -109,18 +109,6 @@

    Sufficient Techniques for Audio Control

    -
  • - - - -
  • - -
  • - - - -
  • - diff --git a/understanding/20/audio-description-or-media-alternative-prerecorded.html b/understanding/20/audio-description-or-media-alternative-prerecorded.html index aaa04b05ab..cb15cbc123 100644 --- a/understanding/20/audio-description-or-media-alternative-prerecorded.html +++ b/understanding/20/audio-description-or-media-alternative-prerecorded.html @@ -226,12 +226,6 @@

    Sufficient Techniques for Audio Description or Media Alternative (Prerecorde -
  • - - - -
  • - @@ -260,16 +254,6 @@

    Sufficient Techniques for Audio Description or Media Alternative (Prerecorde -
  • - - - - AND - - - -
  • -
  • @@ -291,12 +275,6 @@

    Sufficient Techniques for Audio Description or Media Alternative (Prerecorde

  • -
  • - - - -
  • -
  • Using any player that supports audio and video
  • @@ -324,12 +302,6 @@

    Sufficient Techniques for Audio Description or Media Alternative (Prerecorde -
  • - - - -
  • -
  • Using any player that supports audio and video
  • diff --git a/understanding/20/audio-description-prerecorded.html b/understanding/20/audio-description-prerecorded.html index 1b2547e9f3..0d8f10314b 100644 --- a/understanding/20/audio-description-prerecorded.html +++ b/understanding/20/audio-description-prerecorded.html @@ -170,16 +170,6 @@

    Sufficient Techniques for Audio Description (Prerecorded)

    -
  • - - - - AND - - - -
  • -
  • diff --git a/understanding/20/audio-only-and-video-only-prerecorded.html b/understanding/20/audio-only-and-video-only-prerecorded.html index f038ac78fc..9fd95860ff 100644 --- a/understanding/20/audio-only-and-video-only-prerecorded.html +++ b/understanding/20/audio-only-and-video-only-prerecorded.html @@ -197,12 +197,6 @@

    Situation A: If the content is prerecorded audio-only:

  • -
  • - - - -
  • - @@ -225,12 +219,6 @@

    Situation B: If the content is prerecorded video-only:

    -
  • - - - -
  • - diff --git a/understanding/20/audio-only-live.html b/understanding/20/audio-only-live.html index dc5efbd701..2531e51641 100644 --- a/understanding/20/audio-only-live.html +++ b/understanding/20/audio-only-live.html @@ -56,7 +56,7 @@

    Examples of Audio-only (Live)

  • A streaming audio server uses a technology which can also accommodate text and graphics, - such as HTML5 or Silverlight. A stenographer is used to create live captions at an + such as HTML. A stenographer is used to create live captions at an event, and these are mixed on the fly to produce live captions in the media stream which can be viewed by the media player.
  • diff --git a/understanding/20/bypass-blocks.html b/understanding/20/bypass-blocks.html index 6a41371a66..961e0c218b 100644 --- a/understanding/20/bypass-blocks.html +++ b/understanding/20/bypass-blocks.html @@ -176,12 +176,6 @@

    Sufficient Techniques for Bypass Blocks

    -
  • - - - -
  • - @@ -228,12 +222,6 @@

    Sufficient Techniques for Bypass Blocks

    -
  • - - - -
  • - diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index 141b501edd..203c4cf012 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -326,12 +326,6 @@

    Situation A: text is less than 18 point if not bold and less than 14 point i -
  • - - - -
  • - @@ -366,12 +360,6 @@

    Situation B: text is as least 18 point if not bold and at least 14 point if -
  • - - - -
  • - diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index 1c53e26716..6cb8bf5c40 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -402,12 +402,6 @@

    Situation A: text is less than 18 point if not bold and less than 14 point i -
  • - - Providing A Style Switcher To Switch To High Contrast - -
  • - @@ -442,12 +436,6 @@

    Situation B: text is at least 18 point if not bold and at least 14 point if -
  • - - Providing A Style Switcher To Switch To High Contrast - -
  • - diff --git a/understanding/20/error-identification.html b/understanding/20/error-identification.html index 1882ea8ce0..18bee81b34 100644 --- a/understanding/20/error-identification.html +++ b/understanding/20/error-identification.html @@ -210,12 +210,6 @@

    Situation A: If a form contains fields for which information from the user i -
  • - - - -
  • - @@ -280,12 +274,6 @@

    Situation B: If information provided by the user is required to be in a spec -
  • - - - -
  • - diff --git a/understanding/20/error-prevention-legal-financial-data.html b/understanding/20/error-prevention-legal-financial-data.html index 5231a1ba90..8c9eade510 100644 --- a/understanding/20/error-prevention-legal-financial-data.html +++ b/understanding/20/error-prevention-legal-financial-data.html @@ -215,12 +215,6 @@

    Additional Techniques (Advisory) for Error Prevention (Legal, Financial, Dat -
  • - - - -
  • -
  • Providing success feedback when data is submitted successfully diff --git a/understanding/20/error-suggestion.html b/understanding/20/error-suggestion.html index 37cd2c9f93..9a2dcb5875 100644 --- a/understanding/20/error-suggestion.html +++ b/understanding/20/error-suggestion.html @@ -158,12 +158,6 @@

    Situation A: If a mandatory field contains no information:

  • -
  • - - - -
  • - diff --git a/understanding/20/focus-order.html b/understanding/20/focus-order.html index 4cda4a2a21..103b02ea7f 100644 --- a/understanding/20/focus-order.html +++ b/understanding/20/focus-order.html @@ -217,12 +217,6 @@

    Sufficient Techniques for Focus Order

    -
  • - - - -
  • - diff --git a/understanding/20/focus-visible.html b/understanding/20/focus-visible.html index b027ed01bc..08de64039b 100644 --- a/understanding/20/focus-visible.html +++ b/understanding/20/focus-visible.html @@ -19,7 +19,7 @@

    Intent of Focus Visible

    It must be possible for a person to know which element among multiple elements has the keyboard focus. If there is only one keyboard actionable control on the screen, the success criterion would be met because the visual design presents only one keyboard actionable item.

    -

    “Mode of operation” accounts for user-agents which may not always show a focus indicator, or only show the focus indicator when the keyboard is used. User agents may optimise when the focus indicator is shown, such as only showing it when a keyboard is used. Authors are responsible for providing at least one mode of operation where the focus is visible. In most cases there is only one mode of operation so this success criterion applies. The focus indicator must not be time limited, when the keyboard focus is shown it must remain.

    +

    “Mode of operation” accounts for user agents which may not always show a focus indicator, or only show the focus indicator when the keyboard is used. User agents may optimise when the focus indicator is shown, such as only showing it when a keyboard is used. Authors are responsible for providing at least one mode of operation where the focus is visible. In most cases there is only one mode of operation so this success criterion applies. The focus indicator must not be time limited, when the keyboard focus is shown it must remain.

    Note that a keyboard focus indicator can take different forms. This criterion does not specify what the form is, but Focus Appearance (Minimum) does define how visible the indicator should be. Passing Focus Appearance (Minimum) would pass this success criterion.

    @@ -121,18 +121,6 @@

    Sufficient Techniques for Focus Visible

    -
  • - - - -
  • - -
  • - - - -
  • - diff --git a/understanding/20/images-of-text-no-exception.html b/understanding/20/images-of-text-no-exception.html index 4a19dc7572..815f5a5a37 100644 --- a/understanding/20/images-of-text-no-exception.html +++ b/understanding/20/images-of-text-no-exception.html @@ -223,12 +223,6 @@

    Sufficient Techniques for Images of Text (No Exception)

    -
  • - - - -
  • -
  • Using CSS to replace text with images of text and providing user interface controls diff --git a/understanding/20/images-of-text.html b/understanding/20/images-of-text.html index b308d3d56d..25d4b7eab8 100644 --- a/understanding/20/images-of-text.html +++ b/understanding/20/images-of-text.html @@ -277,13 +277,7 @@

    Sufficient Techniques for Images of Text

    Using CSS to control visual presentation of text
  • - -
  • - - - -
  • - +
  • Using CSS to replace text with images of text and providing user interface controls diff --git a/understanding/20/info-and-relationships.html b/understanding/20/info-and-relationships.html index 2b00626027..2d6d7eab87 100644 --- a/understanding/20/info-and-relationships.html +++ b/understanding/20/info-and-relationships.html @@ -406,18 +406,6 @@

    Situation A: The technology provides semantic structure to make information

  • -
  • - - - -
  • - -
  • - - - -
  • -
  • Using OPTGROUP to group OPTION elements inside a SELECT diff --git a/understanding/20/keyboard.html b/understanding/20/keyboard.html index 0d6c1ada71..fc3b6c38db 100644 --- a/understanding/20/keyboard.html +++ b/understanding/20/keyboard.html @@ -232,12 +232,6 @@

    Sufficient Techniques for Keyboard

  • -
  • - - - -
  • - @@ -269,18 +263,6 @@

    Sufficient Techniques for Keyboard

    -
  • - - - -
  • - -
  • - - - -
  • - diff --git a/understanding/20/labels-or-instructions.html b/understanding/20/labels-or-instructions.html index 9c93d4d9f1..a72478b859 100644 --- a/understanding/20/labels-or-instructions.html +++ b/understanding/20/labels-or-instructions.html @@ -214,12 +214,6 @@

    Sufficient Techniques for Labels or Instructions

    -
  • - - - -
  • -
  • H71: Providing a description for groups of form controls using fieldset and legend @@ -228,12 +222,6 @@

    Sufficient Techniques for Labels or Instructions

  • -
  • - - - -
  • -
  • Using adjacent button to label the purpose of a field @@ -266,12 +254,6 @@

    Additional Techniques (Advisory) for Labels or Instructions

  • -
  • - - - -
  • - @@ -284,7 +266,7 @@

    Failures for Labels or Instructions

  • - Failure of Success Criterion 3.3.2 by visually formating a set of phone number fields + Failure of Success Criterion 3.3.2 by visually formatting a set of phone number fields but not including a text label diff --git a/understanding/20/language-of-parts.html b/understanding/20/language-of-parts.html index 663f71e548..323c179299 100644 --- a/understanding/20/language-of-parts.html +++ b/understanding/20/language-of-parts.html @@ -7,8 +7,7 @@

    Understanding Language of Parts

    - - +

    Intent of Language of Parts

    @@ -31,8 +30,7 @@

    Intent of Language of Parts

    When no other language has been specified for a phrase or passage of text, its human - language is the default human language of the Web page (see Success Criterion 3.1.1). - So the human language of all content in single language documents can be programmatically + language is the default human language of the Web page (see Success Criterion 3.1.1). So the human language of all content in single language documents can be programmatically determined.

    @@ -48,7 +46,6 @@

    Intent of Language of Parts

    whether a change in language is intended, consider whether the word would be pronounced the same (except for accent or intonation) in the language of the immediately surrounding text. -

    Most professions require frequent use of technical terms which may originate from @@ -60,9 +57,7 @@

    Intent of Language of Parts

    and habeas corpus.

    -

    Identifying changes in language is important for a number of reasons: - -

    +

    Identifying changes in language is important for a number of reasons:

      @@ -74,8 +69,8 @@

      Intent of Language of Parts

    • Speech synthesizers that support multiple languages will be able to speak the text in the appropriate accent with proper pronunciation. If changes are not marked, the synthesizer will try its best to speak the words in the default language it works - in. Thus, the French word for car, "voiture" would be pronounced "voyture" by a speech - synthesizer that uses English as its default language. + in. Thus, the French word for car, "voiture" would be pronounced "voyture" by a speech + synthesizer that uses English as its default language.
    • Marking changes in language can benefit future developments in technology, for example @@ -94,11 +89,9 @@

      Intent of Language of Parts

      Benefits of Language of Parts

      -

      This Success Criterion helps:

        -
      • people who use screen readers or other technologies that convert text into synthetic speech;
      • @@ -124,80 +117,50 @@

        Benefits of Language of Parts

        Examples of Language of Parts

        - -
          - -
        1. - -

          - - A German phrase in an English sentence. - +

            +
          1. +

            + A German phrase in an English sentence.

            -

            In the sentence, "He maintained that the DDR (German Democratic Republic) was just - a 'Treppenwitz der Weltgeschichte'," the German phrase 'Treppenwitz der Weltgeschichte' is marked as German. Depending on the markup language, English may either be marked + a 'Treppenwitz der Weltgeschichte'," the German phrase 'Treppenwitz der Weltgeschichte' is marked as German. Depending on the markup language, English may either be marked as the language for the entire document except where specified, or marked at the paragraph level. When a screen reader encounters the German phrase, it changes pronunciation rules from English to German to pronounce the word correctly.

            -
          2. -
          3. - -

            - - Alternative language links - +

            + Alternative language links

            -

            An HTML Web page includes links to versions of the page in other languages (e.g., - Deutsch, Français, Nederlands, Castellano, etc.). The text of each link is the name - of the language, in that language. The language of each link is indicated via a lang attribute. - + Deutsch, Français, Nederlands, Catalan, etc.). The text of each link is the name of the language, in that language. The language of each link is indicated via a lang attribute.

            -
          4. -
          5. - -

            - - "Podcast" used in a French sentence. - +

            + "Podcast" used in a French sentence.

            -

            Because "podcast" is part of the vernacular of the immediately surrounding text in - the following excerpt, "À l'occasion de l'exposition "Energie éternelle. 1500 ans d'art indien", le Palais - des Beaux-Arts de Bruxelles a lancé son premier podcast. Vous pouvez télécharger ce - podcast au format M4A et MP3," no indication of language change is required. + the following excerpt, "À l'occasion de l'exposition "Energie éternelle. 1500 ans d'art indien", le Palais des Beaux-Arts de Bruxelles a lancé son premier podcast. Vous pouvez télécharger ce podcast au format M4A et MP3", no indication of language change is required.

            -
          6. -
          -

        Resources for Language of Parts

        - - +
        @@ -205,31 +168,16 @@

        Resources for Language of Parts

        Techniques for Language of Parts

        -

        Sufficient Techniques for Language of Parts

        - - -
          - -
        1. - - Using the lang attribute to identify changes in the human language - -
        2. - -
        3. - - - + +
            +
          1. + Using the lang attribute to identify changes in the human language.
          2. -
          3. - - - + Specifying the language for a passage or phrase with the Lang entry in PDF documents.
          4. -
        @@ -237,23 +185,11 @@

        Sufficient Techniques for Language of Parts

        Additional Techniques (Advisory) for Language of Parts

        - -
          - -
        • - - - -
        • - -
        -

        Failures for Language of Parts

        - - +
        diff --git a/understanding/20/link-purpose-in-context.html b/understanding/20/link-purpose-in-context.html index 881764ec7d..1bcc4250c0 100644 --- a/understanding/20/link-purpose-in-context.html +++ b/understanding/20/link-purpose-in-context.html @@ -404,12 +404,6 @@

        Sufficient Techniques for Link Purpose (In Context)

        -
      • - - - -
      • -
    • diff --git a/understanding/20/link-purpose-link-only.html b/understanding/20/link-purpose-link-only.html index 7fe368ffaf..c7edc76406 100644 --- a/understanding/20/link-purpose-link-only.html +++ b/understanding/20/link-purpose-link-only.html @@ -264,12 +264,6 @@

      Sufficient Techniques for Link Purpose (Link Only)

      -
    • - - - -
    • -
    diff --git a/understanding/20/meaningful-sequence.html b/understanding/20/meaningful-sequence.html index ffebb681f8..5932226c47 100644 --- a/understanding/20/meaningful-sequence.html +++ b/understanding/20/meaningful-sequence.html @@ -177,12 +177,6 @@

    Sufficient Techniques for Meaningful Sequence

  • -
  • - - - -
  • - diff --git a/understanding/20/media-alternative-prerecorded.html b/understanding/20/media-alternative-prerecorded.html index 2e774e522f..2bdf72f388 100644 --- a/understanding/20/media-alternative-prerecorded.html +++ b/understanding/20/media-alternative-prerecorded.html @@ -164,12 +164,6 @@

    Situation A: If the content is prerecorded synchronized media:

    -
  • - - - -
  • - diff --git a/understanding/20/name-role-value.html b/understanding/20/name-role-value.html index 70a9fcc114..f3d71769fc 100644 --- a/understanding/20/name-role-value.html +++ b/understanding/20/name-role-value.html @@ -258,18 +258,6 @@

    Situation C: If using a standard user interface component in a programming t -
  • - - - -
  • - -
  • - - - -
  • - @@ -315,30 +303,6 @@

    Situation D: If creating your own user interface component in a programming -
  • - - - -
  • - -
  • - - - -
  • - -
  • - - - -
  • - -
  • - - - -
  • - diff --git a/understanding/20/non-text-content.html b/understanding/20/non-text-content.html index db88f2edfc..633d3a6cab 100644 --- a/understanding/20/non-text-content.html +++ b/understanding/20/non-text-content.html @@ -580,12 +580,6 @@

    Situation A: If a short description can serve the same purpose and present t -
  • - - - -
  • - @@ -681,12 +675,6 @@

    Situation B: If a short description can -
  • - - - -
  • -

    @@ -732,12 +720,6 @@

    Situation B: If a short description can -
  • - - - -
  • - @@ -809,24 +791,6 @@

    Situation C: If non-text content is a control or accepts user input:

    -
  • - - - -
  • - -
  • - - - -
  • - -
  • - - - -
  • - @@ -933,12 +897,6 @@

    Situation D: If non-text content is time-based media (including live video-o -
  • - - - -
  • - @@ -1050,22 +1008,6 @@

    CSS Techniques (Advisory)

    -
    - -

    Silverlight Techniques (Advisory)

    - -
      - -
    • - - - -
    • - -
    - -
    -
    diff --git a/understanding/20/on-focus.html b/understanding/20/on-focus.html index 700f02843c..fbeb1d74d3 100644 --- a/understanding/20/on-focus.html +++ b/understanding/20/on-focus.html @@ -39,7 +39,7 @@

    Intent of On Focus

    What is meant by "component" here is also sometimes called "user interface element" - or "user interface component''. + or "user interface component".

    diff --git a/understanding/20/on-input.html b/understanding/20/on-input.html index 9350e2769d..34468a0540 100644 --- a/understanding/20/on-input.html +++ b/understanding/20/on-input.html @@ -161,12 +161,6 @@

    Sufficient Techniques for On Input

    -
  • - - - -
  • - diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index 363e98806e..0abdadd950 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -145,12 +145,6 @@

    Sufficient Techniques for Parsing

    -
  • - - - -
  • -
    diff --git a/understanding/20/pause-stop-hide.html b/understanding/20/pause-stop-hide.html index d69d93c763..30ea8bb6ba 100644 --- a/understanding/20/pause-stop-hide.html +++ b/understanding/20/pause-stop-hide.html @@ -303,18 +303,6 @@

    Sufficient Techniques for Pause, Stop, Hide

    -
  • - - - -
  • - -
  • - - - -
  • -
  • Using script to scroll content, and providing a mechanism to pause it @@ -361,12 +349,6 @@

    Sufficient Techniques for Pause, Stop, Hide

  • -
  • - - - -
  • - diff --git a/understanding/20/resize-text.html b/understanding/20/resize-text.html index eb05e91aff..db361715f1 100644 --- a/understanding/20/resize-text.html +++ b/understanding/20/resize-text.html @@ -39,7 +39,7 @@

    Intent of Resize text

    If the author is using a technology whose user agents do not provide zoom support, the author is responsible to provide this type of functionality directly or to provide content that works with the type of functionality provided by the user agent. If the - user agent doesn't provide zoom functionality but does let the the user change the + user agent doesn't provide zoom functionality but does let the user change the text size, the author is responsible for ensuring that the content remains usable when the text is resized.

    @@ -196,18 +196,6 @@

    Sufficient Techniques for Resize text

    -
  • - - - -
  • - -
  • - - - -
  • -
  • diff --git a/understanding/20/timing-adjustable.html b/understanding/20/timing-adjustable.html index 8fa0f8922d..412ed6d2bb 100644 --- a/understanding/20/timing-adjustable.html +++ b/understanding/20/timing-adjustable.html @@ -262,12 +262,6 @@

    Situation B: If a time limit is controlled by a script on the page:

  • -
  • - - - -
  • - diff --git a/understanding/21/animation-from-interactions.html b/understanding/21/animation-from-interactions.html index 2d4454a342..89a3c19e74 100644 --- a/understanding/21/animation-from-interactions.html +++ b/understanding/21/animation-from-interactions.html @@ -16,7 +16,7 @@

    Intent

    The impact of animation on people with vestibular disorders can be quite severe. Triggered reactions include nausea, migraine headaches, and potentially needing bed rest to recover.

    -

    How can a website reduce the chances of triggering a vestibular disorder? Choose any one of the following solutions. Avoid using unnecessary animation. Provide a control for users to turn off non-essential animations from user interaction. Take advantage of the reduce motion feature in the user-agent or operating system.

    +

    How can a website reduce the chances of triggering a vestibular disorder? Choose any one of the following solutions. Avoid using unnecessary animation. Provide a control for users to turn off non-essential animations from user interaction. Take advantage of the reduce motion feature in the user agent or operating system.

    What about movement caused by a user scrolling a page? Moving new content into the viewport is essential for scrolling. The user controls the essential scrolling movement so it is allowed. Only add non-essential animation to the scrolling interaction in a responsible way. Always give users the ability to turn off unnecessary movement.

    diff --git a/understanding/21/content-on-hover-or-focus.html b/understanding/21/content-on-hover-or-focus.html index 2254877623..cff83df5d1 100644 --- a/understanding/21/content-on-hover-or-focus.html +++ b/understanding/21/content-on-hover-or-focus.html @@ -107,7 +107,7 @@

    Example 2: Hoverable Tooltip

    Resources

    diff --git a/understanding/21/identify-input-purpose.html b/understanding/21/identify-input-purpose.html index 1f9ce4f6cc..04a3d5cc4d 100644 --- a/understanding/21/identify-input-purpose.html +++ b/understanding/21/identify-input-purpose.html @@ -16,7 +16,7 @@

    Intent of this Success Criterion

    This success criterion defines the types of user interface component input purposes, found in Section 7 of the WCAG 2.1 Recommendation, that must be programmatically identifiable. When these user input purposes are present, and if the technology supports doing so, the field purpose must be programmatically identifiable.

    The HTML autocomplete attribute only accepts a certain number of specific well-defined fixed values. This allows a more fine-grained definition or identification of purpose than the type attribute, for example, by allowing the author to specify a specific type of name: Name (autocomplete="name”), Given Name (autocomplete="given-name”), Family Name (autocomplete="family-name”), as well as Username (autocomplete="username”), and Nickname (autocomplete="nickname”).

    By adopting and repurposing this predefined taxonomy of definitions, user agents and assistive technologies can now present the purpose of the inputs to users in different modalities. For example, assistive technologies may display familiar icons next to input fields to help users who have difficulties reading. An icon of a birthday cake may be shown in front of an input field with autocomplete="bday", or the icon of a telephone in front of an input field with autocomplete="tel".

    -

    In addition to repurposing this taxonomy, when the autocomplete attribute technique is used to meet this Success Criterion, browsers and other user-agents can suggest and 'autofill' the right content by autocompleting these fields based on past user input stored in the browser. By defining more granular definitions of common input purposes, for example “Birthday” (autocomplete=”bday”), browsers can store personalized values for each of these fields (the user's birthday date). The user is relieved of having to type the information and can instead confirm or, if needed, change the value of the field, a significant benefit for users with memory issues, dyslexia, and other disabilities. Because the autocomplete values are independent of language, users that may not be familiar with the text used to visually identify user input fields (the label) can still have that purpose consistently identified to them due to the fixed taxonomy of terms.

    +

    In addition to repurposing this taxonomy, when the autocomplete attribute technique is used to meet this Success Criterion, browsers and other user agents can suggest and 'autofill' the right content by autocompleting these fields based on past user input stored in the browser. By defining more granular definitions of common input purposes, for example “Birthday” (autocomplete=”bday”), browsers can store personalized values for each of these fields (the user's birthday date). The user is relieved of having to type the information and can instead confirm or, if needed, change the value of the field, a significant benefit for users with memory issues, dyslexia, and other disabilities. Because the autocomplete values are independent of language, users that may not be familiar with the text used to visually identify user input fields (the label) can still have that purpose consistently identified to them due to the fixed taxonomy of terms.

    If an input field accepts two different types of input purpose (as in combined user name/user email fields) and the technology used does not allow multiple purpose values to be defined, it is valid to provide either one or the other value or leave out the designation of input purpose altogether.

    When the user agent and assistive technology support for other metadata formats matures, metadata schemes like the Personalization Semantics Content Module may be used in addition or instead of the HTML autocomplete attribute to identify the purpose of input fields. They can also support automated adaptations that identify and match author-provided input labels to defined vocabularies or symbols that are used instead for labelling inputs.

    diff --git a/understanding/21/identify-purpose.html b/understanding/21/identify-purpose.html index bd35c49e31..92e517a4e8 100644 --- a/understanding/21/identify-purpose.html +++ b/understanding/21/identify-purpose.html @@ -43,7 +43,7 @@

    Benefits

    Examples

      -
    • A website uses ARIA landmarks to identify the regions of the page, and users can hide areas that do not have a role of main.
    • +
    • A website uses ARIA landmarks to identify the regions of the page, and users can hide areas that do not have a role of main.
    • The links in the navigation of a website are marked up so that users can add their own icons.
    • Icons on a website are marked up so that users can substitute their own icon sets into the page.
    diff --git a/understanding/21/non-text-contrast.html b/understanding/21/non-text-contrast.html index 01a82b75e9..2d1c7cd2e7 100644 --- a/understanding/21/non-text-contrast.html +++ b/understanding/21/non-text-contrast.html @@ -121,7 +121,7 @@ The external green indicator (#008000) does contrast with the white background (#FFF) which the component is on, passing the criterion. It does not need to contrast with both the component background and the component. -

    Although the figure above with a dark outline passes non-text contrast, it is not a good indicator unless it is very thick. There is a criterion in WCAG 2.2 that addresses this aspect, Focus Appearance (minimum).

    +

    Although the figure above with a dark outline passes non-text contrast, it is not a good indicator unless it is very thick. There is a criterion in WCAG 2.2 that addresses this aspect, Focus Appearance.

    If an indicator is partly inside and partly outside the component, either part of the indicator could provide contrast.

    @@ -184,7 +184,7 @@

    Active User Interface Component Examples

    Default focus style - Links are required to have a focus indicator by 2.4.7 Focus Visible. Where the user-agent's default appearance of interactive controls (such as links, form fields or buttons) is not adjusted, the default focus style is sufficient. + Links are required to have a focus indicator by 2.4.7 Focus Visible. Where the user agent's default appearance of interactive controls (such as links, form fields or buttons) is not adjusted, the default focus style is sufficient. A browser-default styled link, with a black dotted outline around the link. diff --git a/understanding/21/pointer-gestures.html b/understanding/21/pointer-gestures.html index 0d8509ae7c..38365af7e8 100644 --- a/understanding/21/pointer-gestures.html +++ b/understanding/21/pointer-gestures.html @@ -35,7 +35,7 @@

    Challenges for people with disabilities

    Authors must ensure that their content can be operated without multipoint or path-based gestures. Multipoint or path-based gestures can be used so long as the functionality can also be operated by another method, such as a tap, click, double tap, double click, long press, or click & hold.

    -

    This Success Criterion applies to gestures in the author-provided content, not gestures defined by the operating system, user agent, or assistive technology. Examples of operating system gestures would be swiping down to see system notifications and gestures for built-in assistive technologies (AT). Examples of user-agent-implemented gestures would be horizontal swiping implemented by browsers for navigating within the page history, or vertical swiping to scroll page content.

    +

    This Success Criterion applies to gestures in the author-provided content, not gestures defined by the operating system, user agent, or assistive technology. Examples of operating system gestures would be swiping down to see system notifications and gestures for built-in assistive technologies (AT). Examples of user agent-implemented gestures would be horizontal swiping implemented by browsers for navigating within the page history, or vertical swiping to scroll page content.

    There are times when a component requires a path-based gesture for touch screen devices but not with a mouse. Taking an example of a generic slider:

    Techniques

    -

    Each numbered item in this section represents a technique or combination of techniques that the WCAGWorking Group deems sufficient for meeting this Success Criterion. However, it is not necessary to use these particular techniques. For information on using other techniques, see Understanding Techniques for WCAG Success Criteria, particularly the "Other Techniques" section.

    +

    Each numbered item in this section represents a technique or combination of techniques that the WCAG Working Group deems sufficient for meeting this Success Criterion. However, it is not necessary to use these particular techniques. For information on using other techniques, see Understanding Techniques for WCAG Success Criteria, particularly the "Other Techniques" section.

    Sufficient

    Techniques that are sufficient to meet the Guideline or Success Criterion.

    @@ -74,7 +73,7 @@

    Advisory

    Failure

    -

    The following are common mistakes that are considered failures of Success Criterion 2.5.5 by the WCAG Working Group.

    +

    The following are common mistakes that are considered failures of Success Criterion 2.5.5 by the WCAG Working Group.

    • Failure of success criterion 2.5.5 due to touch target being less than 44 by 44 CSS pixels.
    From 3d75a85895da53adaaf08a27b0b3794f9fa8128b Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Thu, 7 Jul 2022 10:28:49 -0400 Subject: [PATCH 33/73] update from main --- techniques/css/C23.html | 2 +- techniques/failures/F60.html | 8 ++++---- techniques/failures/F85.html | 6 +++--- techniques/general/G128.html | 2 +- techniques/general/G148.html | 2 +- techniques/general/G167.html | 2 +- techniques/general/G168.html | 4 ++-- techniques/general/G180.html | 2 +- techniques/general/G203.html | 4 ++-- techniques/general/G219.html | 1 - techniques/general/G55.html | 2 +- techniques/server-side-script/SVR5.html | 2 +- 12 files changed, 18 insertions(+), 19 deletions(-) diff --git a/techniques/css/C23.html b/techniques/css/C23.html index 6ad42083e9..b894085f55 100644 --- a/techniques/css/C23.html +++ b/techniques/css/C23.html @@ -3,7 +3,7 @@

    Description

    Some Web pages use colors to identify different groupings. The objective of this technique is to allow users to select specific color combinations for the text and background of the main content while retaining visual clues to the groupings and organization of the web page. When a user overrides the foreground and background colors of all the text on a page, visual clues to the grouping and organization of the Web page may be lost, making it much more difficult to understand and use.

    When an author does not specify the colors of the text and background of the main content, it is possible to change the colors of those regions in the browser without the need to override the colors with a user style sheet. Specifying the text and background colors of secondary content means that the browser will not override those colors.

    -

    With this technique the author uses the default text color and background color of the main area. As a result the colors are completely determined by the user agent via the user's color preferences. The user can ensure that the color selection best meets his needs and provides the best reading experience.

    +

    With this technique the author uses the default text color and background color of the main area. As a result the colors are completely determined by the user agent via the user's color preferences. The user can ensure that the color selection best meets their needs and provides the best reading experience.

    Examples

    diff --git a/techniques/failures/F60.html b/techniques/failures/F60.html index ef1024c307..2ed9dffcea 100644 --- a/techniques/failures/F60.html +++ b/techniques/failures/F60.html @@ -11,16 +11,16 @@

    This is a deprecated example showing a failure: A user is filling in - his mailing address. When he fills in his postal code, a new window - opens containing advertisements for services available in his city. + their mailing address. When they fills in their postal code, a new window + opens containing advertisements for services available in their city.

    -

    This example is acceptable: A user is filling in his mailing address - in a form. When he fills in the postal code field, a script runs to +

    This example is acceptable: A user is filling in their mailing address + in a form. When they fill in the postal code field, a script runs to validate that it is a valid postal code. If the value is not valid, a window opens with instructions on how to fill in the field.

    diff --git a/techniques/failures/F85.html b/techniques/failures/F85.html index b6cef107df..1cd8c708fa 100644 --- a/techniques/failures/F85.html +++ b/techniques/failures/F85.html @@ -1,12 +1,12 @@ 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

    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

    ID: F85

    Technology: failures

    Type: Failure

    When to Use

    All technologies.

    Description

    -

    This describes the failure condition that results when a Web page opens a dialog or menu interface component embedded on the page in a way that makes it difficult for a keyboard user to operate because of its position in the sequential navigation order. When the user opens the dialog or menu embedded on the page by activating a button or link, his next action will be to interact with the dialog or menu. If focus is not set to the dialog or menu, and it is not adjacent to the trigger control in the sequential navigation order, it will be difficult for the keyboard user to operate the dialog or menu.

    +

    This describes the failure condition that results when a Web page opens a dialog or menu interface component embedded on the page in a way that makes it difficult for a keyboard user to operate because of its position in the sequential navigation order. When the user opens the dialog or menu embedded on the page by activating a button or link, their next action will be to interact with the dialog or menu. If focus is not set to the dialog or menu, and it is not adjacent to the trigger control in the sequential navigation order, it will be difficult for the keyboard user to operate the dialog or menu.

    Examples

    Adding a dialog or menu embedded on the page to the end of the sequential navigation order

    -

    When a DHTML menu or dialog is activated, it is created dynamically, positioned visually near the trigger, and appended to the end of the DOM. Because it is appended to the end of the DOM, it is at the end of the sequential navigation order. The user must tab through the rest of the web page before he can interact with the dialog or menu.

    +

    When a DHTML menu or dialog is activated, it is created dynamically, positioned visually near the trigger, and appended to the end of the DOM. Because it is appended to the end of the DOM, it is at the end of the sequential navigation order. The user must tab through the rest of the web page before they can interact with the dialog or menu.

    @@ -43,4 +43,4 @@

    Setting focus to the document after dismissing a menu embedded on the page

    \ No newline at end of file +
    diff --git a/techniques/general/G128.html b/techniques/general/G128.html index c4f0ba1fd4..cf41c28813 100644 --- a/techniques/general/G128.html +++ b/techniques/general/G128.html @@ -1,7 +1,7 @@ Indicating current location within navigation bars

    Indicating current location within navigation bars

    ID: G128

    Technology: general

    Type: Technique

    When to Use

    All technologies.

    Description

    -

    The objective of this technique is to help orient the user by providing information about the current location via the navigational user interface component. This technique is especially useful when the Web pages are steps in a task that must be processed in order. Providing this indication helps the user to better understand his place in the sequence. The location may be indicated by adding an icon or text, or by changing the state of the item.

    +

    The objective of this technique is to help orient the user by providing information about the current location via the navigational user interface component. This technique is especially useful when the Web pages are steps in a task that must be processed in order. Providing this indication helps the user to better understand their place in the sequence. The location may be indicated by adding an icon or text, or by changing the state of the item.

    Examples

    diff --git a/techniques/general/G148.html b/techniques/general/G148.html index 19a8eae6f4..48cf2e0f8b 100644 --- a/techniques/general/G148.html +++ b/techniques/general/G148.html @@ -11,7 +11,7 @@

    Examples

    -

    The author specifies neither text color nor background, and does not use CSS. As a result the user can set his browser +

    The author specifies neither text color nor background, and does not use CSS. As a result the user can set their browser defaults to provide the colors and contrasts that work well for them.

    diff --git a/techniques/general/G167.html b/techniques/general/G167.html index 92bf6a355a..571658ab94 100644 --- a/techniques/general/G167.html +++ b/techniques/general/G167.html @@ -20,7 +20,7 @@

    A search function

    Picking a form

    -

    A user in the United States must fill in a form. Since the laws and requirements are different in different states within the United States, the user must select the version of a form for his state of residence. A dropdown list allows the user to pick a state. The adjacent button is labeled "Get Form for State." Pressing the button takes the user to the Web page containing the form for the selected state.

    +

    A user in the United States must fill in a form. Since the laws and requirements are different in different states within the United States, the user must select the version of a form for their state of residence. A dropdown list allows the user to pick a state. The adjacent button is labeled "Get Form for State." Pressing the button takes the user to the Web page containing the form for the selected state.

    Tests

    diff --git a/techniques/general/G168.html b/techniques/general/G168.html index 74e9c0325d..fa029a66f3 100644 --- a/techniques/general/G168.html +++ b/techniques/general/G168.html @@ -1,14 +1,14 @@ Requesting confirmation to continue with selected action

    Requesting confirmation to continue with selected action

    ID: G168

    Technology: general

    Type: Technique

    When to Use

    All technologies.

    Description

    -

    This technique is to seek confirmation from the user that the selected action is his or her intended action. Use this technique in situations where the action can not be undone after it has been followed through. This will help users avoid submitting a form or deleting data by mistake.

    +

    This technique is to seek confirmation from the user that the selected action is their intended action. Use this technique in situations where the action can not be undone after it has been followed through. This will help users avoid submitting a form or deleting data by mistake.

    For example, this may occur when the user expects the 'submit' and 'cancel' buttons to occur in an order contrary to what is provided and selects a button too quickly to notice the unexpected order. Presenting the user with a confirmation request allows the user to recognize the error and either stop the submission of data or stop the loss of entered data.

    The request for confirmation should inform the user of the action that was selected and the consequences of continuing with the action.

    Examples

    Airline travel

    -

    An online travel Web site lets users create travel itineraries that reserve seats with different airlines. Users may look up, amend and cancel their current itineraries. If the user needs to cancel his travel plans, he finds the itinerary on the Web page and deletes it from his list of current itineraries. This action results in the cancellation of his seat reservations and is not reversible. The user is informed that the selected action will cancel their current seat reservations and that it may not be possible to make a comparable booking on the same flights once this action has been taken. The user is asked to confirm or cancel the deletion of the itinerary.

    +

    An online travel Web site lets users create travel itineraries that reserve seats with different airlines. Users may look up, amend and cancel their current itineraries. If the user needs to cancel their travel plans, they find the itinerary on the Web page and delete it from their list of current itineraries. This action results in the cancellation of their seat reservations and is not reversible. The user is informed that the selected action will cancel their current seat reservations and that it may not be possible to make a comparable booking on the same flights once this action has been taken. The user is asked to confirm or cancel the deletion of the itinerary.

    diff --git a/techniques/general/G180.html b/techniques/general/G180.html index d885dec9fc..e5ca3de5cb 100644 --- a/techniques/general/G180.html +++ b/techniques/general/G180.html @@ -1,7 +1,7 @@ Providing the user with a means to set the time limit to 10 times the default time limit

    Providing the user with a means to set the time limit to 10 times the default time limit

    ID: G180

    Technology: general

    Type: Technique

    When to Use

    All technologies.

    Description

    -

    The objective of this technique is to give people with disabilities enough time to complete tasks which may take them longer than someone without those challenges. Some mechanism such as a preference setting or a control on the page lets the user change the time limits to at least 10 times the default time limit. Preferably, the mechanism would have a variable adjustment that lets the user change the time limit to any value in its range, but could also provide ways to change the time limit by discrete increments. The user changes the time limit at the beginning of his session, before any activity that has a time limit.

    +

    The objective of this technique is to give people with disabilities enough time to complete tasks which may take them longer than someone without those challenges. Some mechanism such as a preference setting or a control on the page lets the user change the time limits to at least 10 times the default time limit. Preferably, the mechanism would have a variable adjustment that lets the user change the time limit to any value in its range, but could also provide ways to change the time limit by discrete increments. The user changes the time limit at the beginning of their session, before any activity that has a time limit.

    Examples

    • An airline has an online ticket purchasing application. By default, the application has a 1 minute time limit for each step of the purchase process. At the beginning of the session, a Web page includes information that says, "We expect that each step in the purchasing process will take users one minute to complete. Would you like to adjust the time limit?" followed by several radio buttons "1 minute, 2 minutes, 5 minutes, 10 minutes."
    • diff --git a/techniques/general/G203.html b/techniques/general/G203.html index f2887b0df2..3ad688e5b4 100644 --- a/techniques/general/G203.html +++ b/techniques/general/G203.html @@ -13,9 +13,9 @@

      A video of a CEO speaking to shareholders

      -

      A CEO is speaking to shareholders from his office. The video has a title page at the beginning of the video giving the date. When the speaker begins, there is a strip of text at the bottom of the video saying "John Doe, President of XYZ Cooperation". At the end of the video are title credits that say "produced by the Honest TV Productions Ltd." +

      A CEO is speaking to shareholders from their office. The video has a title page at the beginning of the video giving the date. When the speaker begins, there is a strip of text at the bottom of the video saying "Jane Doe, President of XYZ Cooperation". At the end of the video are title credits that say "produced by the Honest TV Productions Ltd."

      -

      As an alternative, there is a paragraph below the video which is associated with the video file using aria-describedby which says: "July 22, 2011, John Doe, President of XYZ cooperation, speaking from his office. Video produced by the Honest TV Productions Ltd." +

      As an alternative, there is a paragraph below the video which is associated with the video file using aria-describedby which says: "July 22, 2011, Jane Doe, President of XYZ cooperation, speaking from her office. Video produced by the Honest TV Productions Ltd."

      diff --git a/techniques/general/G219.html b/techniques/general/G219.html index 42d965cd5f..bdf008ca66 100644 --- a/techniques/general/G219.html +++ b/techniques/general/G219.html @@ -31,7 +31,6 @@

      Examples

    • A list of items can be re-ordered by picking up an item and dragging it upwards or downwards. Other elements move dynamically to open a gap where the picked-up target can be dropped. After a single pointer activation, the list items display up and down arrows which allow a step-wise re-ordering of the list via single pointer inputs (taps or clicks at the up or down arrow).
    • A vertical priority list indicates the priority of items listed. Each item can be ‘picked up’ with a pointer and dragged up or down to another position. The other list items rearrange dynamically. To the left of each list item, a number in a text field shows the current priority position. For any of the items, users can put in another number. This leads to a dynamic reordering and renumbering of the priority list.
    • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks (for example, to change the status of a task from “in process” to “completed”). One or several items in a lane can be selected by a single tap or click. A single pointer activation of a drop-down menu labelled “Move selected items to” offers a selection of drop targets (other lanes). A further single pointer activation over the desired menu item moves targets to the specified lane.
    • -
    • In a Kanban implementation for process management, tasks can be dragged horizontally from one ‘swimming lane’ to another in order to change the status of tasks. A directional horizontal swipe over an item moves it to the adjacent lane. This process can be repeated until the item is in the desired lane.
    • In a radial control widget, the visual indicator of the current value of the control can be dragged to a different position. Users can also click or tap on another position of the radial control to change the value.
    diff --git a/techniques/general/G55.html b/techniques/general/G55.html index 9681e5ea84..33abfcbe54 100644 --- a/techniques/general/G55.html +++ b/techniques/general/G55.html @@ -2,7 +2,7 @@

    All technologies that include links.

    Description

    The objective of this technique is to make the definition of a word, phrase, or abbreviation available by providing the definition, either within the same Web page or in a different Web page, and establishing a link between the item and its definition.

    -

    Links are a powerful option for providing access to the definition of a word, phrase, or abbreviation. A user can use the link to find the definition quickly and easily, and then return to his place in the content via the user agent's Back button.

    +

    Links are a powerful option for providing access to the definition of a word, phrase, or abbreviation. A user can use the link to find the definition quickly and easily, and then return to their place in the content via the user agent's Back button.

    Examples

    diff --git a/techniques/server-side-script/SVR5.html b/techniques/server-side-script/SVR5.html index a156bd39e6..d38ab3bcb1 100644 --- a/techniques/server-side-script/SVR5.html +++ b/techniques/server-side-script/SVR5.html @@ -1,7 +1,7 @@ Specifying the default language in the HTTP header

    Specifying the default language in the HTTP header

    ID: SVR5

    Technology: server-side-script

    Type: Technique

    When to Use

    Server-side technologies, including server-side scripting languages and server configuration files for setting HTTP headers.

    Description

    -

    The objective of this technique is to provide information on the primary language or languages in a Web Page, in order to identify the audience of the content. The Content-Language HTTP header can contain a list of one or more language codes, which can be used for language negotiation between a user agent and a server. If the language preferences in a user agent are set correctly, language negotiation can help the user to find a language version of the content that suits his/her preferences.

    +

    The objective of this technique is to provide information on the primary language or languages in a Web Page, in order to identify the audience of the content. The Content-Language HTTP header can contain a list of one or more language codes, which can be used for language negotiation between a user agent and a server. If the language preferences in a user agent are set correctly, language negotiation can help the user to find a language version of the content that suits their preferences.

    Note that the Content-Language HTTP header does not serve to identify the language used for processing the content. The content processing language can be identified by means of other techniques, such as the attributes lang and xml:lang in markup languages.

    This technique ensures that the primary language of the document, as specified for example in the lang or xml:lang attribute, is listed in the Content-Language HTTP header.

    Examples

    From 9cfa546c3dd9bf592198436b4c1ff696000135bd Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 18 Jul 2022 15:49:42 -0400 Subject: [PATCH 34/73] Update error-identification.html --- understanding/20/error-identification.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/20/error-identification.html b/understanding/20/error-identification.html index 18bee81b34..f66850f499 100644 --- a/understanding/20/error-identification.html +++ b/understanding/20/error-identification.html @@ -83,7 +83,7 @@

    Intent of Error Identification

    See also - 3.3.1: Error Suggestion. + 3.3.3: Error Suggestion.

    From 890d4dda800885f02eb479dd45310b953fec649a Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Thu, 11 Aug 2022 07:37:42 -0400 Subject: [PATCH 35/73] Update text-spacing.html --- understanding/21/text-spacing.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/understanding/21/text-spacing.html b/understanding/21/text-spacing.html index 184920bd9e..d6eddb3972 100644 --- a/understanding/21/text-spacing.html +++ b/understanding/21/text-spacing.html @@ -40,12 +40,12 @@

    Text Cut Off

    The bottom portion of the words "Your Needs" is cut off in a heading making that text unreadable in Figure 1. It should read "We Provide a Mobile Application Service to Meet Your Needs."

    Vertical text cut off is a failure.
    - Heading text truncated vertically. + Heading text truncated vertically.

    In Figure 2 the last portion of text is cut off in 3 side-by-side headings. The 1st heading should read "A cog in the wheel." But it reads "A cog in the whe". Only half of the second "e" is visible and the letter "l" is completely missing. The 2nd heading should read "A penny for your thoughts". But it reads "A penny for your". The 3rd should read "Back to the drawing board." But it reads "Back to the drawi".

    Horizontal text cut off is a failure.
    - 3 side-by-side headings with truncated text. + 3 side-by-side headings with truncated text.
    From 041d077c57a0f33d595d960786d4b7a1c864722f Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Fri, 19 Aug 2022 10:17:38 -0400 Subject: [PATCH 36/73] update from 2.2 --- guidelines/sc/20/resize-text.html | 2 +- ...eneral-flash-and-red-flash-thresholds.html | 11 +++------- .../terms/20/programmatically-determined.html | 4 ++-- guidelines/terms/20/relative-luminance.html | 2 +- guidelines/terms/21/pointer-input.html | 7 +++---- guidelines/terms/21/target.html | 2 +- techniques/failures/F94.html | 2 +- understanding/20/parsing.html | 2 +- understanding/20/resize-text.html | 20 +++++++++---------- .../20/three-flashes-or-below-threshold.html | 6 ++++++ understanding/20/visual-presentation.html | 2 +- understanding/21/pointer-gestures.html | 2 ++ understanding/21/target-size-enhanced.html | 6 +++--- 13 files changed, 35 insertions(+), 33 deletions(-) diff --git a/guidelines/sc/20/resize-text.html b/guidelines/sc/20/resize-text.html index c8c28c9b89..689003cd1a 100644 --- a/guidelines/sc/20/resize-text.html +++ b/guidelines/sc/20/resize-text.html @@ -1,6 +1,6 @@
    -

    Resize text

    +

    Resize Text

    AA

    diff --git a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html index 94ff8358ce..1c620d36c4 100644 --- a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html +++ b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html @@ -20,7 +20,7 @@
      -
    • A general flash is defined as a pair of opposing changes in relative luminance of 10% or more of the maximum relative luminance where the relative luminance of +
    • A general flash is defined as a pair of opposing changes in relative luminance of 10% or more of the maximum relative luminance (1.0) where the relative luminance of the darker image is below 0.80; and where "a pair of opposing changes" is an increase followed by a decrease, or a decrease followed by an increase, and
    • @@ -35,12 +35,7 @@ viewing distance) on a side does not violate the thresholds.

      -

      For general software or Web content, using a 341 x 256 pixel rectangle anywhere on - the displayed screen area when the content is viewed at 1024 x 768 pixels will provide - a good estimate of a 10 degree visual field for standard screen sizes and viewing - distances (e.g., 15-17 inch screen at 22-26 inches). (Higher resolutions displays - showing the same rendering of the content yield smaller and safer images so it is - lower resolutions that are used to define the thresholds.) +

      For general software or Web content, using a 341 x 256 pixel rectangle anywhere on the displayed screen area when the content is viewed at 1024 x 768 pixels will provide a good estimate of a 10 degree visual field for standard screen sizes and viewing distances (e.g., 15-17 inch screen at 22-26 inches). This resolution of 75 - 85 ppi is known to be lower, and thus more conservative than the nominal CSS pixel resolution of 96 ppi in CSS specifications. Higher resolutions displays showing the same rendering of the content yield smaller and safer images so it is lower resolutions that are used to define the thresholds.

      A transition is the change in relative luminance (or relative luminance/color for @@ -48,7 +43,7 @@ relative luminance/color for red flashing) measurement against time. A flash consists of two opposing transitions.

      - +

      The current working definition in the field for "pair of opposing transitions involving a saturated red" is where, for either or both states involved in each transition, R/(R+ G + B) >= 0.8, and the change in the value of (R-G-B)x320 is > 20 (negative values of (R-G-B)x320 are set to zero) for both transitions. R, G, B values range from 0-1 as specified diff --git a/guidelines/terms/20/programmatically-determined.html b/guidelines/terms/20/programmatically-determined.html index 24d2994c17..ec6e1f0594 100644 --- a/guidelines/terms/20/programmatically-determined.html +++ b/guidelines/terms/20/programmatically-determined.html @@ -6,11 +6,11 @@ user agents, including assistive technologies, can extract and present this information to users in different modalities

      -

      Determined in a markup language from elements and attributes that are accessed directly +

      Determined in a markup language from elements and attributes that are accessed directly by commonly available assistive technology.

      -

      Determined from technology-specific data structures in a non-markup language and exposed +

      Determined from technology-specific data structures in a non-markup language and exposed to assistive technology via an accessibility API that is supported by commonly available assistive technology.

      diff --git a/guidelines/terms/20/relative-luminance.html b/guidelines/terms/20/relative-luminance.html index 93d748fbf5..81961386e7 100644 --- a/guidelines/terms/20/relative-luminance.html +++ b/guidelines/terms/20/relative-luminance.html @@ -36,7 +36,7 @@

    The "^" character is the exponentiation operator. (Formula taken from - [[IEC-4WD]]). + [[IEC-4WD]].)

    diff --git a/guidelines/terms/21/pointer-input.html b/guidelines/terms/21/pointer-input.html index 46f3e559cd..c71065cb18 100644 --- a/guidelines/terms/21/pointer-input.html +++ b/guidelines/terms/21/pointer-input.html @@ -1,11 +1,10 @@
    pointer input
    -

    input device that can target a specific coordinate (or set of coordinates) on a screen, +

    input from a device that can target a specific coordinate (or set of coordinates) on a screen, such as a mouse, pen, or touch contact

    - -

    See also Pointer Events pointer definition [[!pointerevents]]. -

    +

    See the Pointer Events + definition for "pointer" [[!pointerevents]].

    \ No newline at end of file diff --git a/guidelines/terms/21/target.html b/guidelines/terms/21/target.html index c834be56f2..5626161c81 100644 --- a/guidelines/terms/21/target.html +++ b/guidelines/terms/21/target.html @@ -2,6 +2,6 @@

    region of the display that will accept a pointer action, such as the interactive area of a user interface component

    -

    If two or more touch targets are overlapping, the overlapping area should not be included in the measurement of the target size, except when the overlapping targets perform the same action or open the same page.

    +

    If two or more targets are overlapping, the overlapping area should not be included in the measurement of the target size, except when the overlapping targets perform the same action or open the same page.

    diff --git a/techniques/failures/F94.html b/techniques/failures/F94.html index edd20c9d1c..fa9e3d6e68 100644 --- a/techniques/failures/F94.html +++ b/techniques/failures/F94.html @@ -21,7 +21,7 @@

    Description

    There are various methods to increase and decrease the size of text and other content, but viewport units applied to text (generally via font-size in CSS) prevent most available methods. Attempts to use browser controls to zoom or adjust text-size will not work. Only methods that completely override the CSS will work, and those could cause other issues such as layouts collapsing or text overlapping.

    Some uses of viewport units may not prevent text-size adjustments, but if they are used as the primary method for defining text-size, they are likely to cause a failure of Success Criterion 1.4.4.

    -

    If media queries were used to adjust the size of text or unit of measure at different screen sizes, it may not be a failure of Resize text. On-page controls provided by the author are also a way of passing the resize text success criteria.

    +

    If media queries were used to adjust the size of text or unit of measure at different screen sizes, it may not be a failure of Resize Text. On-page controls provided by the author are also a way of passing the resize text success criteria.

    Examples

    diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index 0abdadd950..ac5b3a8c25 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -46,7 +46,7 @@

    Intent of Parsing

    With the exception of one success criterion ( - 1.4.4: Resize text, which specifically mentions that the effect specified by the success criterion must + 1.4.4: Resize Text, which specifically mentions that the effect specified by the success criterion must be achieved without relying on an assistive technology) authors can meet the success criteria with content that assumes use of an assistive technology (or access features in use agents) by the user, where such assistive technologies (or access features diff --git a/understanding/20/resize-text.html b/understanding/20/resize-text.html index db361715f1..f2fad63bca 100644 --- a/understanding/20/resize-text.html +++ b/understanding/20/resize-text.html @@ -2,15 +2,15 @@ - Understanding Resize text + Understanding Resize Text -

    Understanding Resize text

    +

    Understanding Resize Text

    -

    Intent of Resize text

    +

    Intent of Resize Text

    The intent of this Success Criterion is to ensure that visually rendered text, including @@ -95,7 +95,7 @@

    Intent of Resize text

    -

    Benefits of Resize text

    +

    Benefits of Resize Text

      @@ -111,7 +111,7 @@

      Benefits of Resize text

    -

    Examples of Resize text

    +

    Examples of Resize Text

      @@ -141,7 +141,7 @@

      Examples of Resize text

    -

    Resources for Resize text

    +

    Resources for Resize Text

      @@ -181,11 +181,11 @@

      Resources for Resize text

    -

    Techniques for Resize text

    +

    Techniques for Resize Text

    -

    Sufficient Techniques for Resize text

    +

    Sufficient Techniques for Resize Text

      @@ -287,7 +287,7 @@

      Sufficient Techniques for Resize text

    -

    Additional Techniques (Advisory) for Resize text

    +

    Additional Techniques (Advisory) for Resize Text

      @@ -316,7 +316,7 @@

      Additional Techniques (Advisory) for Resize text

    -

    Failures for Resize text

    +

    Failures for Resize Text

      diff --git a/understanding/20/three-flashes-or-below-threshold.html b/understanding/20/three-flashes-or-below-threshold.html index e350304e39..794bd2fb85 100644 --- a/understanding/20/three-flashes-or-below-threshold.html +++ b/understanding/20/three-flashes-or-below-threshold.html @@ -46,6 +46,12 @@

      Intent of Three Flashes or Below Threshold

      With the proliferation of devices of varying screen sizes (from small hand-helds to large living room displays), as well as the adoption of CSS pixels as a density-independent unit of measurement, the prior assessment criteria may seem outdated. However, an image of a consistent size uses up relatively the same percentage of a user's visual field on any device. On a large screen, the image takes up less size, but the large screen takes up a larger part of the visual field. On a mobile screen, the image may take up most or all of the screen; however, the mobile screen itself takes up a smaller portion of the user's visual field. So the same dimension of the flashing content, represented in CSS pixels can still provide a consistent means of assessment. Substituting CSS pixels for the original pixel block means that the combined area of flashing becomes 341 x 256 CSS pixels, or a flashing area of 87,296 CSS pixels.

      +

      Content should be analyzed at the largest scale at which a user may view the content, and at the standard zoom level of the user agent. For example, with a video that may play in an area of a web page and also at full screen, the video should be analyzed for risks at full screen.

      + +

      Where video content is provided in color spaces other than sRGB, the version provided with the highest dynamic range should be tested. In such cases the industry standard definition of a general flash is a change in luminance of 20 cd/m2 or more where the darker image is below 160 cd/m2. (ITU-R BT.1702.) This is applicable for standard dynamic range (SDR) and high dynamic range (HDR) content. For HDR content when the darker state is 160 cd/m2 or more, a general flash is one where the Michelson contrast is 1/17 or greater — where the Michelson contrast is calculated as (LHigh - LLow) / (LHigh + LLow), and where LHigh and LLow are the luminance of the high and low luminance states, respectively.

      + +

      For short clips that might be looped (such as GIF animations), the content should be analyzed while looping.

      +

      The specification cannot account for the actual viewing distance that a person chooses. Users that are closer to their screens than the idealized viewing distance will be affected by flashing areas that normatively pass. The same problem applies to users who rely on zoom or screen magnification. Conversely, users who are further away from the screen than the idealized distance should be able to tolerate flashing areas that are larger than the threshold.

      The combined area of flashes occurring concurrently and contiguously means the total diff --git a/understanding/20/visual-presentation.html b/understanding/20/visual-presentation.html index a1771acec3..8f50372721 100644 --- a/understanding/20/visual-presentation.html +++ b/understanding/20/visual-presentation.html @@ -73,7 +73,7 @@

      Intent of Visual Presentation

      responsibility is to create Web content that does not prevent the user agent from scaling the content and that allows the reflow of the content within the current width of the viewport. See - 1.4.4: Resize text for additional discussion of resizing text. + 1.4.4: Resize Text for additional discussion of resizing text.

      The horizontal scrolling requirement is not intended to apply to small-screen devices diff --git a/understanding/21/pointer-gestures.html b/understanding/21/pointer-gestures.html index 38365af7e8..9a3404cbaf 100644 --- a/understanding/21/pointer-gestures.html +++ b/understanding/21/pointer-gestures.html @@ -48,6 +48,8 @@

      Challenges for people with disabilities

      This Success Criterion does not require all functionality to be available through pointing devices, but if it is available to pointer devices then it should not require path-based gestures. While content authors generally need to provide keyboard commands or other non-pointer mechanisms that perform actions equivalent to complex gestures (see Success Criterion 2.1.1 Keyboard), this is not sufficient to conform to this Success Criterion. That is because some users rely entirely on pointing devices, or find simple pointer inputs much easier to perform and understand than alternatives. For example, a user relying on a head-pointer would find clicking a control to be much more convenient than activating an on-screen keyboard to emulate a keyboard shortcut, and a person who has difficulty memorizing a series of keys (or gestures) may find it much easier to simply click on a labeled control. Therefore, if one or more pointer-based mechanisms are supported, then their benefits should be afforded to users through simple, single-point actions alone.

      +

      Single pointer operations include taps and clicks, double-taps and double-clicks, long presses, swiping, dragging, and path-based gestures. Gestures such as "pinch to zoom" or two-finger swipes are multipoint gestures, as they require two or more pointer inputs - in this case, two fingers on a touchscreen.

      +

      An exception is made for functionality that is inherently and necessarily based on complex paths or multipoint gestures. For example, entering your signature may be inherently path-based (although acknowledging something or confirming your identity need not be).

      Gestures that involve dragging in any direction are not in scope for this SC because only the start and end points matter in a dragging operation. However, such gestures do require fine motor control. Authors are encouraged to provide non-dragging methods, for instance, a drag and drop operation could also be achieved by selecting an item (with a tap or keyboard interaction) and then selecting its destination as a second step.

      diff --git a/understanding/21/target-size-enhanced.html b/understanding/21/target-size-enhanced.html index 76f63d2ef4..5ad3010126 100644 --- a/understanding/21/target-size-enhanced.html +++ b/understanding/21/target-size-enhanced.html @@ -35,7 +35,7 @@

      Benefits

      Examples

      • Example 1: Buttons
        - Three buttons are on-screen and the touch target area of each button is 44 by 44 CSS pixels.
      • + Three buttons are on-screen and the target area of each button is 44 by 44 CSS pixels.
    @@ -59,7 +59,7 @@

    Sufficient

    Techniques that are sufficient to meet the Guideline or Success Criterion.

      -
    • Ensuring that touch targets are at least 44 by 44 CSS pixels.
    • +
    • Ensuring that targets are at least 44 by 44 CSS pixels.
    • Ensuring inline links provide sufficiently large activation target.
    @@ -75,7 +75,7 @@

    Advisory

    Failure

    The following are common mistakes that are considered failures of Success Criterion 2.5.5 by the WCAG Working Group.

      -
    • Failure of success criterion 2.5.5 due to touch target being less than 44 by 44 CSS pixels.
    • +
    • Failure of success criterion 2.5.5 due to target being less than 44 by 44 CSS pixels.
    From a59b5a85cd8c675db03d48a95cd779a0d25373e2 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Fri, 26 Aug 2022 07:44:30 -0400 Subject: [PATCH 37/73] update from 2.2 --- understanding/20/contrast-enhanced.html | 5 ++--- understanding/20/contrast-minimum.html | 6 ++---- understanding/21/target-size-enhanced.html | 1 - 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index 203c4cf012..8a2ad8a374 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -96,9 +96,8 @@

    Intent of Contrast (Enhanced)

    in order to get a particular look.

    -

    Although this Success Criterion only applies to text, similar issues occur for content presented in charts, graphs, diagrams, and other non-text-based information. - Content presented in this manner should also have good contrast to ensure that more - users can access the information. +

    Although this Success Criterion only applies to text, similar issues occur for content presented in charts, graphs, diagrams, and other non-text-based information which is covered by + Success Criterion 1.4.11 Non-Text Contrast.

    diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index 6cb8bf5c40..5da419df08 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -106,10 +106,8 @@

    Intent of Contrast (Minimum)

    needs to provide sufficient contrast.

    -

    Although this Success Criterion only applies to text, similar issues occur for content presented in charts, graphs, diagrams, and other non-text-based information. - Content presented in this manner should also have good contrast to ensure that more - users can access the information. - +

    Although this Success Criterion only applies to text, similar issues occur for content presented in charts, graphs, diagrams, and other non-text-based information which is covered by + Success Criterion 1.4.11 Non-Text Contrast.

    See also diff --git a/understanding/21/target-size-enhanced.html b/understanding/21/target-size-enhanced.html index 5ad3010126..f1ce7499f8 100644 --- a/understanding/21/target-size-enhanced.html +++ b/understanding/21/target-size-enhanced.html @@ -37,7 +37,6 @@

    Examples

  • Example 1: Buttons
    Three buttons are on-screen and the target area of each button is 44 by 44 CSS pixels.
  • -

    Resources

    From 528be497527db98ea2968c08392a902af6be8503 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Fri, 2 Sep 2022 13:59:16 -0400 Subject: [PATCH 38/73] update from main --- understanding/20/language-of-page.html | 4 ++-- understanding/21/non-text-contrast.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/understanding/20/language-of-page.html b/understanding/20/language-of-page.html index ded6459457..1316529f94 100644 --- a/understanding/20/language-of-page.html +++ b/understanding/20/language-of-page.html @@ -26,7 +26,7 @@

    Intent of Language of Page

    The default human language of the Web page is the default text-processing language as discussed in - Internationalization Best Practices: Specifying Language in XHTML & HTML Content. When a Web page uses several languages, the default text-processing language is + Internationalization Best Practices: Specifying Language in XHTML & HTML Content. When a Web page uses several languages, the default text-processing language is the language which is used most. (If several languages are used equally, the first language used should be chosen as the default human language.) @@ -107,7 +107,7 @@

    Resources for Language of Page

  • - Internationalization Best Practices: Specifying Language in XHTML & HTML Content + Internationalization Best Practices: Specifying Language in XHTML & HTML Content
  • diff --git a/understanding/21/non-text-contrast.html b/understanding/21/non-text-contrast.html index 2d1c7cd2e7..b235dbafd3 100644 --- a/understanding/21/non-text-contrast.html +++ b/understanding/21/non-text-contrast.html @@ -503,13 +503,13 @@

    Techniques

    Sufficient

    -

    Situation A: Color is used to identify user interface components or used to identify user interface component states

    -
    +
    +

    Situation B: Color is required to understand graphical content

    • G207: Ensuring that a contrast ratio of 3:1 is provided for icons
    • From 0f7bf9bd7cef79b58c86b8e64969c468ab2ea2d5 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Fri, 9 Sep 2022 08:19:36 -0400 Subject: [PATCH 39/73] update from 2.2 --- guidelines/terms/20/relative-luminance.html | 2 +- understanding/20/focus-visible.html | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/guidelines/terms/20/relative-luminance.html b/guidelines/terms/20/relative-luminance.html index 81961386e7..b847259a34 100644 --- a/guidelines/terms/20/relative-luminance.html +++ b/guidelines/terms/20/relative-luminance.html @@ -36,7 +36,7 @@

    The "^" character is the exponentiation operator. (Formula taken from - [[IEC-4WD]].) + [[SRGB]].)

    diff --git a/understanding/20/focus-visible.html b/understanding/20/focus-visible.html index 08de64039b..5195e6e91f 100644 --- a/understanding/20/focus-visible.html +++ b/understanding/20/focus-visible.html @@ -17,8 +17,6 @@

    Intent of Focus Visible

    keyboard focus.

    -

    It must be possible for a person to know which element among multiple elements has the keyboard focus. If there is only one keyboard actionable control on the screen, the success criterion would be met because the visual design presents only one keyboard actionable item.

    -

    “Mode of operation” accounts for user agents which may not always show a focus indicator, or only show the focus indicator when the keyboard is used. User agents may optimise when the focus indicator is shown, such as only showing it when a keyboard is used. Authors are responsible for providing at least one mode of operation where the focus is visible. In most cases there is only one mode of operation so this success criterion applies. The focus indicator must not be time limited, when the keyboard focus is shown it must remain.

    Note that a keyboard focus indicator can take different forms. This criterion does not specify what the form is, but Focus Appearance (Minimum) does define how visible the indicator should be. Passing Focus Appearance (Minimum) would pass this success criterion.

    From f91285c588617f093789429b7d7678fb5058b141 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Mon, 28 Nov 2022 07:21:23 -0500 Subject: [PATCH 40/73] update from main 28 nov 2022 --- guidelines/sc/20/parsing.html | 14 +- ...eneral-flash-and-red-flash-thresholds.html | 6 +- guidelines/terms/20/relative-luminance.html | 2 +- techniques/aria/ARIA1.html | 289 ++++---------- techniques/aria/ARIA13.html | 1 - techniques/aria/ARIA15.html | 1 - techniques/aria/ARIA16.html | 1 - techniques/aria/ARIA2.html | 281 ++++++------- techniques/client-side-script/SCR16.html | 134 ++++--- techniques/client-side-script/SCR2.html | 105 +++-- techniques/css/C27.html | 1 - techniques/failures/F107.html | 103 +++-- techniques/failures/F43.html | 1 - techniques/failures/F44.html | 1 - techniques/failures/F46.html | 1 - techniques/general/G134.html | 368 ++++++------------ techniques/general/G220.html | 15 +- techniques/general/G55.html | 1 - techniques/general/G58.html | 1 - techniques/general/G59.html | 1 - techniques/general/G62.html | 1 - techniques/general/G73.html | 1 - techniques/general/G74.html | 1 - techniques/general/G82.html | 1 - techniques/general/G92.html | 1 - techniques/general/G94.html | 1 - techniques/html/H2.html | 91 +++-- techniques/html/H24.html | 89 +++-- techniques/html/H25.html | 101 +++-- techniques/html/H28.html | 119 +++--- techniques/html/H32.html | 116 +++--- techniques/html/H34.html | 125 +++--- techniques/html/H36.html | 88 +++-- techniques/html/H37.html | 91 +++-- techniques/html/H39.html | 92 +++-- techniques/html/H40.html | 118 +++--- techniques/html/H42.html | 153 ++++---- techniques/html/H43.html | 144 +++---- techniques/html/H44.html | 242 ++++++------ techniques/html/H45.html | 88 ++--- techniques/html/H48.html | 182 +++++---- techniques/html/H49.html | 118 +++--- techniques/html/H51.html | 119 +++--- techniques/html/H53.html | 1 - techniques/html/H56.html | 116 +++--- techniques/html/H57.html | 55 ++- techniques/html/H58.html | 49 +-- techniques/html/H59.html | 105 ++--- techniques/html/H64.html | 136 +++---- techniques/html/H67.html | 84 ++-- techniques/html/H69.html | 225 +++++------ techniques/html/H71.html | 232 +++++------ techniques/html/H74.html | 139 ++++--- techniques/html/H76.html | 112 +++--- techniques/html/H78.html | 125 +++--- techniques/html/H79.html | 170 ++++---- techniques/html/H81.html | 189 +++++---- techniques/html/H83.html | 82 ++-- techniques/html/H84.html | 119 +++--- techniques/html/H85.html | 200 +++++----- techniques/html/H86.html | 136 +++++-- techniques/html/H97.html | 158 +++++--- techniques/html/H98.html | 67 ++-- understanding/20/abbreviations.html | 5 - understanding/20/info-and-relationships.html | 6 - .../20/media-alternative-prerecorded.html | 13 - understanding/20/name-role-value.html | 2 +- understanding/20/non-text-content.html | 34 -- understanding/20/parsing.html | 30 +- .../20/three-flashes-or-below-threshold.html | 20 + understanding/20/unusual-words.html | 18 - 71 files changed, 3101 insertions(+), 2936 deletions(-) diff --git a/guidelines/sc/20/parsing.html b/guidelines/sc/20/parsing.html index dc5b0dce40..08a9244ba4 100644 --- a/guidelines/sc/20/parsing.html +++ b/guidelines/sc/20/parsing.html @@ -1,18 +1,8 @@

    Parsing

    + -

    A

    - -

    In content implemented using markup languages, elements have complete start and end - tags, elements are nested according to their specifications, elements do not contain - duplicate attributes, and any IDs are unique, except where the specifications allow - these features. -

    - -

    Start and end tags that are missing a critical character in their formation, such - as a closing angle bracket or a mismatched attribute value quotation mark are not - complete. -

    +

    This criterion has been removed.

    \ No newline at end of file diff --git a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html index 1c620d36c4..1713d8ab13 100644 --- a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html +++ b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html @@ -44,11 +44,7 @@ of two opposing transitions.

    -

    The current working definition in the field for "pair of opposing transitions involving a saturated red" is where, for either or both states involved in each transition, R/(R+ G + B) >= - 0.8, and the change in the value of (R-G-B)x320 is > 20 (negative values of (R-G-B)x320 - are set to zero) for both transitions. R, G, B values range from 0-1 as specified - in “relative luminance” definition. [[HARDING-BINNIE]] -

    +

    The new working definition in the field for "pair of opposing transitions involving a saturated red" (from WCAG 2.2) is a pair of opposing transitions where, one transition is either to or from a state with a value R/(R + G + B) that is greater than or equal to 0.8, and the difference between states is more than 0.2 (unitless) in the CIE 1976 UCS chromaticity diagram. [[ISO_9241-391]]

    Tools are available that will carry out analysis from video screen capture. However, no tool is necessary to evaluate for this condition if flashing is less than or equal diff --git a/guidelines/terms/20/relative-luminance.html b/guidelines/terms/20/relative-luminance.html index b847259a34..7f23a0f859 100644 --- a/guidelines/terms/20/relative-luminance.html +++ b/guidelines/terms/20/relative-luminance.html @@ -57,7 +57,7 @@ flash.

    -

    A MathML version of the relative luminance definition is available. +

    A separate page giving the relative luminance definition using MathML to display the formulas is available.

    diff --git a/techniques/aria/ARIA1.html b/techniques/aria/ARIA1.html index fc2403c9cb..f8233aed02 100644 --- a/techniques/aria/ARIA1.html +++ b/techniques/aria/ARIA1.html @@ -1,244 +1,103 @@ -Using the aria-describedby property to provide a descriptive label for user interface controls

    Using the aria-describedby property to provide a descriptive label for user interface controls

    ID: ARIA1

    Technology: aria

    Type: Technique

    When to Use

    -

    Technologies that support Accessible Rich Internet Applications (WAI-ARIA).

    -

    Description

    -

    The purpose of this technique is to demonstrate how to use the WAI-ARIA aria-describedby property to provide programmatically determined, descriptive information about a user interface element. The aria-describedby property may be used to attach descriptive information to one or more elements through the use of an id reference list. The id reference list contains one or more unique element ids.

    -

    Refer to Supporting ARIA in XHTML and HTML 4.01 for information on how to provide WAI-ARIA States and Properties with XHTML and HTML. WAI-ARIA States and Properties is compatible with other languages as well; refer to documentation in those languages.

    + + + Using the aria-describedby property to provide a descriptive label for user interface controls + + + +

    Using the aria-describedby property to provide a descriptive label for user interface controls

    +
    +

    ID: ARIA1

    +

    Technology: aria

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    Technologies that support Accessible Rich Internet Applications (WAI-ARIA).

    +
    +
    +

    Description

    +

    The purpose of this technique is to demonstrate how to use the WAI-ARIA aria-describedby property to provide programmatically determined, descriptive information about a user interface element. The aria-describedby property may be used to attach descriptive information to one or more elements through the use of an id reference list. The id reference list contains one or more unique element ids.

    +

    Refer to ARIA in HTML for information on how to provide WAI-ARIA States and Properties with HTML. WAI-ARIA States and Properties are compatible with other languages as well; refer to documentation in those languages.

    -

    The aria-describedby property is not designed to reference descriptions on an external resource — since it is an ID, it must reference an element in the same DOM document.

    +

    The aria-describedby property is not designed to reference descriptions on an external resource - since it is an id, it must reference an element in the same DOM document.

    -

    Examples

    -
    -

    Using aria-describedby property to describe a Close button's action

    - -

    A button that functions as a 'close' button on a dialog is described elsewhere in the document. The aria-describedby property is used to associate the description with the button.

    -
    <button aria-label="Close" aria-describedby="descriptionClose"
    -    onclick="myDialog.close()">X</button>
    -
    -...
    -
    -<div id="descriptionClose">Closing this window will discard any information entered and
    -return you back to the main page</div>
    -
    -

    Working example: Example 1 -

    - -
    +
    +
    +

    Examples

    -

    Using aria-describedby to associate instructions with form fields

    +

    Using aria-describedby to associate instructions with form fields

    -

    Sample form field using aria-describedby to associate instructions with form fields while there is a form label.

    -
    <form>
    -<label for="fname">First name</label>
    -<input name="" type="text" id="fname" aria-describedby="int2">
    -<p id="int2">A bit of instructions for this field linked with aria-describedby. </p>
    +            

    Sample form field using aria-describedby to associate instructions with form fields while there is a form label.

    +
    <form>
    +  <label for="fname">First name</label>
    +  <input aria-describedby="int2" autocomplete="given-name" id="fname" type="text">
    +  <p id="int2">Your first name is sometimes called your "given name".</p>
     </form>
     
    -

    Using aria-describedby property to provide more detailed information about the button

    +

    Using aria-describedby property to provide more detailed information about the button

    -
    <p><span id="fontDesc">Select the font faces and sizes to be used on this page</span>
    - <button id="fontB" onclick="doAction('Fonts');" aria-describedby="fontDesc">Fonts</button>
    -</p>
    -<p><span id="colorDesc">Select the colors to be used on this page</span>
    - <button id="colorB" onclick="doAction('Colors');" aria-describedby="colorDesc">Colors</button>
    -</p>
    -<p><span id="customDesc">Customize the layout and styles used on this page</span>
    - <button id="customB" onclick="doAction('Customize');" aria-describedby="customDesc">Customize</button>
    -</p>
    -
    - -
    -
    -

    Using aria-describedby to associate tooltips with form fields

    - -

    The following code snippet shows how to use aria-describedby and the onfocus="tooltipShow() function to display the tooltip when focus is placed on an element.

    -
    <html lang="en-us">
    -<head>
    -   <title>inline: Tooltip Example 1</title>
    -   <link rel="stylesheet" href="css/tooltip1_inline.css" type="text/css">
    -   <script type="text/javascript" src="js/tooltip1_inline.js"></script>
    -   <script type="text/javascript" src="../js/widgets_inline.js"></script>
    -   <script type="text/javascript" src="../js/globals.js"></script>
    -   <link rel="icon" href="http://www.cites.uiuc.edu/favicon.ico" type="image/x-icon">
    -   <link rel="shortcut icon" href="http://www.cites.uiuc.edu/favicon.ico" type="image/x-icon">
    -</head>
    -   ...
    -
    -<body onload="initApp()">
    -
    -<div id="container">
    -
    -<h1>Tooltip Example 1</h1>
    -<h2>Create Account</h2>
    -<div class="text">
    -<label for="first">First Name:</label>
    -
    -<input type="text" id="first" name="first" size="20"
    -      onmouseover="tooltipShow(event, this, 'tp1');"
    -      onfocus="tooltipShow(event, this, 'tp1');"
    -      aria-describedby="tp1"
    -      aria-required="false"/>
    -
    -<div id="tp1" role="tooltip" aria-hidden="true">Your first name is optional. </div>
    +
    <div>
    +  <span id="fontDesc">Select the font faces and sizes to be used on this page</span>
    +  <button aria-describedby="fontDesc" id="fontB" type="button">Fonts</button>
     </div>
    -
    - -
    -
    -

    XHTML

    - -

    This example is coded in XHTML with a MIME type of application/xhtml+xml. This MIME type is not supported in all user agents. The aria-describedby property is added directly into the XHTML markup, and no additional scripting is needed.

    - -
    <?xml version="1.0" encoding="UTF-8"?>
    -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+ARIA 1.0//EN"
    -"https://www.w3.org/WAI/ARIA/schemata/xhtml-aria-1.dtd">
    -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    -<head>
    -<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
    -<title>Demonstration of aria-describedby property</title>
    -<style type="text/css">
    -div.form p { clear:left; margin: 0.3em 0;}
    -.left {
    -  float:left;
    -  width:400px;
    -}
    -.right {
    -  width:100px;
    -  text-align:right;
    -}
    -</style>
    -</head>
    -<body>
    -<p>The buttons on this page use the Accessible Rich Internet Applications aria-describedby property
    -to provide more detailed information about the button action</p>
    -<div class="form">
    -<p><span class="left" id="fontDesc" >Select the font faces and sizes to be used on this page</span>
    -<span class="right"><button id="fontB" onclick="doAction('Fonts');" aria-describedby="fontDesc">
    -Fonts </button></span></p>
    -<p><span class="left" id="colorDesc" >Select the colors to be used on this page</span>
    -<span class="right"><button id="colorB" onclick="doAction('Colors');" aria-describedby="colorDesc">
    -Colors </button></span></p>
    -<p><span class="left" id="customDesc" >Customize the layout and styles used on this page</span>
    -<span class="right"><button id="customB" onclick="doAction('Customize');" aria-describedby="customDesc">
    -Customize </button></span></p>
    +<div>
    +  <span id="colorDesc">Select the colors to be used on this page</span>
    +  <button aria-describedby="colorDesc" id="colorB" type="button">Colors</button>
     </div>
    -</body>
    -</html>
    -
    -
    -
    -

    HTML

    - -

    This example uses scripting to add an aria-describedby property to buttons on a page. The example creates a buttonIds array variable to hold the ids of the elements that contain description text. The setDescribedBy() function is called from the onload event of the window object.

    -

    The setDescribedBy() function loops through all of the button elements and calls setAttribute() on each button element to set the aria-describedby property. Each button's aria-describedby property is set to the id of the element containing its descriptive text.

    -

    Using a user agent and/or assistive technology which supports WAI-ARIA, the description will be provided when the user interface controls receive focus.

    - -
    <html lang="en-us">
    -<head>
    -<meta http-equiv="content-type" content="text/html; charset=utf-8" />
    -<title>Demonstration of aria-describedby property</title>
    -<style type="text/css">
    -div.form p { clear:left; margin: 0.3em 0;}
    -.left {
    -  float:left;
    -  width:400px;
    -}
    -.right {
    -  width:100px;
    -  text-align:right;
    -}
    -</style>
    -<script type="text/javascript">
    -//<![CDATA[
    -
    -// array entries for each button on the page that associates the button id
    -// with the id of the element containing the text which describes the button
    -var buttonIds = new Array();
    -buttonIds["fontB"]= "fontDesc";
    -buttonIds["colorB"] = "colorDesc";
    -buttonIds["customB"] = "customDesc";
    -
    -// function that is run after the page has loaded to set the aria-describedBy
    -// property on each of the elements referenced by the array of id values
    -function setDescribedBy(){
    -  if (buttonIds){
    -    var buttons = document.getElementsByTagName("button");
    -    if (buttons){
    -      var buttonId;
    -      for(var i=0; i<buttons.length; i++){
    -        buttonId = buttons[i].id;
    -        if (buttonId && buttonIds[buttonId]){
    -          buttons[i].setAttribute("aria-describedby", buttonIds[buttonId]);
    -        }
    -      }
    -    }
    -  }
    -}
    -
    -// simulated action function - currently just displays an alert
    -function doAction(theAction){
    -  alert("Perform the " + theAction + " action");
    -}
    -
    -window.onload=setDescribedBy;
    -
    -//]]>
    -</script>
    -</head>
    -<body>
    -<p>The buttons on this page use the Accessible Rich Internet Applications
    -aria-describedby property to provide more detailed information
    -about the button action.
    -</p>
    -<div class="form">
    -<p><span class="left" id="fontDesc" >Select the font faces and sizes to be used on this page</span>
    -  <span class="right"><button id="fontB" onclick="doAction('Fonts');"> Fonts </button></span>
    -</p>
    -<p><span class="left" id="colorDesc" >Select the colors to be used on this page</span>
    -  <span class="right"><button id="colorB" onclick="doAction('Colors');"> Colors </button></span>
    -</p>
    -<p><span class="left" id="customDesc" >Customize the layout and styles used on this page</span>
    -  <span class="right"><button id="customB" onclick="doAction('Customize');"> Customize </button></span>
    -</p>
    +<div>
    +  <span id="customDesc">Customize the layout and styles used on this page</span>
    +  <button aria-describedby="customDesc" id="customB" type="button">Customize</button>
     </div>
    -</body>
     
    +
    -

    Tests

    -

    Procedure

    + +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Check that there is a user interface control having an aria-describedby attribute that references one or more elements via unique id.
    2. +
    3. Check that there is a user interface control having an aria-describedby attribute that references one or more elements via unique id.
    4. Check that the referenced element or elements provide additional information about the user interface control.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • Checks #1 and #2 are true.
    • +
    • Checks #1 and #2 are true.
    -

    Resources

    - +
    + +
    +

    Resources

    - -
    \ No newline at end of file +
    + + \ No newline at end of file diff --git a/techniques/aria/ARIA13.html b/techniques/aria/ARIA13.html index b7e5973726..699427d650 100644 --- a/techniques/aria/ARIA13.html +++ b/techniques/aria/ARIA13.html @@ -58,7 +58,6 @@

    Identification for Application landmarks

  • ARIA16
  • ARIA7
  • G92
  • -
  • H45
  • Resources

      diff --git a/techniques/aria/ARIA15.html b/techniques/aria/ARIA15.html index aea3c297f7..6b97c98959 100644 --- a/techniques/aria/ARIA15.html +++ b/techniques/aria/ARIA15.html @@ -38,7 +38,6 @@

      Describing an image

    • ARIA6
    • ARIA16
    • G92
    • -
    • H45

    Resources

      diff --git a/techniques/aria/ARIA16.html b/techniques/aria/ARIA16.html index 217be4ccc8..8daf39b8a4 100644 --- a/techniques/aria/ARIA16.html +++ b/techniques/aria/ARIA16.html @@ -72,7 +72,6 @@

      A label from multiple sources

    • ARIA7
    • ARIA13
    • G92
    • -
    • H45

    Resources

      diff --git a/techniques/aria/ARIA2.html b/techniques/aria/ARIA2.html index 765b47e27e..ce841e7d16 100644 --- a/techniques/aria/ARIA2.html +++ b/techniques/aria/ARIA2.html @@ -1,203 +1,144 @@ -Identifying a required field with the aria-required property

      Identifying a required field with the aria-required property

      ID: ARIA2

      Technology: aria

      Type: Technique

      When to Use

      + + + + Identifying a required field with the aria-required property + + + +

      Identifying a required field with the aria-required property

      +
      +

      ID: ARIA2

      +

      Technology: aria

      +

      Type: Technique

      +
      +
      +

      When to Use

      Technologies that support Accessible Rich Internet Applications (WAI-ARIA).

      -

      Description

      +
      +
      +

      Description

      The objective of this technique is to provide programmatic indication that a form field (which shown through presentation to be required) is mandatory for successful submission of a form.

      The fact that the element is required is often visually presented (via a text or non-text symbol, or text indicating input is required or color / styling) but this is not programmatically determinable as part of the field's name.

      -

      The WAI-ARIA aria-required property indicates that user input is required before submission. The aria-required property can have values of true or false. For example, if a user must fill in an address field, then aria-required is set to true.

      +

      The WAI-ARIA aria-required property indicates that user input is required before submission. The aria-required property can have values of true or false. For example, if a user must fill in an address field, then aria-required is set to true.

      -

      Use of aria-required="true" might be beneficial even when an asterisk or other text symbol is programmatically associated with the field as it may reinforce its required property for some assistive technology users.

      -

      The fact that the element is required is often visually presented (such as a sign or symbol after the control). Using the aria-required property in addition to the visual presentation makes it much easier for user agents to pass on this important information to the user in a user agent-specific manner. Refer to Supporting ARIA in XHTML and HTML 4.01 for information on how to provide WAI-ARIA States and Properties with XHTML and HTML. WAI-ARIA States and Properties is compatible with other languages as well; refer to documentation in those languages.

      +

      Use of aria-required="true" might be beneficial even when an asterisk or other text symbol is programmatically associated with the field as it may reinforce its required property for some assistive technology users.

      +

      The fact that the element is required is often visually presented (such as a sign or symbol after the control). Using the aria-required property in addition to the visual presentation makes it much easier for user agents to pass on this important information to the user in a user agent-specific manner. Refer to ARIA in HTML for information on how to provide WAI-ARIA States and Properties with HTML. WAI-ARIA States and Properties are compatible with other languages as well; refer to documentation in those languages.

      -

      Examples

      +
      +
      +

      Examples

      -

      +

      The required property is indicated by an asterisk placed in the label element

      -

      The required property is indicated by an asterisk placed next to the label element:

      -
      -<form action="#" method="post"  id="login1" onsubmit="return errorCheck1()">
      -  <p>Note: [*]denotes mandatory field</p>
      -  <p>
      -    <label for="usrname">Login name: </label>
      -    <input type="text" name="usrname" id="usrname" aria-required="true"/>[*]
      -  </p>
      -  <p>
      -    <label for="pwd">Password</label>
      -    <input type="password" name="pwd" id="pwd" size="12" aria-required="true" />[*]
      -  </p>
      -  <p>
      -    <input type="submit" value="Login" id="next_btn" name="next_btn"/>
      -  </p>
      -
      -</form>		
      +
      +<form action="#" method="post">
      +  <p>Note: * denotes a required field</p>
      +  <div>
      +    <label for="usrname">Login name *:</label>
      +    <input aria-required="true" autocomplete="username" id="usrname" type="text">
      +  </div>
      +  <div>
      +    <label for="pwd">Password *:</label>
      +    <input aria-required="true" autocomplete="current-password" id="pwd" type="password">
      +  </div>
      +  <div>
      +    <input type="submit" value="Login">
      +  </div>
      +</form>
      -
      -
      -

      +
      +
      +

      The required property is indicated by the word "required" placed next to the label element

      -

      The required property is indicated by the word "required" placed next to the label element:

      -<form action="#" method="post" id="step1" onsubmit="return errorCheck2()">
      -  <p>
      -    <label for="fname">First name: </label>
      -    <input type="text" id="fname" aria-required="true" />
      -    [required]
      -  </p>
      -  <p>
      -    <label for="mname">Middle name: </label>
      -    <input type="text" id="mname" />
      -  </p>
      -  <p>
      -    <label for="lname">Last name: </label>
      -    <input type="text" id="lname" aria-required="true" />
      -    [required]
      -  </p>
      -  <p>
      -    <label for="email">Email address: </label>
      -    <input type="text" id="email" aria-required="true" />
      -    [required]
      -  </p>
      -  <p>
      -    <label for="zip_post">Zip / Postal code: </label>
      -    <input type="text" id="zip_post" size="6" aria-required="true" />
      -    [required]
      -  </p>
      -  <p>
      -    <input type="submit" value="Next Step" id="step_btn" name="step_btn" />
      -  </p>
      -</form> 
      +<form action="#" method="post"> + <div> + <label for="fname">First name:</label> <span>(required)</span> + <input aria-required="true" autocomplete="given-name" id="fname" type="text"> + </div> + <div> + <label for="mname">Middle name:</label> <span>(required)</span> + <input autocomplete="additional-name" id="mname" type="text"> + </div> + <div> + <label for="lname">Last name:</label> <span>(required)</span> + <input aria-required="true" autocomplete="family-name" id="lname" type="text"> + </div> + <div> + <label for="email">Email address:</label> <span>(required)</span> + <input aria-required="true" autocomplete="email" id="email" type="text"> + </div> + <div> + <label for="zip_post">Zip / Postal code:</label> <span>(required)</span> + <input aria-required="true" autocomplete="postal-code" id="zip_post" type="text"> + </div> + <div> + <input type="submit" value="Next Step"> + </div> +</form>
      -

      +

      Required fields are indicated by a red border around the fields and a star icon rendered via CSS using content::after

      -

      Required fields are indicated by a red border around the fields and a star icon rendered via CSS using content:before. This example also uses custom radio buttons with role=radio but the script to make the span actually work like radio buttons is not included in this example. The CSS properties are available below the form. +

      This example also uses custom radio buttons with role=radio but the script to make the span actually work like radio buttons is not included in this example. The CSS properties are available below the form.

      -
      -<form action="#" method="post" id="alerts1">
      -  <label for="acctnum" data-required="true">Account Number</label>
      -  <input size="12" type="text" id="acctnum"
      -      aria-required="true" name="acctnum" />
      +
      +<form action="#" method="post">
      +  <label data-required="true" for="acctnum">Account Number</label>
      +  <input aria-required="true" id="acctnum" type="text">
       
      - <p id="radio_label" data-required="true">Please send an alert when balance exceeds $3,000.</p>
      +  <p data-required="true" id="radio_label">
      +    Please send an alert when balance exceeds $3,000.
      +  </p>
       
      - <ul  id="rg" role="radiogroup" aria-required="true" aria-labelledby="radio_label">
      -    <li id="rb1" role="radio">Yes</li>
      -    <li id="rb2" role="radio">No</li>
      - </ul>
      +  <ul aria-required="true" aria-labelledby="radio_label" role="radiogroup">
      +    <li aria-checked="false" id="rb1" role="radio" tabindex="0">Yes</li>
      +    <li aria-checked="false" id="rb2" role="radio" tabindex="-1">No</li>
      +  </ul>
       </form>
      - 
      +

      Related CSS style definition for this example:

      -
      +
       [aria-required=true] {
         border: red thin solid;
       }
      -[data-required=true]:after {
      +[data-required=true]::after {
         content: url('/iconStar.gif');
       }
      - 
      - -
      -
      -

      A required text input field in XHTML

      - -

      The following example shows an XHTML document using the aria-required property to indicate that a form field must be submitted. The mandatory nature of the field is also indicated in the label as a fallback for user agents that do not support WAI-ARIA.

      - -
      -<?xml version="1.0" encoding="UTF-8"?>
      -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1
      -    For Accessible Adaptable Applications//EN"
      -  "https://www.w3.org/WAI/ARIA/schemata/xhtml-aria-1.dtd">
      -<html xmlns="http://www.w3.org/1999/xhtml"
      -          xml:lang="en">
      -  <head>
      -    <title>Required Input</title>
      -  </head>
      -  <body>
      -    <h1>Required Input</h1>
      -    <p>The following form input field must be completed by the user
      -    before the form can be submitted.</p>
      -    <form action="http://example.com/submit">
      -      <p>
      -        <label for="test">Test (required)</label>
      -        <input name="ariaexample" id="example" aria-required="true" aria-label="Test"/>
      -      </p>
      -      <p>
      -        <input type="submit" value="Submit" />
      -      </p>
      -    </form>
      -  </body>
      -</html>
      -		
      -
      -
      -

      Adding aria-required property via script

      - -

      This example uses scripting to add the aria-required property to a form element. The required property is assigned using the setAttribute() API.

      -

      The array variable, requiredIds, is created with the ids of the elements which need to be marked as required. The setRequired() function is called from the onload event of the window object.

      -

      The setRequired() function loops through all of the ids provided, retrieves the element and assigns the aria-required property of true using the setAttribute() function.

      -

      When this page is accessed using Firefox 3.0 or later and a screen reader that supports WAI-ARIA, the screen reader will speak "required" when reading the label for the input fields.

      - -
      <head>
      - <script type="text/javascript">
      - //<![CDATA[
      -
      - // array or ids on the required fields on this page
      - var requiredIds = new Array( "firstName", "lastName");
      -
      - // function that is run after the page has loaded to set the aria-required property on each of the
      - //elements in requiredIds array of id values
      - function setRequired(){
      - 	if (requiredIds){
      - 		var field;
      - 		for (var i = 0; i< requiredIds.length; i++){
      - 			field = document.getElementById(requiredIds[i]);
      - 			field.setAttribute("aria-required", "true");
      - 		}
      - 	}
      - }
      - window.onload=setRequired;
      -//]]>
      - </script>
      - </head>
      - <body>
      - <p>Please enter the following data.  Required fields have been programmatically identified
      - as required and  marked with an asterisk (*) following the field label.</p>
      - <form action="submit.php">
      - <p>
      - <label for="firstName">First Name *: </label><input type="text" name="firstName"
      -    id="firstName" value="" />
      - <label for="lastName">Last Name *: </label><input type="text" name="lastName"
      -    id="lastName"  value="" />
      - </p>
      - </form>
      - </body>
       
      -
      -

      Tests

      -

      Procedure

      +
      +
      +
      +

      Tests

      +
      +

      Procedure

      For each control which is shown via presentation to be required.

        -
      1. Check whether the aria-required attribute is present:
      2. -
      3. Check whether the value of the aria-required attribute is the correct required state of the user interface component.
      4. +
      5. Check whether the aria-required attribute is present:
      6. +
      7. Check whether the value of the aria-required attribute is the correct required state of the user interface component.
      -

      Expected Results

      +
      +

      Expected Results

      • Checks #1 and #2 are true
      -

      Resources

      - - - -
      \ No newline at end of file +
      +
      +

      Resources

      + +
      + + \ No newline at end of file diff --git a/techniques/client-side-script/SCR16.html b/techniques/client-side-script/SCR16.html index 6b6efd59e7..9a32fc21bc 100644 --- a/techniques/client-side-script/SCR16.html +++ b/techniques/client-side-script/SCR16.html @@ -1,79 +1,87 @@ -Providing a script that warns the user a time limit is about to expire

      Providing a script that warns the user a time limit is about to expire

      ID: SCR16

      Technology: client-side-script

      Type: Technique

      When to Use

      -

      -Time limits exist that are controlled by script. -

      -

      Description

      -

      -The objective of this technique is to notify users that they are almost out of time to complete an interaction. When scripts provide functionality that has time limits, the script can include functionality to warn the user of imminent time limits and provide a mechanism to request more time. 20 seconds or more before the time limit occurs, the script provides a confirm dialog that states that a time limit is imminent and asks if the user needs more time. If the user answers "yes" then the time limit is reset. If the user answers "no" or does not respond, the time limit is allowed to expire. -

      -

      -This technique involves time limits set with the window.setTimeout() method. If, for example, the time limit is set to expire in 60 seconds, you can set the time limit for 40 seconds and provide the confirm dialog. When the confirm dialog appears, a new time limit is set for the remaining 20 seconds. Upon expiry of the "grace period time limit" the action that would have been taken at the expiry of the 60 second time limit in the original design is taken. -

      -

      Examples

      + + + Providing a script that warns the user a time limit is about to expire + + + +

      Providing a script that warns the user a time limit is about to expire

      +
      +

      ID: SCR16

      +

      Technology: client-side-script

      +

      Type: Technique

      +
      +
      +

      When to Use

      +

      Time limits exist that are controlled by script.

      +
      +
      +

      Description

      +

      The objective of this technique is to notify users that they are almost out of time to complete an interaction. When scripts provide functionality that has time limits, the script can include functionality to warn the user of imminent time limits and provide a mechanism to request more time. 20 seconds or more before the time limit occurs, the script provides a confirm dialog that states that a time limit is imminent and asks if the user needs more time. If the user answers "yes" then the time limit is reset. If the user answers "no" or does not respond, the time limit is allowed to expire.

      +

      This technique involves time limits set with the window.setTimeout() method. If, for example, the time limit is set to expire in 60 seconds, you can set the time limit for 40 seconds and provide the confirm dialog. When the confirm dialog appears, a new time limit is set for the remaining 20 seconds. Upon expiry of the "grace period time limit" the action that would have been taken at the expiry of the 60 second time limit in the original design is taken.

      +
      +
      +

      Examples

      -

      -A page of stock market quotes uses script to refresh the page every five minutes in order to ensure the latest statistics remain available. 20 seconds before the five minute period expires, a confirm dialog appears asking if the user needs more time before the page refreshes. This allows the user to be aware of the impending refresh and to avoid it if desired. -

      +

      A page of stock market quotes uses script to refresh the page every five minutes in order to ensure the latest statistics remain available. 20 seconds before the five minute period expires, a confirm dialog appears asking if the user needs more time before the page refreshes. This allows the user to be aware of the impending refresh and to avoid it if desired.

      -
      -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      -   "https://www.w3.org/TR/html4/loose.dtd">
      +
      +<!doctype html>
       <html lang="en">
       <head>
      -<title>Stock Market Quotes</title>
      -<script type="text/javascript">
      -<!--
      -function timeControl() {
      -	// set timer for 4 min 40 sec, then ask user to confirm.
      -	setTimeout('userCheck()', 280000);
      -}
      -function userCheck() {
      -	// set page refresh for 20 sec
      -	var id=setTimeout('pageReload()', 20000);
      -	// If user selects "OK" the timer is reset 
      -	// else the page will refresh from the server.
      -	if (confirm("This page is set to refresh in 20 seconds. 
      -	Would you like more time?"))
      -	{
      -	clearTimeout(id);
      -	timeControl();
      -	}
      -}
      -function pageReload() {
      -	window.location.reload(true);
      -}
      -timeControl();
      --->
      -</script>
      +  <meta charset="utf-8">
      +  <title>Stock Market Quotes</title>
      +  <script>
      +    function timeControl() {
      +      // set timer for 4 min 40 sec, then ask user to confirm.
      +      setTimeout('userCheck()', 280000);
      +    }
      +    function userCheck() {
      +      // set page refresh for 20 sec
      +      var id=setTimeout('pageReload()', 20000);
      +      // If user selects "OK" the timer is reset 
      +      // else the page will refresh from the server.
      +      if (confirm("This page is set to refresh in 20 seconds. 
      +        Would you like more time?"))
      +        {
      +          clearTimeout(id);
      +          timeControl();
      +        }
      +    }
      +    function pageReload() {
      +      window.location.reload(true);
      +    }
      +    timeControl();
      +  </script>
       </head>
       <body>
      -<h1>Stock Market Quotes</h1>
      -...etc...
      +  <h1>Stock Market Quotes</h1>
      +  ...
       </body>
      -</html>
      -
      +</html>
      -

      Tests

      +
      +
      +

      Tests

      Procedure

      -

      -On a Web page that has a time limit controlled by a script:

      +

      On a Web page that has a time limit controlled by a script:

        -
      1. -load the page and start a timer that is 20 seconds less than the time limit. -
      2. -
      3. -when the timer expires, check that a confirmation dialog is displayed warning of the impending time limit. -
      4. +
      5. Load the page and start a timer that is 20 seconds less than the time limit.
      6. +
      7. When the timer expires, check that a confirmation dialog is displayed warning of the impending time limit.
      -

      Expected Results

      +
      +

      Expected Results

        -
      • -#2 is true. -
      • +
      • #2 is true.
      -
      \ No newline at end of file +
      + + + \ No newline at end of file diff --git a/techniques/client-side-script/SCR2.html b/techniques/client-side-script/SCR2.html index 32db521d84..862069616c 100644 --- a/techniques/client-side-script/SCR2.html +++ b/techniques/client-side-script/SCR2.html @@ -1,75 +1,94 @@ -Using redundant keyboard and mouse event handlers

      Using redundant keyboard and mouse event handlers

      ID: SCR2

      Technology: client-side-script

      Type: Technique

      When to Use

      -

      HTML and XHTML with scripting support.

      -

      Description

      -

      The objective of this technique is to demonstrate using device independent events to change a decorative image in response to a mouse or focus event. Use the onmouseover and onmouseout events to change a decorative image when the mouse moves on top of or away from an element on the page. Also, use the onfocus and onblur events to change the image when the element receives and loses focus.

      -

      The example below has a decorative image in front of an anchor element. When the user mouses over the anchor tag, the decorative image in front of the anchor is changed. When the mouse moves off of the anchor, the image is changed back to its original version. The same image change effect occurs when the user gives keyboard focus to the anchor element. When focus is received the image changes, when focus is lost the image is changed back. This is accomplished by attaching onmouseover, onmouseout, onfocus and onblur event handlers to the anchor element. The event handler is a JavaScript function called updateImage(), which changes the src attribute of the image. The updateImage() is called in response to the onmouseover, onmouseout, onfocus, and onblur events.

      -

      Each image is given a unique id. This unique id is passed to updateImage() along with a boolean value indicating which image is to be used: updateImage(imgId, isOver);. The boolean value of true is passed when the mouse is over the anchor element or it has focus. A false value is passed when the mouse moves off of the anchor element or it loses focus. The updateImage() function uses the image id to load the image and then changes the src attribue based on the boolean value. Note that since the image is for decorative purposes, it has a null alt attribute.

      + + + + Using redundant keyboard and mouse event handlers + + + +

      Using redundant keyboard and mouse event handlers

      +
      +

      ID: SCR2

      +

      Technology: client-side-script

      +

      Type: Technique

      +
      +
      +

      When to Use

      +

      HTML with scripting support.

      +
      +
      +

      Description

      +

      The objective of this technique is to demonstrate using device independent events to change a decorative image in response to a mouse or focus event. Use the onmouseover and onmouseout events to change a decorative image when the mouse moves on top of or away from an element on the page. Also, use the onfocus and onblur events to change the image when the element receives and loses focus.

      +

      The example below has a decorative image in front of an anchor element. When the user mouses over the anchor tag, the decorative image in front of the anchor is changed. When the mouse moves off of the anchor, the image is changed back to its original version. The same image change effect occurs when the user gives keyboard focus to the anchor element. When focus is received the image changes, when focus is lost the image is changed back. This is accomplished by attaching onmouseover, onmouseout, onfocus and onblur event handlers to the anchor element. The event handler is a JavaScript function called updateImage(), which changes the src attribute of the image. The updateImage() is called in response to the onmouseover, onmouseout, onfocus, and onblur events.

      +

      Each image is given a unique id. This unique id is passed to updateImage() along with a boolean value indicating which image is to be used: updateImage(imgId, isOver);. The boolean value of true is passed when the mouse is over the anchor element or it has focus. A false value is passed when the mouse moves off of the anchor element or it loses focus. The updateImage() function uses the image id to load the image and then changes the src attribute based on the boolean value. Note that since the image is for decorative purposes, it has a null alt attribute.

      -

      It is best to use images that are similar in size and to specify the height and width attributes on the image element. This will prevent any changes to the layout of the page when the image is updated. This example uses images which are identical in size.

      +

      It is best to use images that are similar in size and to specify the height and width attributes on the image element. This will prevent any changes to the layout of the page when the image is updated. This example uses images which are identical in size.

      -

      Examples

      +
      +
      +

      Examples

      -
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "https://www.w3.org/TR/html4/loose.dtd">
      - <html lang="en">
      - <head>
      - <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
      - <title>Changing Image Source in a Device Independent Manner</title>
      - <script type="text/javascript">
      - /* This function will change the image src of an image element.
      -  * param imgId - the id of the image object to change
      -  * param isOver - true when mouse is over or object has focus,
      -  *                false when mouse move out or focus is lost
      - */
      - function updateImage(imgId, isOver) {
      -   var theImage = document.getElementById(imgId);
      -   if (theImage != null) { //could use a try/catch block for user agents supporting at least JavaScript 1.4
      -                           // These browsers support try/catch - NetScape 6, IE 5, Mozilla, Firefox
      +
      <!doctype html>
      +<html lang="en">
      +<head>
      +  <meta charset="utf-8">
      +  <title>Changing Image Source in a Device Independent Manner</title>
      +  <script>
      +    /* This function will change the image src of an image element.
      +     * param imgId - the id of the image object to change
      +     * param isOver - true when mouse is over or object has focus,
      +      false when mouse move out or focus is lost
      +    */
      +    function updateImage(imgId, isOver) {
      +    var theImage = document.getElementById(imgId);
      +    if (theImage != null) {
             if (isOver) {
               theImage.setAttribute("src","yellowplus.gif");
             }
             else {
               theImage.setAttribute("src","greyplus.gif");
             }
      -   }
      - }
      - </script>
      +    }
      +  }
      +  </script>
        </head>
        <body>
        <p>Mouse over or tab to the links below and see the image change.</p>
      - <a href="https://www.w3.org/wai" onmouseover="updateImage('wai', true);" onfocus="updateImage('wai', true);"
      -   onmouseout="updateImage('wai',false);" onblur="updateImage('wai',false);">
      - <img src="greyplus.gif" border="0" alt="" id="wai">
      -   W3C Web Accessibility Initiative</a> &
      + <a href="https://www.w3.org/WAI/"
      +    onmouseover="updateImage('wai', true);" onfocus="updateImage('wai', true);"
      +    onmouseout="updateImage('wai',false);" onblur="updateImage('wai',false);">
      +    <img alt="" id="wai" src="greyplus.gif">
      +    W3C Web Accessibility Initiative</a> &amp;
        <a href="https://www.w3.org/International/" onmouseover="updateImage('i18n', true);" 
      -   onfocus="updateImage('i18n',true);" onmouseout="updateImage('i18n',false);"
      -   onblur="updateImage('i18n',false);">
      -   <img src="greyplus.gif" border="0" alt="" id="i18n">
      -   W3C Internationalization</a>
      +    onfocus="updateImage('i18n',true);" onmouseout="updateImage('i18n',false);"
      +    onblur="updateImage('i18n',false);">
      +    <img alt="" id="i18n" src="greyplus.gif">
      +    W3C Internationalization</a>
        </body>
        </html>
       
      -
      -

      Tests

      +
      +
      +
      +

      Tests

      Procedure

      Load the Web page and test the events using a mouse and via the keyboard.

      1. Check that the "standard" image is displayed as expected when the Web page is loaded.
      2. -

        Using the Mouse

        +

        Using the Mouse

        1. Move the mouse over the element containing the event handlers (in this example it is an anchor element). Check that the image changes to the expected image.
        2. -
        3. Move the mouse off of the element. Check that the image changes back to the "standard" image.
        4. +
        5. Move the mouse off of the element. Check that the image changes back to the "standard" image.
      3. -

        Using the Keyboard

        +

        Using the Keyboard

        1. Use the keyboard to set focus to the element containing the event handlers. Check that the image changes to the expected image.
        2. Use the keyboard to remove focus from the element (generally by moving focus to another element). Check that the image changes to the "standard" image.
      4. -
      5. Verify that the layout of other elements on the page is not affected when the image is changed.
      6. +
      7. Verify that the layout of other elements on the page is not affected when the image is changed.

      Expected Results

      @@ -77,4 +96,6 @@
    • All of the steps for the above checks are true.
    -
    \ No newline at end of file + + + \ No newline at end of file diff --git a/techniques/css/C27.html b/techniques/css/C27.html index a65c1425e7..960624bc93 100644 --- a/techniques/css/C27.html +++ b/techniques/css/C27.html @@ -25,7 +25,6 @@

    Resources

    diff --git a/techniques/failures/F107.html b/techniques/failures/F107.html index bfac84081d..566557b861 100644 --- a/techniques/failures/F107.html +++ b/techniques/failures/F107.html @@ -2,89 +2,78 @@ Failure of Success Criterion 1.3.5 due to incorrect autocomplete attribute values - - - - -

    Failure of Success Criterion 1.3.5 due to incorrect autocomplete attribute values

    - -
    -

    Metadata

    -

    -

    failures

    -

    failure

    +

    Failure of Success Criterion 1.3.5 due to incorrect autocomplete attribute values

    +
    +

    ID: F107

    +

    Technology: failures

    +

    Type: failure

    -
    -

    Applicability

    -

    This technique applies to form inputs created in HTML which collect information about the user of the form.

    -
    -
    -

    Description

    -

    The purpose of this technique is to identify a failure condition where form inputs do not have the correct autocomplete attribute values for inputs that request information about the user of the form.

    +

    Applicability

    +

    This technique applies to form inputs created in HTML which collect information about the user of the form.

    +
    +
    +

    Description

    +

    The purpose of this technique is to identify a failure condition where form inputs do not have the correct autocomplete attribute values for inputs that request information about the user of the form.

    -

    Success Criteria 1.3.5 uses a fixed list of tokens in Input Purposes for user interface components (based on the HTML 5.2 autocomplete attribute’s fixed list of token values) because the programmatic association of specified token values (metadata) allows for other machine processing, such as expressing the input label in different modalities.

    +

    Success Criterion 1.3.5 uses a fixed list of tokens in Input Purposes for user interface components (based on the HTML 5.2 autocomplete attribute's fixed list of token values) because the programmatic association of specified token values (metadata) allows for other machine processing, such as expressing the input label in different modalities.

    -

    Another important part of this Success Criterion is that the token values are associated with inputs that are scoped directly to the primary end user.

    +

    Another important part of this Success Criterion is that the token values are associated with inputs that are scoped directly to the primary end user.

    -

    Examples

    - -
    -

    Incorrect attribute

    -

    An online form used to collect the user's name and birthday which uses incorrect autocomplete attributes. The correct attribute value for the first control is name and for the second control the made-up attribute value birthday was used instead of bday for this example.

    +

    Examples

    +
    +

    Incorrect attribute

    +

    An online form used to collect the user's name and birthday which uses incorrect autocomplete attributes. The correct attribute value for the first control is name, and for the second control the made-up attribute value birthday was used instead of bday.

     <h2>Your details:</h2>
    -<label for="name1">Name:</label>
    -<input type="text" name="field1a" autocomplete="email" id="name1"> 
    -<label for="birthday1">Birthday:</label>
    -<input type="text" name="field1b" autocomplete="birthday" id="birthday1>
    - -
    +<label for="uname">Name:</label> +<input autocomplete="email" id="uname" type="text"> +<label for="ubirthday">Birthday:</label> +<input autocomplete="birthday" id="ubirthday" type="text"> +
    -
    -

    Tests

    - -
    -

    Procedure

    - -

    For each form field which collects information about the user of the form:

    -
      -
    1. Check that the form field has an autocomplete attribute and value pair that does not match the purpose of the input.
    2. -
    3. Check that the input purpose is not communicated programmatically through any other method.
    4. -
    - +

    Tests

    +
    +

    Procedure

    + +

    For each form field which collects information about the user of the form:

    +
      +
    1. Check that the form field has an autocomplete attribute and value pair that does not match the purpose of the input.
    2. +
    3. Check that the input purpose is not communicated programmatically through any other method.
    4. +
    -

    Expected Results

    - -
      -
    • If checks #1-2 are true, then the failure condition applies, and the content fails the Success Criterion.
    • -
    +

    Expected Results

    +
      +
    • If checks 1 and 2 are true, then the failure condition applies, and the content fails the Success Criterion.
    • +
    -

    Resources

    - +

    Resources

    +
    - - + diff --git a/techniques/failures/F43.html b/techniques/failures/F43.html index 2d6e91d915..2a74fcdc64 100644 --- a/techniques/failures/F43.html +++ b/techniques/failures/F43.html @@ -98,5 +98,4 @@

    Using the fieldset and legend elements to
  • G115
  • H39
  • H42
  • -
  • H73
  • Resources

    \ No newline at end of file diff --git a/techniques/failures/F44.html b/techniques/failures/F44.html index 4eac0a788f..79453dd1c1 100644 --- a/techniques/failures/F44.html +++ b/techniques/failures/F44.html @@ -61,7 +61,6 @@

    Resources

      diff --git a/techniques/failures/F46.html b/techniques/failures/F46.html index 127913169a..51c3b28a76 100644 --- a/techniques/failures/F46.html +++ b/techniques/failures/F46.html @@ -94,5 +94,4 @@

    Resources

    \ No newline at end of file diff --git a/techniques/general/G134.html b/techniques/general/G134.html index fec970bfa9..8653365ffe 100644 --- a/techniques/general/G134.html +++ b/techniques/general/G134.html @@ -1,255 +1,135 @@ -Validating Web pages

    Validating Web pages

    ID: G134

    Technology: general

    Type: Technique

    When to Use

    + + + + Validating Web pages + + + +

    Validating Web pages

    +
    +

    ID: G134

    +

    Technology: general

    +

    Type: Technique

    +
    +
    +

    When to Use

    Any markup languages and many other technologies.

    -

    Description

    -

    The objective of this technique is to avoid ambiguities in Web pages - that often result from code that does not validate against formal - specifications. Each technology's mechanism to specify the technology and - technology version is used, and the Web page is validated against the - formal specification of that technology. If a validator for that technology - is available, the developer can use it.

    -

    Validation will usually eliminate ambiguities (and more) because an - essential step in validation is to check for proper use of that technology's - markup (in a markup language) or code (in other technologies). Validation - does not necessarily check for full conformance with a specification but it - is the best means for automatically checking content against its - specification.

    -

    Examples

    -
    -

    Validating HTML

    - -

    HTML pages include a document type declaration (sometimes referred - to as - - !DOCTYPE - - statement) and are valid according to - the HTML version specified by the document type declaration. The - developer can use off-line or online validators (see Resources - below) to check the validity of the HTML pages.

    - +
    +
    +

    Description

    +

    The objective of this technique is to avoid ambiguities in Web pages that often result from code that does not validate against formal specifications. Each technology's mechanism to specify the technology and technology version is used, and the Web page is validated against the formal specification of that technology. If a validator for that technology is available, the developer can use it.

    +

    Validation will usually eliminate ambiguities (and more) because an essential step in validation is to check for proper use of that technology's markup (in a markup language) or code (in other technologies). Validation does not necessarily check for full conformance with a specification but it is the best means for automatically checking content against its specification.

    +
    +
    +

    Examples

    +
    +

    Validating HTML

    +

    HTML pages include a document type declaration (sometimes referred to as !DOCTYPE statement) and are valid according to the HTML version specified by the document type declaration. The developer can use off-line or online validators (see Resources section) to check the validity of the HTML pages.

    +
    +
    +

    Validating XML

    +

    SVG, SMIL and other XML-based documents reference a Document Type Definition (DTD) or other type of XML schema. The developer can use online or off-line validators (including validation tools built into editors) to check the validity of the XML documents.

    +
    +
    +

    Batch validation with Ant

    +

    The xmlvalidate task of Apache Ant can be used for batch validation of XML files. The following Apache Ant target is a simple example for the validation of files with the extension .xml in the directory dev\\Web (relative to the Ant build file).

    +
    <target name="validate-xml"> 
    +  <xmlvalidate lenient="no"> 
    +    <fileset dir="dev/web" includes="*.xml" /> 
    +  </xmlvalidate> 
    +</target>
    -
    -

    Validating XML

    - -

    XHTML, SVG, SMIL and other XML-based documents reference a Document - Type Definition (DTD) or other type of XML schema. The developer can - use online or off-line validators (including validation tools built - into editors) to check the validity of the XML documents.

    - -
    -
    -

    Batch validation with Ant

    - -

    The - - xmlvalidate - - task of Apache Ant can be used for - batch validation of XML files. The following Apache Ant target is a - simple example for the validation of files with the extension - - .xml - - in the directory - - dev\\Web - - (relative to the Ant build file).

    - -
    -              
    -              <target name="validate-xml"> 
    -                <xmlvalidate lenient="no"> 
    -                <fileset dir="dev/web" includes="*.xml" /> 
    -                </xmlvalidate> 
    -              </target>
    -            
    -
    -

    Tests

    +
    +
    +

    Tests

    Procedure

    -

    For HTML, SGML-based and XML-based technologies:

    +

    For HTML, SGML-based and XML-based technologies:

    1. Load each page or document into a validating parser.
    2. Check that no validation errors are found.

    For other technologies:

    -

    Follow the validation procedure defined for the technology in use, if any - exists.

    +

    Follow the validation procedure defined for the technology in use, if any exists.

    -

    Expected Results

    +
    +

    Expected Results

    For HTML, SGML-based and XML-based technologies:

    -

    Step 2 is true.

    +

    Check 2 is true.

    -

    Resources

    - - -

    Validating HTML and XHTML

    -
      -
    • - The W3C Markup Validation - Service - by the World Wide Web Consortium allows you - to validate HTML and XHTML files by URI, by file upload and by - direct input of complete HTML or XHTML documents. There are also - separate pages with an extended interface for file upload and - for validating by URI (advanced options such as encodings and - document types).
    • -
    • - Installation Documentation for the W3C Markup Validation - Service - explains how to install this service (for - example for use on an intranet).
    • -
    • - WDG HTML - Validator - by the Web Design Group allows you to enter - a URI to validate single pages or entire sites. There are also - versions to validate Web pages in batch mode (by specifying one - or more URIs of HTML documents to validate), by file upload and - by direct input of HTML code.
    • -
    • - Offline HTMLHelp.com Validator - is a tool for Unix - users; it is the off-line version of the online WDG HTML - Validator.
    • -
    • - Off-line HTML - Validator – A clipbook for NoteTab - by Professor Igor - Podlubny is an extension for the programming editor NoteTab. It - uses - James Clark's - open-source SGML parser, which is also used by the - W3C Markup Validation Service.
    • -
    • - Do-it-yourself Offline HTML Validator - by Matti - Tukiainen explains how you can create a simple validator with - James Clark's SGML parser on Windows.
    • -
    • - Validating an entire site - by Peter Kranz explains - how you can install a modified version of the W3C Markup - Validation Service that outputs validation results as XML on Mac - OS. Source code (in Perl and Python) is available.
    • - -
    • - Can I use the W3C MarkUp Validation Service to validate - HTML? - explains how you can validate HTML from within - the free editor HTML-Kit.
    • -
    • - HTML/XML Validator - is an online repair tool for HTML and XHTML based on Tidy - and PHP 5. It is available in several languages but it is not a - real validator.
    • -
    • - Fix Your - Site With the Right DOCTYPE! - by Jeffrey Zeldman - explains what HTML and XHTML doctypes work and what their effect - is on the rendering mode of a few browsers.
    • -
    • - Modifying Dreamweaver to Produce Valid XHTML - by - Carrie Bickner.
    • -
    • - XHTML-Schemata für FrontPage 2003 und Visual Studio .NET - by Christoph Schneegans is a German article that explains - how the W3C XML Schemas for XHTML 1.0 can be used in FrontPage - 2003 and Visual Studio .NET to create valid code.
    • -
    • - Nvu - is a free - and open-source Web authoring tool for Windows, Macintosh and - Linux that can call the W3C HTML Validation Service.
    • -
    • - Amaya - by the World - Wide Web Consortium is a free and open-source Web authoring tool - with support for HTML, XHTML, CSS, SVG and MathML that alerts - you to validity errors when you save a document.
    • -
    • - Web - Developer Extension - is an extension for Mozilla, - Firefox and Flock by Chris Pedrick that allows you to use the - W3C Validation Services for HTML and CSS.
    • -
    -

    Validating XML

    -
      -
    • - XML Validator - A - Document Validation Service - by JavaView allows you to - check wellformedness and validity of XML files, by file upload - or by direct input of XML code.
    • -
    • Apache Ant's - XMLValidate Task - can be used to validate XML-based - documents. This tool can be used to validate entire directories - (and subdirectories) of XML files.
    • - -
    • - XML Schema Validator - by Christoph Schneegans is an online tool that allows you to - validate XML (and XHTML) files by URI, by file upload, by - direct input of complete XML documents, and by direct input of - XML code fragments. A bookmarklet that allows you to validate - the page currently displayed in your browser is also available. - This validator claims to be more accurate than the W3C - validator.
    • -
    • - XML Schema Validator - by CoreFiling is an online - tool that allows you to validate an XML file against a W3C XML - Schema, both of which can be uploaded.
    • -
    • - Schema Validator: this is a validator that allows you to paste XML and W3C XML Schema code into text boxes to validate XML code.
    • -
    -

    Note that many programming editors, XML editors and integrated - development environments (IDEs) can validate XML files. These include - the following free and/or open-source tools:

    -
      -
    • the programming editor - JEdit - with the XML and SideKick plugins, which supports DTDs - and W3C XML Schemas,
    • -
    • the “workbench" - Eclipse - with the - Web - Tools Platform,
    • -
    • the Web authoring tool - SCREEM - for the Gnome desktop environment, which supports DTDs,
    • -
    • the XML editor - Jaxe, which validates XML files with Apache Xerces,
    • -
    • the XML editor - Xerlin, - which supports DTDs and to some extent W3C XML schema,
    • -
    • the XML editor - xmloperator, which supports DTDs and RELAX NG - schemas,
    • -
    • Emacs in nXML mode (see the YahooGroup Emacs nXML Mode),
    • -
    • the XML editor - Pollo, which supports DTDs, W3C XML Schemas and RELAX NG - schemas, and is best suited for tree-like XML files.
    • -
    - -
    +
    + +
    +

    Resources

    + +

    Validating HTML

    + +

    Validating XML

    +
      +
    • + XML Validator - A Document Validation Service by JavaView allows you to check wellformedness and validity of XML files, by file upload or by direct input of XML code. +
    • +
    • + Apache Ant's XMLValidate Task can be used to validate XML-based documents. This tool can be used to validate entire directories (and subdirectories) of XML files. +
    • +
    • + XML Schema Validator by Christoph Schneegans is an online tool that allows you to validate XML files by URI, by file upload, by direct input of complete XML documents, and by direct input of XML code fragments. A bookmarklet that allows you to validate the page currently displayed in your browser is also available. This validator claims to be more accurate than the W3C validator. +
    • +
    • + XML Schema Validator by CoreFiling is an online tool that allows you to validate an XML file against a W3C XML Schema, both of which can be uploaded.
    • +
    • + Schema Validator: this is a validator that allows you to paste XML and W3C XML Schema code into text boxes to validate XML code. +
    • +
    +

    Note that many programming editors, XML editors and integrated development environments (IDEs) can validate XML files. These include the following free and/or open-source tools:

    +
      +
    • + the programming editor JEdit with the XML and SideKick plugins, which supports DTDs and W3C XML Schemas, +
    • +
    • + the "workbench" Eclipse with the Web Tools Platform, +
    • +
    • + the XML editor Jaxe, which validates XML files with Apache Xerces, +
    • +
    • + Emacs in nXML mode (see the Emacs documentation wiki), +
    • +
    • + the XML editor Pollo, which supports DTDs, W3C XML Schemas and RELAX NG schemas, and is best suited for tree-like XML files. +
    • +
    +
    + + diff --git a/techniques/general/G220.html b/techniques/general/G220.html index 48d7e247c2..f2339dca9d 100644 --- a/techniques/general/G220.html +++ b/techniques/general/G220.html @@ -23,12 +23,19 @@

    Description

    Examples

    -

    A link at the top of the page

    +

    A link at the top of the page

    An on-line job application asks for many types of information from the user, such as their identification number, but they may have several and not know which one to enter. They may need more information from someone that can answer their question when the contextual help provided does not meet their needs. One of the first links that the user reaches when tabbing through the page is titled "Contact Us". This link is also visually in the same location on each page. Activating the link brings the user to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

    A link in the footer region

    -

    A Web page’s footer region contains links repeated on every page in a set of web pages. The visual and programmatic order are consistent when viewed in the same size display. One of the first links in the footer region is labeled visually and programmatically “Contact Us.” A user activates the link and is brought to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

    +

    A Web page's footer region contains links repeated on every page in a set of web pages. The visual and programmatic order are consistent when viewed in the same size display. One of the first links in the footer region is labeled visually and programmatically "Contact Us". A user activates the link and is brought to the contact details page. The contact details page has an email address for a company representative or general information inbox which is then shared with appropriate personnel.

    +
    +
    +

    A link sometimes in a disclosure widget

    +

    On some pages in a set of web pages, there is a link to a help mechanism directly on the page. On one or more other pages in the set, the link is within a disclosure widget which is in the same relative order as the link that is directly on the page.

    +
    +

    Although this example technically passes the Success Criterion, it creates a less consistent user experience and is less preferable than consistently placing a link directly on the page.

    +
    @@ -36,7 +43,7 @@

    Tests

    Procedure

      -
    1. Determine if this is a single page app or a set of web pages, with blocks of content that are repeated on multiple web pages.
    2. +
    3. Determine if this is a set of web pages with blocks of content that are repeated on multiple pages.
    4. Determine if at least one of the following is included or linked in a consistent location:
      • Human contact details
      • @@ -45,7 +52,7 @@

        Procedure

      • A fully automated mechanism
    5. -
    6. Without changing the viewport size, check that the identified help is present on all other web pages within that set of web pages.
    7. +
    8. Without changing the viewport size, check that the identified help is present on all other web pages within that set of web pages.
    diff --git a/techniques/general/G55.html b/techniques/general/G55.html index 33abfcbe54..85b5205510 100644 --- a/techniques/general/G55.html +++ b/techniques/general/G55.html @@ -66,6 +66,5 @@
  • G102
  • G112
  • H40
  • -
  • H60
  • H64
  • Resources

    \ No newline at end of file diff --git a/techniques/general/G58.html b/techniques/general/G58.html index cb9fa1486b..78147fd558 100644 --- a/techniques/general/G58.html +++ b/techniques/general/G58.html @@ -49,6 +49,5 @@

    The link back to the .MOV Document in an HTML Document

    Resources

    \ No newline at end of file diff --git a/techniques/general/G59.html b/techniques/general/G59.html index dfd90b2a62..b98395ec4b 100644 --- a/techniques/general/G59.html +++ b/techniques/general/G59.html @@ -23,7 +23,6 @@

    Resources

    \ No newline at end of file diff --git a/techniques/general/G73.html b/techniques/general/G73.html index 2904e444d9..f1e832f45e 100644 --- a/techniques/general/G73.html +++ b/techniques/general/G73.html @@ -90,7 +90,6 @@

    Transcript of an audio-only file

    Resources

    \ No newline at end of file diff --git a/techniques/general/G74.html b/techniques/general/G74.html index 640338aceb..6eb466d559 100644 --- a/techniques/general/G74.html +++ b/techniques/general/G74.html @@ -42,7 +42,6 @@

    Bar chart

    Resources

    \ No newline at end of file diff --git a/techniques/general/G82.html b/techniques/general/G82.html index ee871cc508..605b65abd6 100644 --- a/techniques/general/G82.html +++ b/techniques/general/G82.html @@ -39,7 +39,6 @@

    Resources

    \ No newline at end of file diff --git a/techniques/general/G94.html b/techniques/general/G94.html index 0abfc34e42..6a2c346540 100644 --- a/techniques/general/G94.html +++ b/techniques/general/G94.html @@ -48,7 +48,6 @@
  • H2
  • H24
  • H36
  • -
  • H35
  • H37
  • H53
  • H86
  • diff --git a/techniques/html/H2.html b/techniques/html/H2.html index fd3923b0a1..669d718cfd 100644 --- a/techniques/html/H2.html +++ b/techniques/html/H2.html @@ -1,63 +1,86 @@ -Combining adjacent image and text links for the same resource

    Combining adjacent image and text links for the same resource

    ID: H2

    Technology: html

    Type: Technique

    When to Use

    -

    HTML4, HTML5, and XHTML documents that contain links.

    -

    Description

    + + + + Combining adjacent image and text links for the same resource + + + +

    Combining adjacent image and text links for the same resource

    +
    +

    ID: H2

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML documents that contain links.

    +
    +
    +

    Description

    This objective of this technique is to provide both text and iconic representations of links without making the web page more confusing or difficult for keyboard users or assistive technology users. Since different users finding text and icons more usable, providing both can improve the accessibility of the link.

    -

    Many links have both a text and iconic representation adjacent to each other, but rendered in separate a elements. Visually they appear to be a single link, but many users encounter them as adjacent identical links. For a keyboard user, it is tedious to navigate through redundant links. For users of assistive technologies, it can be confusing to encounter successive identical links. When the text alternative for the icon is a duplicate of the link text, it is repetitive as screen readers read the description twice.

    -

    If the author omitted alternative text from the link image, it would fail Success Criterion 1.1.1 because the - text alternative would not serve the same purpose as the graphical link.

    -

    This technique provides such links by putting the text and image together in one a element and providing null alternative text on the image to eliminate duplication of text. In this way, both representations of the link are provided, but keyboard users only encounter one link and assistive technology that provides users with link lists for a web page do not include duplicate links.

    -

    Sometimes the text and the icon link are rendered in separate, adjacent table cells to - facilitate page layout. Although WCAG 2 does not prohibit the use of layout tables, - CSS-based layouts are recommended in order to retain the defined semantic meaning of the - HTML table elements and to conform to the coding practice of separating presentation - from content. If CSS is used, this technique can be applied to combine the links.

    -

    Examples

    +

    Many links have both a text and iconic representation adjacent to each other, but rendered in separate a elements. Visually they appear to be a single link, but many users encounter them as adjacent identical links. For a keyboard user, it is tedious to navigate through redundant links. For users of assistive technologies, it can be confusing to encounter successive identical links. When the text alternative for the icon is a duplicate of the link text, it is repetitive as screen readers read the description twice.

    +

    If the author omitted alternative text from the link image, it would fail Success Criterion 1.1.1 because the text alternative would not serve the same purpose as the graphical link.

    +

    This technique provides such links by putting the text and image together in one a element and providing null alternative text on the image to eliminate duplication of text. In this way, both representations of the link are provided, but keyboard users only encounter one link and assistive technology that provides users with link lists for a web page do not include duplicate links.

    +

    Sometimes the text and the icon link are rendered in separate, adjacent table cells to facilitate page layout. Although WCAG 2 does not prohibit the use of layout tables, CSS-based layouts are recommended in order to retain the defined semantic meaning of the HTML table elements and to conform to the coding practice of separating presentation from content. If CSS is used, this technique can be applied to combine the links.

    +
    +
    +

    Examples

    -

    The icon and text are contained in the same a element. (HTML4 / HTML5)

    +

    The icon and text are contained in the same a element.

     <a href="products.html">
        <img src="icon.gif" alt="">
        Products page
    - </a>      
    + </a>

    A link contains an icon and text, and the site help refers to the icon. The - img has a text alternative which is the name used for the icon in the - site help, which describes clicking the home page icon. (HTML4 / HTML5)

    + img has a text alternative which is the name used for the icon in the + site help, which describes clicking the home page icon.

    <a href="home.html">
       <img src="house.gif" alt="home page icon">
       Go to the home page
    -</a>     
    +</a>
    -

    Tests

    -

    Procedure

    -

    For each a applying this technique:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each a applying this technique:

      -
    1. Check that every img element contained within the a element has a null value set for its alt attribute.
    2. -
    3. Check that the a element contains an img element that has either a null alt attribute value or a value that supplements the link text and describes the image
    4. +
    5. Check that every img element contained within the a element has a null value set for its alt attribute.
    6. +
    7. Check that the a element contains an img element that has either a null alt attribute value or a value that supplements the link text and describes the image
    -

    Expected Results

    +
    +

    Expected Results

    • All checks above are true.
    -
    +

    Resources

    - - + +
    +
    +

    Resources

    -
    \ No newline at end of file + +
    + + \ No newline at end of file diff --git a/techniques/html/H24.html b/techniques/html/H24.html index fda7552a72..636a74c993 100644 --- a/techniques/html/H24.html +++ b/techniques/html/H24.html @@ -1,57 +1,80 @@ - Providing text alternatives for the area elements of image maps

    Providing text alternatives for the area elements of image maps

    ID: H24

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML Documents that contain area elements.

    -

    Description

    + + + + Providing text alternatives for the area elements of image maps + + + +

    Providing text alternatives for the area elements of image maps

    +
    +

    ID: H24

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML documents that contain area elements.

    +
    +
    +

    Description

    The objective of this technique is to provide text alternatives that serve the same purpose as the selectable regions of an image map. An image map is an image divided into - selectable regions defined by area elements. Each area is a link to another - Web page or another part of the current Web page. The alt attribute of each - area element serves the same purpose as the selectable area of the + selectable regions defined by area elements. Each area is a link to another + Web page or another part of the current Web page. The alt attribute of each + area element serves the same purpose as the selectable area of the image.

    -

    Examples

    +
    +
    +

    Examples

    - -

    This example uses the alt attribute of the area element - to provide text that describes the purpose of the image map areas.

    +

    This example uses the alt attribute of the area element to provide text that describes the purpose of the image map areas.

    <img src="welcome.gif" usemap="#map1" 
         alt="Areas in the library. Select an area for
    -more information on that area." /> 
    +    more information on that area."> 
     <map id="map1" name="map1">
       <area shape="rect" coords="0,0,30,30"
    -    href="reference.html" alt="Reference" />
    +    href="reference.html" alt="Reference">
       <area shape="rect" coords="34,34,100,100"
    -    href="media.html" alt="Audio visual lab" />
    -</map>   
    + href="media.html" alt="Audio visual lab"> +</map>
    -

    Tests

    -

    Procedure

    -

    For each area element in an image map:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each area element in an image map:

      -
    1. Check that the area element has an alt attribute.
    2. -
    3. Check that the text alternative specified by the alt attribute serves the same - purpose as the part of image map image referenced by the area element - of the imagemap.
    4. +
    5. Check that the area element has an alt attribute.
    6. +
    7. Check that the text alternative specified by the alt attribute serves the same + purpose as the part of image map image referenced by the area element + of the image map.
    -

    Expected Results

    +
    +

    Expected Results

    • The above checks are true.
    -

    Resources

    - +
    + +
    +

    Resources

    \ No newline at end of file diff --git a/techniques/html/H25.html b/techniques/html/H25.html index 628e1f30c6..80c6bf4c4e 100644 --- a/techniques/html/H25.html +++ b/techniques/html/H25.html @@ -1,51 +1,72 @@ -Providing a title using the title element

    Providing a title using the title element

    ID: H25

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    All HTML and XHTML documents, including those in individual frames in - a frameset, have a title element in the head section that - defines in a simple phrase the purpose of the document. This helps users to orient - themselves within the site quickly without having to search for orientation information - in the body of the page.

    -

    Note that the (mandatory) title element, which only appears once in a - document, is different from the title attribute, which may be applied to - almost every HTML and XHTML element.

    -

    Examples

    -
    - -

    This example defines a document's title.

    + + + + Providing a title using the title element + + + +

    Providing a title using the title element

    +
    +

    ID: H25

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    All HTML documents, including those in frames, have a title element in the head section that defines in a simple phrase the purpose of the document. This helps users to orient themselves within the site quickly without having to search for orientation information in the body of the page.

    +

    Note that the (mandatory) title element, which only appears once in a document, is different from the title attribute, which may be applied to almost every HTML element.

    +
    +
    +

    Examples

    +
    +

    This example defines a document's title.

    -
    <html xmlns="http://www.w3.org/1999/xhtml">   
    -   <head>     
    -      <title>The World Wide Web Consortium</title>     
    -   </head>   
    -   <body>     
    +
    <!doctype html>
    +<html lang="en">
    +  <head>
    +    <title>The World Wide Web Consortium</title>     
    +  </head>
    +  <body>
           ...   
    -   </body> 
    -</html>  
    + </body> +</html>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Examine the source code of the HTML or XHTML document and check that a non-empty - title element appears in the head section.
    2. -
    3. Check that the title element describes the document.
    4. +
    5. Examine the source code of the HTML document and check that a non-empty title element appears in the head section.
    6. +
    7. Check that the title element describes the document.
    -

    Expected Results

    +
    +

    Expected Results

    • Checks 1 and 2 are true.
    -

    Resources

    - - +
    + +
    +

    Resources

    + -
    \ No newline at end of file +
    + + \ No newline at end of file diff --git a/techniques/html/H28.html b/techniques/html/H28.html index 6f4bfbedc9..6fcfb73be7 100644 --- a/techniques/html/H28.html +++ b/techniques/html/H28.html @@ -1,62 +1,89 @@ -Providing definitions for abbreviations by using the abbr element

    Providing definitions for abbreviations by using the abbr element

    ID: H28

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    + + Providing definitions for abbreviations by using the abbr element + + + + +

    Providing definitions for abbreviations by using the abbr element

    +
    +

    ID: H28

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    + +
    +

    Description

    The objective of this technique is to provide expansions or definitions for - abbreviations by using the abbr element

    -

    It is always appropriate to use the abbr element for any abbreviation, - including acronyms and initialisms. When using HTML 4 and XHTML, - initialisms and acronyms may be marked up using the acronym element. - In HTML5 and newer versions of HTML the acronym element was marked as obsolete in favor of the more general - abbr element.

    -

    Examples

    + abbreviations by using the abbr element. It is always appropriate to use the abbr element for any abbreviation, including acronyms and initialisms.

    +
    + +
    +

    Examples

    -

    Using abbr element to expand abbreviations.

    -
    <p>Sugar is commonly sold in 5 <abbr title="pound">lb.</abbr> bags.</p>
    -<p>Welcome to the <abbr title="World Wide Web">WWW</abbr>!</p>              
    +

    Using abbr element to expand abbreviations

    +
    <p>Sugar is commonly sold in 5 <abbr title="pound">lb.</abbr> bags.</p>
    +<p>Welcome to the <abbr title="World Wide Web">WWW</abbr>!</p>
    +
    -

    Using abbr element to define abbreviations.

    -
    <p>Tasini <abbr title="and others">et al.</abbr> <abbr title="versus">v.</abbr>
    -The New York Times <abbr title="and others">et al.</abbr> is the landmark lawsuit 
    -brought by members of the National Writers Union against ......</p>  
    +

    Using dfn and abbr element to define abbreviations

    +
    <p>Tasini 
    +  <dfn id="etal"><abbr title="and others">et al.</abbr></dfn>
    +  <abbr title="versus">v.</abbr>
    +  The New York Times <abbr title="and others">et al.</abbr> is the landmark lawsuit 
    +  brought by members of the National Writers Union against ...
    +</p>
    +
    -

    Using the abbr element to expand an acronym

    -
     <p>The use of <abbr title="Keep It Simple Stupid">KISS</abbr> became popular in ...</p>        
    -            
    +

    Using the abbr element to expand an acronym

    +
    <p>The use of <abbr title="Keep It Simple Stupid">KISS</abbr> became popular in ...</p>
    +
    -

    Using the abbr element to expand an initialism

    -
     <p><abbr title="World Wide Web">WWW</abbr></p>
    +

    Using the abbr element to expand an initialism

    +
     <p><abbr title="British Broadcasting Corporation">BBC</abbr></p>
    -

    Tests

    -

    Procedure

    + +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Check that an expansion or definition is provided for each abbreviation via - abbr.
    2. +
    3. Check that an expansion or definition is provided for each abbreviation via abbr.
    -

    Expected Results

    +
    +

    Expected Results

    • Check #1 is true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H32.html b/techniques/html/H32.html index f926bbecaf..75c6f94a58 100644 --- a/techniques/html/H32.html +++ b/techniques/html/H32.html @@ -1,64 +1,72 @@ -Providing submit buttons

    Providing submit buttons

    ID: H32

    Technology: html

    Type: Technique

    When to Use

    -

    Content that includes form controls.

    -

    Description

    -

    The objective of this technique is to provide a mechanism that allows users to - explicitly request changes of context. The intended use of a submit button is to - generate an HTTP request that submits data entered in a form, so it is an appropriate - control to use for causing a change of context.

    -

    Examples

    -
    -

    - -

    This is a basic example of a form with a submit button.

    - -
    -<form action="http://www.example.com/cgi/subscribe/" method="post"><br /> 
    - <p>Enter your e-mail address to subscribe to our mailing list.</p><br /> 
    - <label for="address">Enter email address:</label><input type="text" 
    - id="address" name="address" /> 
    - <input type="submit" value="Subscribe" /><br /> 
    -</form>
    + + + + Providing submit buttons + + + +

    Providing submit buttons

    +
    +

    ID: H32

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    Content that includes form controls.

    +
    +

    Description

    +

    The objective of this technique is to provide a mechanism that allows users to explicitly request changes of context. The intended use of a submit button is to generate an HTTP request that submits data entered in a form, so it is an appropriate control to use for causing a change of context.

    +
    +
    +

    Examples

    -

    +

    A basic example of a form with a submit button

    -

    The following example uses a server-side script (specified in the - action attribute) that redirects the user to the requested page.

    - -
     <form action="http://www.example.com/cgi/redirect/" method="get"><br /> 
    -    <p>Navigate the site.</p><br /> 
    -    <select name="dest"><br /> 
    -      <option value="/index.html">Home</option/><br /> 
    -      <option value="/blog/index.html">My blog</option/><br /> 
    -      <option value="/tutorials/index.html">Tutorials</option/><br /> 
    -      <option value="/search.html">Search</option/><br /> 
    -    </select><br /> 
    -  <input type="submit" value="Go to Page" /><br /> 
    -  </form> 
    +
    +<form action="/subscribe" method="post">
    + <p>Enter your email address to subscribe to our mailing list.</p>
    + <label for="address">Your email address:</label>
    + <input autocomplete="email" id="address" name="address" type="text"> 
    + <input type="submit" value="Subscribe">
    +</form>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Find all forms in the content
    2. -
    3. For each form, check that it has a submit button (input type="submit", input type="image", or button type="submit")
    4. +
    5. Find all forms in the content.
    6. +
    7. For each form, check that it has a submit button (<input type="submit">, <input type="image">, or <button type="submit">).
    -

    Expected Results

    +
    +

    Expected Results

      -
    • #2 is true
    • +
    • #2 is true
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H34.html b/techniques/html/H34.html index 282c23d39c..12aa763b53 100644 --- a/techniques/html/H34.html +++ b/techniques/html/H34.html @@ -1,74 +1,87 @@ -Using a Unicode right-to-left mark (RLM) or left-to-right mark (LRM) to mix text - direction inline

    Using a Unicode right-to-left mark (RLM) or left-to-right mark (LRM) to mix text - direction inline

    ID: H34

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to use Unicode right-to-left marks and left-to-right + + + + Using a Unicode right-to-left mark (RLM) or left-to-right mark (LRM) to mix text direction inline + + + +

    Using a Unicode right-to-left mark (RLM) or left-to-right mark (LRM) to mix text direction inline

    +
    +

    ID: H34

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to use Unicode right-to-left marks and left-to-right marks to override the HTML bidirectional algorithm when it produces undesirable results. This may be necessary, for instance, when placing neutral characters such as spaces or punctuation between different directional text runs. The concepts used in this technique - are described in What you need to - know about the bidi algorithm and inline markup.

    -

    Unicode right-to-left marks and left-to-right marks can be entered directly or by - means of character entities or numeric character references, as shown here.

    + are described in Inline markup and bidirectional text in HTML.

    +

    Unicode right-to-left marks and left-to-right marks can be entered directly or by means of character entities or numeric character references, as shown here.

      -
    • left-to-right mark: &lrm; or &#x200e; (U+200E)
    • -
    • right-to-left mark: &rlm; or &#x200f; (U+200F)
    • +
    • left-to-right mark: &lrm; or &#x200e; (U+200E)
    • +
    • right-to-left mark: &rlm; or &#x200f; (U+200F)
    -

    Due to the bidi algorithm, a source code editor - may not display character entities or numeric - character references as expected.

    -

    Examples

    +

    Due to the bidi algorithm, a source code editor may not display character entities or numeric character references as expected.

    +
    +
    +

    Examples

    - -

    This example shows an Arabic phrase in the middle of an English sentence. The exclamation point is part of the Arabic phrase and should appear on its left. Because it is between an Arabic and Latin character and the overall paragraph direction is LTR, the bidirectional algorithm positions the exclamation mark to the right of the Arabic phrase.

    -

    The title is "مفتاح معايير الويب!" in Arabic.

    -

    Visually-ordered ASCII version (RTL text in uppercase, LTR in lower):

    -

    the title is "HCTIWS SDRADNATS BEW!" in arabic.

    -

    Inserting a Unicode right-to-left mark in the code immediately after the exclamation mark positions it correctly when you view the displayed text (see below). You can use a character escape or the (invisible) control character to insert the right-to-left mark.

    -

    The title is "مفتاح معايير الويب!‏" in Arabic.

    -

    Visually-ordered ASCII version:

    -

    the title is "!HCTIWS SDRADNATS BEW" in arabic.

    +

    This example shows an Arabic phrase in the middle of an English sentence. The exclamation point is part of the Arabic phrase and should appear on its left. Because it is between an Arabic and Latin character and the overall paragraph direction is LTR, the bidirectional algorithm positions the exclamation mark to the right of the Arabic phrase.

    +

    The title is "مفتاح معايير الويب!" in Arabic.

    +

    Visually-ordered ASCII version (RTL text in uppercase, LTR in lower):

    +

    the title is "HCTIWS SDRADNATS BEW!" in arabic.

    +

    Inserting a Unicode right-to-left mark in the code immediately after the exclamation mark positions it correctly when you view the displayed text (see below). You can use a character escape or the (invisible) control character to insert the right-to-left mark.

    +

    The title is "مفتاح معايير الويب!‏" in Arabic.

    +

    Visually-ordered ASCII version:

    +

    the title is "!HCTIWS SDRADNATS BEW" in arabic.

    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Examine the source for places where text changes direction.
    2. -
    3. When text changes direction, check whether neutral characters such as spaces or - punctuation occur adjacent to text that is rendered in the non-default - direction.
    4. -
    5. When #2 is true and the HTML bidirectional algorithm would produce the wrong - placement of the neutral characters, check whether the neutral characters are - followed by Unicode right-to-left or left-to-right marks that cause neutral - characters to be placed as part of the preceding characters.
    6. +
    7. Examine the source for places where text changes direction.
    8. +
    9. When text changes direction, check whether neutral characters such as spaces or punctuation occur adjacent to text that is rendered in the non-default direction.
    10. +
    11. When check 2 is true and the HTML bidirectional algorithm would produce the wrong placement of the neutral characters, check whether the neutral characters are followed by Unicode right-to-left or left-to-right marks that cause neutral characters to be placed as part of the preceding characters.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • Check #3 is true.
    • +
    • Check 3 is true.
    -

    Resources

    - -
    + +
    +

    Resources

    + - -
    \ No newline at end of file +
    + + \ No newline at end of file diff --git a/techniques/html/H36.html b/techniques/html/H36.html index 47287d383e..fba48ce853 100644 --- a/techniques/html/H36.html +++ b/techniques/html/H36.html @@ -1,41 +1,63 @@ -Using alt attributes on images used as submit buttons

    Using alt attributes on images used as submit buttons

    ID: H36

    Technology: html

    Type: Technique

    When to Use

    -

    Applies to content using image-based submit buttons.

    -

    Description

    -

    For input elements of type 'image', the alt attribute of the - input element is used to provide a functional label. This label indicates - the button's function, but does not attempt to describe the image. The label is - especially important if there are multiple submit buttons on the page that each lead to - different results.

    -

    The input element is used to create many kinds of form controls. Although - the HTML and XHTML DTDs permits the alt attribute on all of these, it should be used - only on image submit buttons. User agent support for this attribute on other types of - form controls is not well defined, and other mechanisms are used to label these - controls.

    -

    Examples

    -
    - -

    An input element with an alt attribute

    + + + + Using alt attributes on images used as submit buttons + + + +

    Using alt attributes on images used as submit buttons

    +
    +

    ID: H36

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    Applies to content using image-based submit buttons.

    +
    +
    +

    Description

    +

    For input elements of type image, the alt attribute of the input element is used to provide a functional label. This label indicates the button's function, but does not attempt to describe the image. The label is especially important if there are multiple submit buttons on the page that each lead to different results.

    +
    +
    +

    Examples

    +
    +

    An input element with an alt attribute

    -
    <form action="http://example.com/prog/text-read" method="post">
    -  <input type="image" name="submit" src="button.gif" alt="Submit" />
    -</form>    
    +
    <form action="/find" method="post" role="search">
    +  <label for="look-up">Find books<label>
    +  <input id="look-up" type="text">
    +  <input alt="Search" src="button.gif" type="image">
    +</form>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. For all input elements that have a type attribute value of "image", check for - the presence of an alt attribute.
    2. -
    3. Check that the alt attribute indicates the - button's function.
    4. +
    5. For all input elements that have a type attribute value of image, check for the presence of an alt attribute.
    6. +
    7. Check that the value of the alt attribute describes the button's function.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • #1 and #2 are true
    • +
    • #1 and #2 are true
    -

    Resources

    - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H37.html b/techniques/html/H37.html index fe9d7fd424..3a0a86aeba 100644 --- a/techniques/html/H37.html +++ b/techniques/html/H37.html @@ -1,62 +1,81 @@ -Using alt attributes on img elements

    Using alt attributes on img elements

    ID: H37

    Technology: html

    Type: Technique

    When to Use

    -

    Images used within HTML documents.

    -

    Description

    -

    When using the img element, specify a short text alternative with the - alt attribute. Note. The value of this attribute is referred to as "alt + + + + Using alt attributes on img elements + + + +

    Using alt attributes on img elements

    +
    +

    ID: H37

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    Images used within HTML documents.

    +
    +
    +

    Description

    +

    When using the img element, specify a short text alternative with the + alt attribute. Note. The value of this attribute is referred to as "alt text".

    When an image contains words that are important to understanding the content, the alt text should include those words. This will allow the alt text to play the same function on the page as the image. Note that it does not necessarily describe the visual characteristics of the image itself but must convey the same meaning as the image.

    -

    Examples

    +
    +
    +

    Examples

    - -

    An image on a Website provides a link to a free newsletter. The image contains the +

    An image on a Website provides a link to a free newsletter. The image contains the text "Free newsletter. Get free recipes, news, and more. Learn more." The alt text - matches the text in the image.

    + matches the text in the image.

    -
    <img src="newsletter.gif" alt="Free newsletter. 
    -   Get free recipes, news, and more. Learn more." />
    +
    <img src="newsletter.gif" alt="Free newsletter. 
    + Get free recipes, news, and more. Learn more.">
    - -

    An image on a Web site depicts the floor plan of a building. The image is an +

    An image on a Web site depicts the floor plan of a building. The image is an image map with each room an interactive map area. The alt text is "The building's floor plan. Select a room for more information about the purpose or content of the room." The instruction to "select a room" indicates that the - image is interactive.

    - + image is interactive.

    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Examine each img element in the content
    2. -
    3. Check that each img element which conveys meaning contains an - alt attribute.
    4. +
    5. Examine each img element in the content.
    6. +
    7. Check that each img element which conveys meaning contains an + alt attribute.
    8. If the image contains words that are important to understanding the content, the - words are included in the text alternative.
    9. + words are included in the text alternative.
    -

    Expected Results

    +
    +

    Expected Results

    Checks #2 and #3 are true.

    -
    +

    Resources

    - -

    - HTML 4.01 IMG - element -

    - - -

    - HTML 4.01 alt - attribute -

    + +
    +
    +

    Resources

    +
    \ No newline at end of file diff --git a/techniques/html/H39.html b/techniques/html/H39.html index e49524017d..f29eb2a672 100644 --- a/techniques/html/H39.html +++ b/techniques/html/H39.html @@ -1,52 +1,72 @@ -Using caption elements to associate data table captions with data tables

    Using caption elements to associate data table captions with data tables

    ID: H39

    Technology: html

    Type: Technique

    When to Use

    -

    HTML data tables

    -

    Description

    + + + + Using caption elements to associate data table captions with data tables + + + +

    Using caption elements to associate data table captions with data tables

    +
    +

    ID: H39

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML data tables

    +
    +
    +

    Description

    The objective of this technique is to programmatically associate captions for data - tables where captions are provided in the presentation. The caption for a table is a - table identifier and acts like a title or heading for the table.

    -

    The caption element is the appropriate markup for such text and it ensures - that the table identifier remains associated with the table, including visually (by - default). In addition, using the caption element allows screen reading software - to navigate directly to the caption for a table if one is present.

    + tables where captions are provided in the presentation. The caption for a table is a table identifier and acts like a title or heading for the table.

    +

    The caption element is the appropriate markup for such text and it ensures + that the table identifier remains associated with the table, including visually (by default). In addition, using the caption element allows screen reading software to navigate directly to the caption for a table if one is present.

    -

    Although WCAG 2.0 does not prohibit the use of layout tables, CSS-based layouts are - recommended in order to retain the defined semantic meaning of the HTML - table elements and to conform to the coding practice of separating - presentation from content. If a table is used for layout, the caption element - is not used. The purpose of a layout table is simply to control the placement of - content; the table itself is “transparent" to the user. A caption would "break" - this transparency by calling attention to the table. See F46 for details..

    +

    Although WCAG 2 does not prohibit the use of layout tables, CSS-based layouts are recommended in order to retain the defined semantic meaning of the HTML table elements and to conform to the coding practice of separating presentation from content. If a table is used for layout, the caption element is not used. The purpose of a layout table is simply to control the placement of content; the table itself is "transparent" to the user. A caption would "break" this transparency by calling attention to the table. See F46 for details.

    -

    Examples

    +
    +
    +

    Examples

    -

    An appointment calendar with a caption -

    -
    <table>
    -<caption>Schedule for the week of March 6</caption>
    -...</table> 
    +

    An appointment calendar with a caption

    +
    <table>
    +  <caption>Schedule for the week of March 6</caption>
    +  ...
    +</table>
    -

    Tests

    -

    Procedure

    -

    For each data table:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each data table:

    1. Check that the table has content that is presented as a table caption.
    2. -
    3. Check that the table includes a caption element.
    4. -
    5. Check that the content of the caption element identifies the table.
    6. +
    7. Check that the table includes a caption element.
    8. +
    9. Check that the content of the caption element identifies the table.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • #1-3 are true.
    • +
    • #1, #2, and #3 are true.
    -
    +

    Resources

    + +
    +
    +

    Resources

    - + -
    +
    + + diff --git a/techniques/html/H40.html b/techniques/html/H40.html index 5aa7cde59a..62bca05baf 100644 --- a/techniques/html/H40.html +++ b/techniques/html/H40.html @@ -1,71 +1,87 @@ -Using description lists

    Using description lists

    ID: H40

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to provide the description of names or terms by - presenting them in a description list. The list is marked up using the dl - element. Within the list, each term is put in a separate dt element, and - its description goes in the dd element directly following it. Multiple terms can be associated with a single description, as can a single term with multiple descriptions, provided that semantic sequence is maintained. The - title attribute can be used to provide additional information about the - description list. Usage of description lists ensures that terms and their descriptions are semantically related even as presentation format changes, as well as ensuring that these terms and descriptions are semantically grouped as a unit.

    + + + + Using description lists + + + +

    Using description lists

    +
    +

    ID: H40

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to provide the description of names or terms by presenting them in a description list. The list is marked up using the dl element. Within the list, each term is put in a separate dt element, and its description goes in the dd element directly following it. Multiple terms can be associated with a single description, as can a single term with multiple descriptions, provided that semantic sequence is maintained. The title attribute can be used to provide additional information about the description list. Usage of description lists ensures that terms and their descriptions are semantically related even as presentation format changes, as well as ensuring that these terms and descriptions are semantically grouped as a unit.

    Description lists are easiest to use when the descriptions are ordered alphabetically. A common use for description lists is a glossary of terms.

    -

    In HTML5 the name "Description list" was introduced. In previous versions these lists were referred to as "Definition lists".

    -

    Examples

    +
    +
    +

    Examples

    +

    A list of descriptions of nautical terms used on a Website about sailing.

    -

    A list of descriptions of nautical terms used on a Website about sailing.

    - -
    <dl title="Nautical terms">
    +
    <dl title="Nautical terms">
       <dt>Knot</dt>
       <dd>
    -    <p>A <em>knot</em> is a unit of speed equaling 1 
    -      nautical mile per hour (1.15 miles per hour or 1.852 
    -      kilometers per hour).</p>
    +    A <i>knot</i> is a unit of speed equaling 1 
    +    nautical mile per hour (1.15 miles per hour or 1.852 
    +    kilometers per hour).
       </dd>
       <dt>Port</dt>
       <dd>
    -    <p><em>Port</em> is the nautical term (used on 
    -      boats and ships) that refers to the left side
    -      of a ship, as perceived by a person facing towards 
    -      the bow (the front of the vessel).</p>
    +    <i>Port</i> is the nautical term (used on 
    +    boats and ships) that refers to the left side
    +    of a ship, as perceived by a person facing towards 
    +    the bow (the front of the vessel).
       </dd>
       <dt>Starboard</dt>
       <dd>
    -    <p><em>Starboard</em> is the nautical term (used 
    -      on boats and ships) that refers to the right 
    -      side of a vessel, as perceived by a person 
    -      facing towards the bow (the front of the vessel).</p>
    +    <i>Starboard</i> is the nautical term (used 
    +    on boats and ships) that refers to the right 
    +    side of a vessel, as perceived by a person 
    +    facing towards the bow (the front of the vessel).
       </dd>
    -</dl>        
    +</dl>
    -

    Tests

    -

    Procedure

    -

    For any set of terms and their associated descriptions:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For any set of terms and their associated descriptions:

      -
    1. Check that the list is contained within a dl element.
    2. -
    3. Check that each term in the list being described is contained within a dt - element.
    4. -
    5. Check that when there is more than one term that shares the same decription that the dt elements immediately follow each other.
    6. -
    7. Check that the description for each term is contained in one or more dd elements.
    8. -
    9. Check that the one or more dd elements immediately follow the one or more dt elements containing the term being described.
    10. +
    11. Check that the list is contained within a dl element.
    12. +
    13. Check that each term in the list being described is contained within a dt element.
    14. +
    15. Check that when there is more than one term that shares the same description that the dt elements immediately follow each other.
    16. +
    17. Check that the description for each term is contained in one or more dd elements.
    18. +
    19. Check that the one or more dd elements immediately follow the one or more dt elements containing the term being described.
    -

    Expected Results

    +
    +

    Expected Results

    • All checks above are true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H42.html b/techniques/html/H42.html index 1036e8e064..481e6856db 100644 --- a/techniques/html/H42.html +++ b/techniques/html/H42.html @@ -1,105 +1,126 @@ -Using h1-h6 to identify headings

    Using h1-h6 to identify headings

    ID: H42

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to use HTML and XHTML heading markup to provide semantic code for headings in the content. Heading markup will allow assistive technologies to present the heading status of text to a user. A screen reader can recognize the code and announce the text as a heading with its level, beep or provide some other auditory indicator. Screen readers are also able to navigate heading markup which can be an effective way for screen reader users to more quickly find the content of interest. Assistive technologies that alter the authored visual display will also be able to provide an appropriate alternate visual display for headings that can be identified by heading markup.

    -

    Examples

    -
    -

    Hierarchical Heading Organization

    + + + + Using h1-h6 to identify headings + + + +

    Using h1-h6 to identify headings

    +
    +

    ID: H42

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to use HTML heading markup to provide semantic code for headings in the content. Heading markup will allow assistive technologies to present the heading status of text to a user. A screen reader can recognize the code and announce the text as a heading with its level, beep or provide some other auditory indicator. Screen readers are also able to navigate heading markup which can be an effective way for screen reader users to more quickly find the content of interest. Assistive technologies that alter the authored visual display will also be able to provide an appropriate alternate visual display for headings that can be identified by heading markup.

    +
    +
    +

    Examples

    +
    +

    Hierarchical Heading Organization

    -

    In the following example, headings are used in a hierarchical layout with h3 as a subsection of h2, which is a subsection of h1.

    +

    In the following example, headings are used in a hierarchical layout with h3 as a subsection of h2, which is a subsection of h1.

    -
    <h1>Plant Foods that Humans Eat</h1>
    -<p>There are an abundant number of plants that humans eat...</p>
    +
    <h1>Plant Foods that Humans Eat</h1>
    +<p>There are an abundant number of plants that humans eat ...</p>
     <h2>Fruit</h2>
    -<p> A fruit is a structure of a plant that contains its
    -  seeds...</p>
    +<p>A fruit is a structure of a plant that contains its seeds ...</p>
     <h3>Apple</h3>
    -<p>The apple is the pomaceous fruit of the apple tree...</p>
    +<p>The apple is the pomaceous fruit of the apple tree ...</p>
     <h3>Orange</h3>
    -<p>The orange is a hybrid of ancient cultivated origin...</p>
    +<p>The orange is a hybrid of ancient cultivated origin ...</p>
     <h3>Banana</h3>
     <p>Banana is the common name for herbaceous plants ...</p>
     <h2>Vegetables</h2>
    -<p>A vegetable is an edible plant or part of a plant other than a
    -  sweet fruit ...</p>
    +<p>A vegetable is an edible plant or part of a plant other than a sweet fruit ...</p>
     <h3>Broccoli</h3>
    -<p>Broccoli is a plant of the mustard/cabbage family ... </p>
    +<p>Broccoli is a plant of the mustard/cabbage family ...</p>
     <h3>Brussels sprouts</h3>
    -<p>The Brussels sprout of the Brassicaceae family, is a Cultivar
    -  group of wild cabbage ...</p>
    +<p>The Brussels sprout of the Brassicaceae family, is a Cultivar group 
    +   of wild cabbage ...</p>
     <h3>Green beans</h3>
     <p>Green beans have been bred for the fleshiness, flavor, or
    -  sweetness of their pods...</p>
    + sweetness of their pods ...</p>

    Headings in a 3-column layout

    -

    In this example, the main content of the page is in the middle column of a 3-column - page. The title of the main content matches the title of the page, and is marked as - h1, even though it is not the first thing on the page. The content in - the first and third columns is less important, and marked with h2.

    +

    In this example, the main content of the page is in the middle column of a 3-column page. The title of the main content matches the title of the page, and is marked as h1, even though it is not the first thing on the page. The content in the first and third columns is less important, and marked with h2.

    -

    It is important to note that the example code below is not intended to prescribe what level of heading should be used for a particular section of the web page. In the example, the layout could be presented with the first heading in each column at the same logical level (such as an h1), or as found in the example, where the logical level reflects its importance in relation to the main content.

    +

    It is important to note that the example code below is not intended to prescribe what level of heading should be used for a particular section of the web page. In the example, the layout could be presented with the first heading in each column at the same logical level (such as an h1), or as found in the example, where the logical level reflects its importance in relation to the main content.

    -
    <head>
    - <title>Stock Market Up Today</title>
    - </head>
    -
    - <body>
    -
    - <!-- left nav -->
    - <div class="left-nav">
    - <h2>Site Navigation</h2>
    - <!-- content here -->
    - </div>
    +
    <!doctype html>
    +<html lang="en">
    +<head>
    +  <title>Stock Market Up Today</title>
    +</head>
    +<body>
    +  <!-- left nav -->
    +  <nav class="left-nav">
    +    <h2>Site Navigation</h2>
    +    <!-- content here -->
    +  </nav>
     
    - <!-- main contents -->
    - <div class="main">
    - <h1>Stock Market up today</h1>
    - <!-- article text here -->
    - </div>
    +  <!-- main contents -->
    +  <main class="main">
    +    <h1>Stock Market up today</h1>
    +    <!-- content here -->
    +  </main>
     
    - <!-- right panel -->
    - <div class="left-nav">
    - <h2>Related links</h2>
    - <!-- content here -->
    - </div>
    - </body>
    + <!-- right panel --> + <aside class="side-bar"> + <h2>Related links</h2> + <!-- content here --> + </aside> +</body> +</html>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

    1. Check that heading markup is used when content is a heading and the heading markup indicates the appropriate heading level for the content.
    2. Check that heading markup is not used when content is not a heading.
    -

    Expected Results

    +
    +

    Expected Results

    • Checks #1 and #2 are true.
    -
    +

    Resources

    - - +
    +
    +

    Resources

    + + WebAIM: Semantic Structure: Regions, Headings, and Lists. + +
    diff --git a/techniques/html/H43.html b/techniques/html/H43.html index 1fbcfcc516..5de94cd852 100644 --- a/techniques/html/H43.html +++ b/techniques/html/H43.html @@ -1,40 +1,45 @@ -Using id and headers attributes to associate data cells with header cells in - data tables

    Using id and headers attributes to associate data cells with header cells in - data tables

    ID: H43

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to associate each data cell (in a data table) with - the appropriate headers. This technique adds a headers attribute to each - data cell (td element). It also adds an id attribute to any - cell used as a header for other cells. The headers attribute of a cell - contains a list of the id attributes of the associated header cells. If - there is more than one id, they are separated by spaces.

    -

    This technique is used when data cells are associated with more than one row and/or one - column header. This allows screen readers to speak the headers associated with each data - cell when the relationships are too complex to be identified using the th - element alone or the th element with the scope attribute. - Using this technique also makes these complex relationships perceivable when the - presentation format changes.

    -

    This technique is not recommended for layout tables since its use implies a - relationship between cells that is not meaningful when tables are used for layout.

    -

    Examples

    -
    -

    A table with multiple rows of headers

    -
    <table>
    -   <tr>
    -     <th rowspan="2" id="h">Homework</th>
    -     <th colspan="3" id="e">Exams</th>
    -     <th colspan="3" id="p">Projects</th>
    -   </tr>
    -   <tr>
    -     <th id="e1" headers="e">1</th>
    -     <th id="e2" headers="e">2</th>
    -     <th id="ef" headers="e">Final</th>
    -     <th id="p1" headers="p">1</th>
    -     <th id="p2" headers="p">2</th>
    -     <th id="pf" headers="p">Final</th>
    -   </tr>
    -   <tr>
    +
    +
    +   
    +      Using id and headers attributes to associate data cells with header cells in data tables
    +      
    +   
    +   
    +      

    Using id and headers attributes to associate data cells with header cells in data tables

    +
    +

    ID: H43

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to associate each data cell (in a data table) with the appropriate headers. This technique adds a headers attribute to each data cell (td element). It also adds an id attribute to any cell used as a header for other cells. The headers attribute of a cell contains a list of the id attributes of the associated header cells. If there is more than one id, they are separated by spaces.

    +

    This technique is used when data cells are associated with more than one row and/or one column header. This allows screen readers to speak the headers associated with each data cell when the relationships are too complex to be identified using the th element alone or the th element with the scope attribute. Using this technique also makes these complex relationships perceivable when the presentation format changes.

    +

    This technique is not recommended for layout tables since its use implies a relationship between cells that is not meaningful when tables are used for layout.

    +
    +
    +

    Examples

    +
    +

    A table with multiple rows of headers

    +
    <table>
    +  <tr>
    +    <th rowspan="2" id="h">Homework</th>
    +    <th colspan="3" id="e">Exams</th>
    +    <th colspan="3" id="p">Projects</th>
    +  </tr>
    +  <tr>
    +    <th id="e1" headers="e">1</th>
    +    <th id="e2" headers="e">2</th>
    +    <th id="ef" headers="e">Final</th>
    +    <th id="p1" headers="p">1</th>
    +    <th id="p2" headers="p">2</th>
    +    <th id="pf" headers="p">Final</th>
    +  </tr>
    +  <tr>
         <td headers="h">15%</td>
         <td headers="e e1">15%</td>
         <td headers="e e2">15%</td>
    @@ -42,53 +47,50 @@ 

    A table with multiple rows of headers

    <td headers="p p1">10%</td> <td headers="p p2">10%</td> <td headers="p pf">15%</td> - </tr> - </table>
    + </tr> +</table>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Check for layout tables: determine whether the content has a relationship with - other content in both its column and its row. If “no," the table is a layout - table. If “yes," the table is a data table.
    2. -
    3. For data tables, check that any cell that is associated with more than one row - and/or one column header contains a headers attribute that lists the - id for all headers associated with that cell.
    4. +
    5. Check for layout tables: determine whether the content has a relationship with other content in both its column and its row. If "no", the table is a layout table. If "yes", the table is a data table.
    6. +
    7. For data tables, check that any cell that is associated with more than one row and/or one column header contains a headers attribute that lists the id for all headers associated with that cell.
    8. -

      For data tables where any cell contains an id or - headers attribute,

      +

      For data tables where any cell contains an id or headers attribute:

        -
      1. Check that each id listed in the headers attribute - of the data cell matches the id attribute of a cell that is used - as a header element
      2. -
      3. Check that the headers attribute of a data cell contains the - id attribute of all headers associated with the data cell
      4. -
      5. Check that all ids are unique (that is, no two elements in the page have the - same id)
      6. +
      7. Check that each id listed in the headers attribute of the data cell matches the id attribute of a cell that is used as a header element.
      8. +
      9. Check that the headers attribute of a data cell contains the id attribute of all headers associated with the data cell.
      10. +
      11. Check that all ids are unique (that is, no two elements in the page have the same id).
    -

    Expected Results

    +
    +

    Expected Results

      -
    • If table is a layout table, no cells contain headers or - id attributes
    • -
    • If table is a data table and any cell contains an id attribute, - checks #3.a, #3.b, and #3.c are true.
    • -
    • If table is a data table and any cell is associated with more than one row and/or - one column header, check #2 is true.
    • +
    • If table is a layout table, no cells contain headers or id attributes.
    • +
    • If table is a data table and any cell contains an id attribute, checks #3.1, #3.2, and #3.3 are true.
    • +
    • If table is a data table and any cell is associated with more than one row and/or one column header, check #2 is true.
    -

    Resources

    +
    + +
    +

    Resources

    \ No newline at end of file diff --git a/techniques/html/H44.html b/techniques/html/H44.html index e31d25455e..a8fe0efad0 100644 --- a/techniques/html/H44.html +++ b/techniques/html/H44.html @@ -1,157 +1,155 @@ -Using label elements to associate text labels with form controls

    Using label elements to associate text labels with form controls

    ID: H44

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML controls that use external labels

    -

    Description

    -

    The objective of this technique is to use the label element to explicitly - associate a form control with a label. A label is attached to a specific - form control through the use of the for attribute. The value of the - for attribute must be the same as the value of the id - attribute of the form control.

    -

    The id attribute may have the same value as the name - attribute, but both must be provided, and the id must be unique in the Web - page.

    -

    This technique is sufficient for Success Criteria 1.1.1, 1.3.1 and 4.1.2 whether or not the label element is visible. That is, it may be hidden using CSS. However, for Success Criterion 3.3.2, the label element must be visible since it provides assistance to all users who need help understanding the purpose of the field.

    + + + + Using label elements to associate text labels with form controls + + + +

    Using label elements to associate text labels with form controls

    +
    +

    ID: H44

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML controls that use external labels

    +
    +
    +

    Description

    +

    The objective of this technique is to use the label element to explicitly associate a form control with a label. A label is attached to a specific form control through the use of the for attribute. The value of the for attribute must be the same as the value of the id attribute of the form control.

    +

    The id attribute may have the same value as the name attribute, but both must be provided, and the id must be unique in the Web page.

    +

    This technique is sufficient for Success Criteria 1.1.1 (Non-Text Content), 1.3.1 (Info and Relationships) and 4.1.2 (Name, Role, Value) whether or not the label element is visible. That is, it may be hidden using CSS. However, for Success Criterion 3.3.2 (Labels or Instructions), the label element must be visible since it provides assistance to all users who need help understanding the purpose of the field.

    An additional benefit of this technique is a larger clickable area for the control, since clicking on the label or the control will activate the control. This can be helpful for users with impaired motor control.

    -

    Note that the label is positioned after input elements of - - type="checkbox" and - type="radio".

    +

    Note that the label is positioned after input elements of type="checkbox" and type="radio".

    -

    Elements that use explicitly associated labels are:

    +

    Elements that use explicitly associated labels are:

      +
    • inputs for text entry: +
        +
      • input type="date"
      • +
      • input type="datetime-local"
      • +
      • input type="email"
      • +
      • input type="month"
      • +
      • input type="number"
      • +
      • input type="password"
      • +
      • input type="search"
      • +
      • input type="tel"
      • +
      • input type="text"
      • +
      • input type="time"
      • +
      • input type="url"
      • +
      • input type="week"
      • +
      +
    • - - input - type="text" -
    • + input type="checkbox" +
    • - - input - type="checkbox" -
    • + input type="color" +
    • - - input - type="radio" -
    • + input type="file" +
    • - - input - type="file" -
    • + input type="radio" +
    • - - input - type="password" -
    • + input type="range" +
    • - textarea -
    • + select +
    • - select -
    • + textarea +
    -

    The label element is not used for the following - because labels for these elements are provided via the value attribute (for Submit and - Reset buttons), the alt attribute (for image buttons), or element content itself - (button).

    +

    The label element is not used for the following elements:

      -
    • Submit and Reset buttons ( - input - type="submit" or - input - type="reset")
    • -
    • Image buttons ( - input - type="image")
    • -
    • Hidden input fields ( - input - type="hidden")
    • -
    • Script buttons (button elements or <input - type="button">)
    • +
    • button (the label is provided by the content)
    • +
    • input type="button" (the label is provided by the content)
    • +
    • input type="hidden"
    • +
    • input type="image" (the label is provided by the alt attribute)
    • +
    • input type="reset" (the label is label provided by the value attribute)
    • +
    • input type="submit" (the label is label provided by the value attribute)
    -

    Examples

    +
    +
    +

    Examples

    A text input field

    +

    The text field in this example has the explicit label of "First name:". The label element's for attribute matches the id attribute of the input element.

    -

    The text field in the example below has the explicit label of "First name:". The - label element's for attribute matches the - id attribute of the input element.

    - -
    <label for="firstname">First name:</label> 
    -<input type="text" name="firstname" id="firstname" />
    +
    <label for="firstname">First name:</label> 
    +<input id="firstname" name="firstname" type="text">

    A checkbox

    -
    <input type="checkbox" id="markuplang" name="computerskills" checked="checked">
    +
    <input checked id="markuplang" name="computerskills" type="checkbox">
     <label for="markuplang">HTML</label>

    A group of radio buttons

    +

    A small, related group of radio buttons with a clear description and labels for each individual element.

    -

    A small, related group of radio buttons with a clear description and labels for - each individual element.

    -
    -

    To provide clear associations and instructions for a large set of related radio - buttons , should be considered.

    -
    - -
     <h1>Donut Selection</h1>
    -
    -<p>Choose the type of donut(s) you would like then select 
    -   the "purchase donuts" button.</p>
    -
    -<form action="http://example.com/donut" method="post">
    -<p>
    -  <input type="radio" name="flavor" id="choc" value="chocolate" />
    -    <label for="choc">Chocolate</label><br/>
    -  <input type="radio" name="flavor" id="cream" value="cream"/>
    -    <label for="cream">Cream Filled</label><br/>
    -  <input type="radio" name="flavor" id="honey" value="honey"/>
    -    <label for="honey">Honey Glazed</label><br/>
    -  <input type="submit" value="Purchase Donuts"/>
    -</p>
    +
    <h1>Doughnut Selection</h1>
    +<form action="/buy-doughnuts" method="post">
    +  <fieldset>
    +    <legend>Pick the doughnut you would like</legend>
    +    <input id="dn-choc" name="flavor" type="radio" value="chocolate">
    +    <label for="dn-choc">Chocolate</label>
    +    <input id="dn-cream" name="flavor" type="radio" value="cream">
    +    <label for="dn-cream">Cream Filled</label>
    +    <input id="dn-raspberry" name="flavor" type="radio" value="raspberry">
    +    <label for="dn-raspberry">Raspberry Filled</label>
    +  </fieldset>
    +  <input type="submit" value="Purchase Your Doughnut">
     </form>
    -

    Tests

    -

    Procedure

    -

    For all input elements of type text, file or - password, for all textareas and for all - select elements in the Web page:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For all input elements of type text, file or password, for all textarea elements, and for all select elements in the Web page:

      -
    1. Check that there is a label element that identifies the purpose of - the control before the input, textarea, or select element
    2. -
    3. Check that the for attribute of the label element - matches the id of the input, textarea, or select element
    4. -
    5. Check that the label element is visible.
    6. +
    7. Check that there is a label element that identifies the purpose of the control before the input, textarea, or select element
    8. +
    9. Check that the for attribute of the label element matches the id of the input, textarea, or select element.
    10. +
    11. Check that the label element is visible.
    -

    For all input elements of type checkbox or radio in the Web page::

    +

    For all input elements of type checkbox or radio in the Web page:

      -
    1. Check that there is a label element that identifies the purpose of - the control after the input element
    2. -
    3. Check that the for attribute of the label element - matches the id of the input element
    4. -
    5. Check that the label element is visible.
    6. +
    7. Check that there is a label element that identifies the purpose of the control after the input element.
    8. +
    9. Check that the for attribute of the label element matches the id of the input element.
    10. +
    11. Check that the label element is visible.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • Checks #1 and #2 are true. For Success Criterion 3.3.2, Check #3 is also true.
    • +
    • Checks 1 and 2 are true.
    • +
    • For Success Criterion 3.3.2 (Labels or Instructions), Check 3 is also true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H45.html b/techniques/html/H45.html index 51a22206d9..1c1fb27c87 100644 --- a/techniques/html/H45.html +++ b/techniques/html/H45.html @@ -1,50 +1,50 @@ Using longdesc

    Using longdesc

    ID: H45

    Technology: html

    Type: Technique

    When to Use

    -

    HTML documents that include images that cannot be - described in a short text alternative.

    -

    Description

    -

    The objective of this technique is to provide information in a file designated by the - longdesc attribute when a short text alternative does not adequately convey the function - or information provided in the image. The longdesc attribute is a URI, the target of - which contains a long description of the non-text content.

    -

    Authors can provide a description for an image by including text in a separate resource or within the text of the page containing the image. An advantage of using a separate resource for the description is that it is easily reusable for multiple instances of the same image, it does not add on-page visual clutter to the original document, and the description's end-point is apparent to the user. An advantage of providing the description within the same page as the image is that all users can access the description. A limitation of the on-page method, as well as in providing multiple descriptions on a single separate page, is that current implementations supporting longdesc do not identify the long description's end-point. Authors can solve this by providing a well-formed description, which identifies the where the description ends.

    -

    Examples

    -
    -

    Using longdesc to refer to a long description contained on a separate resource.

    -
    <p><img src="chart.gif" alt="a complex chart" longdesc="chartdesc.html"/></p>
    -
    -
    -

    Using longdesc to refer to a long description within the same page.

    -
    <img longdesc="thispage.html#desc" alt="Line graph of the number of subscribers" src="http://www.company/images/graph.png">
    +  

    HTML documents that include images that cannot be + described in a short text alternative.

    +

    Description

    +

    The objective of this technique is to provide information in a file designated by the + longdesc attribute when a short text alternative does not adequately convey the function + or information provided in the image. The longdesc attribute is a URI, the target of + which contains a long description of the non-text content.

    +

    Authors can provide a description for an image by including text in a separate resource or within the text of the page containing the image. An advantage of using a separate resource for the description is that it is easily reusable for multiple instances of the same image, it does not add on-page visual clutter to the original document, and the description's end-point is apparent to the user. An advantage of providing the description within the same page as the image is that all users can access the description. A limitation of the on-page method, as well as in providing multiple descriptions on a single separate page, is that current implementations supporting longdesc do not identify the long description's end-point. Authors can solve this by providing a well-formed description, which identifies the where the description ends.

    +

    Examples

    +
    +

    Using longdesc to refer to a long description contained on a separate resource.

    +
    <p><img src="chart.gif" alt="a complex chart" longdesc="chartdesc.html"/></p>
    +
    +
    +

    Using longdesc to refer to a long description within the same page.

    +
    <img longdesc="thispage.html#desc" alt="Line graph of the number of subscribers" src="http://www.company/images/graph.png">
     <div id="desc">
     <h3>Long Description: Line graph of the number of subscribers</h3>
     <!-- Full Description of Graph -->
     <p>Long description ends.</p>
     <div>
    -
    -

    Tests

    -

    Procedure

    -
      -
    1. Check that the img element has a longdesc attribute.
    2. -
    3. Check that the value of the longdesc attribute is a valid URI of an existing resource.
    4. -
    5. Check that the content at the target of that URI contains a long description describing the original non-text content associated with it.
    6. -
    -
    -

    Expected Results

    -
      -
    • #1 through #3 are all true
    • -
    -
    -

    Resources

    - - - -
    +
    +

    Tests

    +

    Procedure

    +
      +
    1. Check that the img element has a longdesc attribute.
    2. +
    3. Check that the value of the longdesc attribute is a valid URI of an existing resource.
    4. +
    5. Check that the content at the target of that URI contains a long description describing the original non-text content associated with it.
    6. +
    +
    +

    Expected Results

    +
      +
    • #1 through #3 are all true
    • +
    +
    +

    Resources

    + + + +
    diff --git a/techniques/html/H48.html b/techniques/html/H48.html index 9c4c48534d..fd3d62a49c 100644 --- a/techniques/html/H48.html +++ b/techniques/html/H48.html @@ -1,35 +1,42 @@ -Using ol, ul and dl for lists or groups of links

    Using ol, ul and dl for lists or groups of links

    ID: H48

    Technology: html

    Type: Technique

    When to Use

    -

    HTML, XHTML

    -

    Description

    -

    The objective of this technique is to create lists of related items using list elements - appropriate for their purposes. The ol element is used when the list is - ordered and the ul element is used when the list is unordered. Definition - lists (dl) are used to group terms with their definitions. Although the use - of this markup can make lists more readable, not all lists need markup. For instance, - sentences that contain comma-separated lists may not need list markup.

    -

    When markup is used that visually formats items as a list but does not indicate the - list relationship, users may have difficulty in navigating the information. An example - of such visual formatting is including asterisks in the content at the beginning of each - list item and using <br> elements to separate the list items.

    -

    Some assistive technologies allow users to navigate from list to list or item to item. - Style sheets can be used to change the presentation of the lists while preserving their - integrity.

    -

    The list structure (ul/ol) is also useful to group hyperlinks. When this is done, it helps screen reader users to navigate from the first item in a list to the end of the list or jump to the next list. This helps them to bypass groups of links if they choose to.

    -

    Examples

    -
    -

    A list showing steps in a sequence

    - -

    This example uses an ordered list to show the sequence of steps in a process.

    + + + + Using ol, ul and dl for lists or groups of links + + + +

    Using ol, ul and dl for lists or groups of links

    +
    +

    ID: H48

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to create lists of related items using list elements appropriate for their purposes. The ol element is used when the list is ordered and the ul element is used when the list is unordered. Description lists (dl) are used to group name-value pairs of information, for example: terms and definitions or questions and answers. Although the use of this markup can make lists more readable, not all lists need markup. For instance, sentences that contain comma-separated lists may not need list markup.

    +

    When markup is used that visually formats items as a list but does not indicate the list relationship, users may have difficulty in navigating the information. An example of such visual formatting is including asterisks in the content at the beginning of each list item and using br elements to separate the list items.

    +

    Some assistive technologies allow users to navigate from list to list or item to item. Style sheets can be used to change the presentation of the lists while preserving their integrity.

    +

    The list structure, commonly unordered lists, is also useful to group hyperlinks. When this is done, it helps screen reader users to navigate from the first item in a list to the end of the list or jump to the next list. This helps them to bypass groups of links if they choose to.

    +
    +
    +

    Examples

    +
    +

    A list showing steps in a sequence

    +

    This example uses an ordered list to show the sequence of steps in a process.

    -
     <ol>
    -  <li>Mix eggs and milk in a bowl.</li>
    -  <li>Add salt and pepper.</li>
    +
    <ol>
    +  <li>Mix flour, eggs, milk, and seasoning in a bowl.</li>
    +  <li>Whisk until the batter is smooth.</li>
    +  <li>Rest the batter for at least 30 minutes before cooking.</li>
     </ol>

    A grocery list

    - -

    This example shows an unordered list of items to buy at the store.

    +

    This example shows an unordered list of items to buy at the store.

    <ul>
       <li>Milk</li>
    @@ -38,101 +45,90 @@ 

    A grocery list

    </ul>
    -

    A word and its definition

    +

    A word and its definition

    -

    This example uses a definition list to group a definition with the term that is - being defined.

    +

    This example uses a description list to group a definition with the term that is being defined.

    -
    <dl>
    +
    <dl>
       <dt>blink</dt>
    -  <dd>turn on and off between .5 and 3 times per second
    -  </dd>
    -</dl> 
    + <dd>turn on and off between 0.5 and 3 times per second</dd> +</dl>
    -

    Contact information using a definition list

    - -

    This example uses a defintion list to mark up pairs of related items. The pairs themselves are a logically related list. Since browsers lack wide support for CSS styling on definition list elements, span elements have been included in the markup for styling purposes only, and are not required:

    -
    <dl>
    -<dt><span>name:</span></dt><dd><span>John Doe</span></dd>
    -<dt><span>tel:</span></dt><dd><span>01-2345678</span></dd>
    -<dt><span>fax:</span></dt><dd><span>02-3456789</span></dd>
    -<dt><span>email:</span></dt><dd><span>johndoe@someemail.com</span></dd>
    +         

    Contact information using a description list

    +

    This example uses a description list to mark up pairs of related items. The pairs themselves are a logically related list.

    + +
    <dl>
    +  <div>
    +    <dt>Name:</dt>
    +    <dd>Taisha Silveri</dd>
    +  </div>
    +  <div>
    +    <dt>Tel:</dt>
    +    <dd>503-123-4567</dd>
    +  </div>
    +  <div>
    +    <dt>Email:</dt>
    +    <dd>taisha-silveri@example.com</dd>
    +  </div>
     </dl>
     
    -

    The following CSS styling can be used to format each paired item in the list on its own line, as well as giving a table-like layout:

    -
    dt, dd{float: left;margin: 0;padding: 0;}
    -dt{clear:both;font-weight: bold}
    -dt span{display: inline-block; width: 70px;}
    -dd span{display: inline-block; margin-right: 5px;}
    -
    -

    This is shown in the working example of Contact information using a definition list -

    + +

    This is shown in the working example of contact information using a description list.

    Using lists to group links

    -

    In this example the links are grouped using the ul and li - elements.

    +

    In this example the links are grouped using the ul and li elements.

    -
    <a name="categories" id="categories"></a><h2>Product Categories</h2>
    -<ul class="navigation">
    +
    <h2 id="product-categories">Product Categories</h2>
    +<nav aria-labelledby="product-categories">
    +  <ul>
         <li><a href="kitchen.html">Kitchen</a></li>
         <li><a href="bedbath.html">Bed &amp; Bath</a></li>
         <li><a href="dining.html">Fine Dining</a></li>
         <li><a href="lighting.html">Lighting</a></li>
         <li><a href="storage.html">Storage</a><li>
    -</ul> 
    - -

    CSS can be used to style the list elements, so this technique can be used with a - variety of visual appearances.

    -

    Here is a style that removes the list bullets and the left padding that creates the - indent and flows the individual list elements horizontally.

    - -
    ul.navigation {
    -  list-style: none; 
    -  padding: 0;
    -}
    -ul.navigation li {
    -  display: inline;
    -}
    - -

    This style removes the list bullets and the left padding and displays the items in - a floating block.

    - -
    ul.navigation {
    - list-style: none; 
    - padding: 0;
    -}
    -ul.navigation li {
    - display: block; 
    - float: left;
    -}
    + </ul> +</nav>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

    1. Check that content that has the visual appearance of a list (with or without bullets) is marked as an unordered list.
    2. Check that content that has the visual appearance of a numbered list is marked as an ordered list.
    3. -
    4. Check that content is marked as a definition list when terms and their definitions are presented in the form of a list.
    5. +
    6. Check that content is marked as a description list when groups of name-value pairs, for example: terms and definitions or questions and answers, are presented in the form of a list.
    -

    Expected Results

    +
    +

    Expected Results

    • All the checks above are true.
    -

    Resources

    - +
    + +
    +

    Resources

    \ No newline at end of file diff --git a/techniques/html/H49.html b/techniques/html/H49.html index 136cba47bf..03008ebc08 100644 --- a/techniques/html/H49.html +++ b/techniques/html/H49.html @@ -1,6 +1,22 @@ -Using semantic markup to mark emphasized or special text

    Using semantic markup to mark emphasized or special text

    ID: H49

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    + + + + Using semantic markup to mark emphasized or special text + + + +

    Using semantic markup to mark emphasized or special text

    +
    +

    ID: H49

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    The objective of this technique is to demonstrate how semantic markup can be used to mark emphasized or special text so that it can be programmatically determined. Using semantic markup to mark emphasized or special text also provides structure to the @@ -10,80 +26,72 @@

    Most user agents will visually distinguish text that has been identified using semantic markup. Some assistive technologies provide a mechanism for determining the characteristics of content that has been created using proper semantic markup.

    -

    Examples

    -

    See rendered examples of semantic - text.

    +
    +
    +

    Examples

    +

    See rendered examples of semantic text.

    +

    Using the em and strong elements + to emphasize text

    -

    This example shows how to use the em and strong elements - to emphasize text. The em and strong elements were +

    The em and strong elements are designed to indicate structural emphasis that may be rendered in a variety of ways (font style changes, speech inflection changes, etc.).

    -
     ...What she <em>really</em> meant to say was, &quot;This is not ok, 
    - it is <strong>excellent</strong>&quot;!... 
    +
     ... What she <em>really</em> meant to say was, &quot;This is not OK, 
    + it is <strong>excellent</strong>&quot;! ...
    +

    Using the blockquote element to mark up long quotations from another source

    -

    This example shows using the blockquote element to mark up long - quotations which may require paragraph breaks. It also demonstrates the use of the - cite element to specify a reference.

    +

    This example also demonstrates the use of the cite element to specify a reference.

    -
    <p>The following is an excerpt from the <cite>The Story of my Life</cite> by Helen Keller</p>
    - <blockquote>
    -   <p>Even in the days before my teacher came, I used to feel along the square stiff boxwood
    -   hedges, and, guided by the sense of smell, would find the first violets and lilies.  
    -   There, too, after a fit of temper, I went to find comfort and to hide my hot face 
    -   in the cool leaves and grass.</p>
    - </blockquote>
    +
    <p>The following is an excerpt from the <cite>The Story Of My Life</cite> 
    +   by Helen Keller:</p>
    +<blockquote>
    +  <p>Even in the days before my teacher came, I used to feel along the square stiff
    +     boxwood hedges, and, guided by the sense of smell, would find the first violets
    +     and lilies. There, too, after a fit of temper, I went to find comfort and to hide
    +     my hot face in the cool leaves and grass.</p>
    +</blockquote>
    +

    Using the q element to mark up a shorter quotation from another source

    -

    Here is the use of the q element to mark up a shorter quotation. - Quotes are provided around the q element, because many user agents do - not support this element yet and therefore do not display it properly (see UA - notes). CSS rules to suppress automatic generation of quotes are provided for those - user agents that do support the q element, to prevent them from - generating quotes automatically in addition to the quotes provided by the author, - resulting in double-quoted content. In the future, when the q element - is more broadly supported, the need to provide quotes and suppress browser-generated - quotes will go away.

    +

    Quotation marks aren't manually added to the quote because they are added by the user agent.

    -
    q:before { content: ""; } 
    -q:after { content: ""; }  
    -
     <p>Helen Keller said, "<q>Self-pity is our worst enemy and if we yield to it, 
    -we can never do anything good in the world.</q>"</p>
    +
    <p>Helen Keller said, <q>Self-pity is our worst enemy and if we yield to it, 
    +   we can never do anything good in the world</q>.</p>
    +

    Using the sup and sub elements to mark up superscripts and subscripts

    -

    Superscripts and subscripts are created using the sup and - sub elements.

    +

    The sup and sub elements must be used only to mark up typographical conventions with specific meanings, not for typographical presentation for presentation's sake.

    -
     <p>Beth received 1<sup>st</sup> place in the 9<sup>th</sup> grade science competition.</p>
    +
    <p>Beth won 1<sup>st</sup> place in the 9<sup>th</sup> grade science competition.</p>
     <p>The chemical notation for water is H<sub>2</sub>O.</p>
    -

    This example shows use of the code element to provide visual emphasis and consistent restyling capability for code rendered on a web page. In this example shows a code code element being used to emphasize a block of CSS code.

    +

    Using the code element to mark up code

    +

    This example shows use of the code element to provide visual emphasis for a CSS rule:

    <code>
     #trial {
    -background-image: url(30daytrial.jpg);
    -background-repeat: no-repeat;
    -background-position: left top;
    -padding-top: 68px;
    +  background-image: url(30daytrial.jpg);
    +  background-position: left top;
    +  background-repeat: no-repeat;
    +  padding-top: 68px;
     } 
     </code>

    Tests

    Procedure

      -
    1. Examine the content for information that is conveyed through variations in - presentation of text.
    2. -
    3. Check that appropriate semantic markup (such as em, strong, cite, - blockquote, sub, and sup) have been used to mark the - text that conveys information through variations in text.
    4. +
    5. Examine the content for information that is conveyed through variations in presentation of text.
    6. +
    7. Check that appropriate semantic markup (such as em, strong, cite, blockquote, sub, and sup) have been used to mark the text that conveys information through variations in text.
    -

    Expected Results

    +
    +

    Expected Results

    • Check #2 is true.
    @@ -93,17 +101,11 @@

    Resources

    \ No newline at end of file diff --git a/techniques/html/H51.html b/techniques/html/H51.html index 06cbad3391..6d71c51d5e 100644 --- a/techniques/html/H51.html +++ b/techniques/html/H51.html @@ -1,37 +1,47 @@ -Using table markup to present tabular information

    Using table markup to present tabular information

    ID: H51

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to present tabular information in a way that + + + + Using table markup to present tabular information + + + +

    Using table markup to present tabular information

    +
    +

    ID: H51

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to present tabular information in a way that preserves relationships within the information even when users cannot see the table or the presentation format is changed. Information is considered tabular when logical relationships among text, numbers, images, or other data exist in two dimensions (vertical and horizontal). These relationships are represented in columns and rows, and the columns and rows must be recognizable in order for the logical relationships to be perceived.

    -

    Using the table element with the child elements tr, - th, and td makes these relationships perceivable. Techniques - such as inserting tabs to create columns or using the pre element are - purely visual, and visually implied logical relationships are lost if the user cannot - see the table or the visual presentation is changed.

    -

    Simple tables generally have only one level of headers for columns and/or one level of headers on the rows.

    -

    Usually, for simple tables, row 1 column 1 is either blank or describes the contents of the entire column 1. Row 1 columns are not blank (i.e. they contain "column headings"), describe the contents of the entire column, and allow the reader to distinguish the difference in meaning between that column and other columns.

    -

    Column 1 rows are usually not blank, they often contain "row headings" which describe the contents of the entire row, and allow the reader to distinguish the difference in meaning between that row and the other rows. Otherwise, the Column 1 would contain simple data.

    -

    Examples

    -
    -

    A schedule marked up as a simple data table with column and row headers

    +

    Using the table element with the child elements tr, + th, and td makes these relationships perceivable. Techniques + such as inserting tabs to create columns or using the pre element are purely visual, and visually implied logical relationships are lost if the user cannot see the table or the visual presentation is changed.

    +

    Simple tables generally have only one level of headers for columns and/or one level of headers on the rows.

    +

    Usually, for simple tables, row 1 column 1 is either blank or describes the contents of the entire column 1. Row 1 columns are not blank (i.e. they contain "column headings"), describe the contents of the entire column, and allow the reader to distinguish the difference in meaning between that column and other columns.

    +

    Column 1 rows are usually not blank, they often contain "row headings" which describe the contents of the entire row, and allow the reader to distinguish the difference in meaning between that row and the other rows. Otherwise, the Column 1 would contain simple data.

    +
    +
    +

    Examples

    +
    +

    A schedule marked up as a simple data table with column and row headers

    -

    This example uses markup for a simple data table. The first row shows the days of - the week. Time intervals are shown in the first column. These cells are marked with - the th element. This identifies the days of the week as column headers - and the time intervals as row headers.

    -

    Screen readers speak header information that changes as the user navigates the - table. Thus, when screen reader users move to left or right along a row, they will - hear the day of the week (the column header) followed by the appointment (if any). - They will hear the time interval as they move up or down within the same column.

    +

    This example uses markup for a simple data table. The first row shows the days of the week. Time intervals are shown in the first column. These cells are marked with the th element. This identifies the days of the week as column headers and the time intervals as row headers.

    +

    Screen readers speak header information that changes as the user navigates the table. Thus, when screen reader users move to left or right along a row, they will hear the day of the week (the column header) followed by the appointment (if any). They will hear the time interval as they move up or down within the same column.

    -
     <table>
    +
    <table>
       <tr>
    -    <td> </td>
    +    <th>Time</th>
         <th>Monday</th>
         <th>Tuesday</th>
         <th>Wednesday</th>
    @@ -39,7 +49,7 @@ 

    A schedule marked up as a simple data table with column and row headers

    <th>Friday</th> </tr> <tr> - <th>8:00-9:00</th> + <th scope="row">8:00-9:00</th> <td>Meet with Sam</td> <td> </td> <td> </td> @@ -47,7 +57,7 @@

    A schedule marked up as a simple data table with column and row headers

    <td> </td> </tr> <tr> - <th>9:00-10:00</th> + <th scope="row">9:00-10:00</th> <td> </td> <td> </td> <td>Doctor Williams</td> @@ -56,37 +66,52 @@

    A schedule marked up as a simple data table with column and row headers

    </tr> </table>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

    1. Check for the presence of tabular information.
    2. -

      For each occurrence of tabular information:

      +

      For each occurrence of tabular information:

        -
      1. Check that table markup with at least the elements table, - tr, th, and td is used.
      2. +
      3. Check that table markup with at least the elements table, tr, th, and td is used.
    -

    Expected Results

    +
    +

    Expected Results

    • All checks above are true.
    -

    Resources

    - +
    + +
    +

    Resources

    - -
    \ No newline at end of file +
    + + \ No newline at end of file diff --git a/techniques/html/H53.html b/techniques/html/H53.html index 2b82cc5133..389338cf3f 100644 --- a/techniques/html/H53.html +++ b/techniques/html/H53.html @@ -54,7 +54,6 @@

    The image object has content that provides a brief description of the functi

    Resources

      diff --git a/techniques/html/H56.html b/techniques/html/H56.html index af5d3df88f..6b77a1dabb 100644 --- a/techniques/html/H56.html +++ b/techniques/html/H56.html @@ -1,56 +1,78 @@ -Using the dir attribute on an inline element to resolve problems - with nested directional runs

      Using the dir attribute on an inline element to resolve problems - with nested directional runs

      ID: H56

      Technology: html

      Type: Technique

      When to Use

      -

      HTML and XHTML

      -

      Description

      -

      The objective of this technique is to identify changes in the text direction of text that includes nested directional runs by providing the dir attribute on - inline elements. A nested directional run is a run of text that includes mixed directional text, for example, a paragraph in English containing a quoted Hebrew sentence which in turn includes an English phrase. Use of the dir attribute on an enclosing span or other inline element may be necessary because the Unicode bidirectional algorithm can produce undesirable results when mixed - directional text contains spaces or punctuation. The concepts used in this technique are described in What you need to know about the bidi algorithm and inline markup.

      -

      Examples

      -
      - -

      This example defines the text direction of a nested, mixed-direction phrase, in Hebrew and English, to be right-to-left. Because the whole quote is in Hebrew, and therefore runs right to left, the text "W3C" and the comma should appear to the left of (i.e., after) the Hebrew text, like this:

      -

      The title is "פעילות הבינאום, W3C" in Hebrew.

      -

      Visually-ordered ASCII version (RTL text in uppercase, LTR in lower):

      -

      the title is "w3c ,YTIVITCA NOITAZILANOITANRETNI" in hebrew.

      -

      The Unicode bidirection algorithm alone is insufficient to achieve the right result, and leaves the text 'W3C' on the right side of the quote:

      -

      The title is "פעילות הבינאום, W3C" in Hebrew.

      -

      Visually-ordered ASCII version:

      -

      the title is "YTIVITCA NOITAZILANOITANRETNI, w3c" in hebrew.

      -

      The following markup will produce the expected result:

      + + + + Using the dir attribute on an inline element to resolve problems with nested directional runs + + + +

      Using the dir attribute on an inline element to resolve problems + with nested directional runs

      +
      +

      ID: H56

      +

      Technology: html

      +

      Type: Technique

      +
      +
      +

      When to Use

      +

      HTML

      +
      +
      +

      Description

      +

      The objective of this technique is to identify changes in the text direction of text that includes nested directional runs by providing the dir attribute on inline elements. A nested directional run is a run of text that includes mixed directional text, for example, a paragraph in English containing a quoted Hebrew sentence which in turn includes an English phrase. Use of the dir attribute on an enclosing span or other inline element may be necessary because the Unicode bidirectional algorithm can produce undesirable results when mixed directional text contains spaces or punctuation. The concepts used in this technique are described in What you need to know about the bidi algorithm and inline markup.

      +
      +
      +

      Examples

      +
      +

      Defining the text direction of a nested, mixed-direction phrase, in Hebrew and English, to be right-to-left

      +

      Because the whole quote is in Hebrew, and therefore runs right to left, the text "W3C" and the comma should appear to the left of (i.e., after) the Hebrew text, like this:

      +

      The title is "פעילות הבינאום, W3C" in Hebrew.

      +

      Visually-ordered ASCII version (RTL text in uppercase, LTR in lower):

      +

      the title is "w3c ,YTIVITCA NOITAZILANOITANRETNI" in Hebrew.

      +

      The Unicode bidirection algorithm alone is insufficient to achieve the right result, and leaves the text "W3C" on the right side of the quote:

      +

      The title is "פעילות הבינאום, W3C" in Hebrew.

      +

      Visually-ordered ASCII version:

      +

      the title is "YTIVITCA NOITAZILANOITANRETNI, w3c" in hebrew.

      +

      The following markup will produce the expected result:

      -
      -<p>The title says "<span lang="he" 
      -dir="rtl">פעילות הבינאום, W3C</span>" in Hebrew.</p> 
      +
      <p>The title says "<span lang="he" dir="rtl">פעילות הבינאום, W3C</span>" in Hebrew.</p>
      -

      Tests

      -

      Procedure

      +
      +
      +

      Tests

      +
      +

      Procedure

      1. Examine the text direction of text in the document
      2. -
      3. If the text direction is right-to-left, check that for the ancestor element that - has a dir attribute, the attribute has the value "rtl"
      4. -
      5. If the text direction is left-to-right, check that there is no ancestor element - with a dir attribute, or that for the ancestor element that has a - dir attribute, the attribute has the value "ltr"
      6. +
      7. If the text direction is right-to-left, check that for the ancestor element that has a dir attribute, the attribute has the value "rtl"
      8. +
      9. If the text direction is left-to-right, check that there is no ancestor element with a dir attribute, or that for the ancestor element that has a dir attribute, the attribute has the value "ltr"
      -

      Expected Results

      +
      +

      Expected Results

        -
      • Checks #2 and #3 are true for all text.
      • +
      • Checks 2 and 3 are true for all text.
      -

      Resources

      - - - -
      \ No newline at end of file +
      + +
      +

      Resources

      + +
      + + \ No newline at end of file diff --git a/techniques/html/H57.html b/techniques/html/H57.html index 7ac6a269bd..24cc9d064a 100644 --- a/techniques/html/H57.html +++ b/techniques/html/H57.html @@ -2,10 +2,10 @@ Using the language attribute on the HTML element - + -

      Using the language attribute on the HTML element

      +

      Using the language attribute on the HTML element

      ID: H57

      3.1.1 Language of Page

      @@ -18,37 +18,27 @@

      When to Use

      Description

      -

      The objective of this technique is to identify the default language of a document by - providing the lang attribute on the html - element.

      -

      Identifying the language of the document is important for a number of reasons:

      +

      The objective of this technique is to identify the default language of a document by providing the lang attribute on the html element.

      +

      Identifying the language of the document is important for a number of reasons:

        -
      • It allows braille translation software to substitute control codes for accented - characters, and insert control codes necessary to prevent erroneous creation of - Grade 2 braille contractions.
      • -
      • Speech synthesizers that support multiple languages will be able to orient and - adapt to the pronunciation and syntax that are specific to the language of the page, - speaking the text in the appropriate accent with proper pronunciation.
      • -
      • Marking the language can benefit future developments in technology, for example - users who are unable to translate between languages themselves will be able to use - machines to translate unfamiliar languages.
      • -
      • Marking the language can also assist user agents in providing definitions using a - dictionary.
      • +
      • It allows braille translation software to substitute control codes for accented characters, and insert control codes necessary to prevent erroneous creation of Grade 2 braille contractions.
      • +
      • Speech synthesizers that support multiple languages will be able to orient and adapt to the pronunciation and syntax that are specific to the language of the page, speaking the text in the appropriate accent with proper pronunciation.
      • +
      • Marking the language can benefit future developments in technology, for example users who are unable to translate between languages themselves will be able to use machines to translate unfamiliar languages.
      • +
      • Marking the language can also assist user agents in providing definitions using a dictionary.
      -

      HTML uses the lang attribute of the html element.

      -
      +
      +

      Examples

      - -

      This example defines the content of an HTML document to be in the French language.

      -
      <!DOCTYPE>
      +         

      Defining the content of an HTML document to be in French

      +
      <!doctype html>
       <html lang="fr"> 
       <head>
      +  <meta charset="utf-8">
         <title>document écrit en français</title>
      -  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
       </head>  
       <body>     
      -	...document écrit en français...   
      +  ... document écrit en français ...
       </body>
       </html>
      @@ -57,11 +47,10 @@

      Examples

      Tests

      Procedure

      -

      Examine the html element of the document.

      -
        -
      1. Check that the html element has a lang attribute.
      2. -
      3. Check that the value of the lang attribute conforms to BCP 47: Tags for the - Identification of Languages or its successor and reflects the primary language used by the Web page.
      4. +

        Examine the html element of the document.

        +
          +
        1. Check that the html element has a lang attribute.
        2. +
        3. Check that the value of the lang attribute conforms to BCP 47: Tags for the Identification of Languages or its successor and reflects the primary language used by the Web page.
      @@ -82,16 +71,16 @@

      Resources

      diff --git a/techniques/html/H58.html b/techniques/html/H58.html index 988206eb61..b8f4ab5a03 100644 --- a/techniques/html/H58.html +++ b/techniques/html/H58.html @@ -1,12 +1,12 @@ - Using language attributes to identify changes in the human language - + Using language attributes to identify changes in the human language + -

      Using language attributes to identify changes in the human language

      +

      Using language attributes to identify changes in the human language

      ID: H58

      3.1.2 Language of Parts

      @@ -20,41 +20,43 @@

      When to Use

      Description

      -

      The objective of this technique is to clearly identify any changes in language on a page by using the lang attribute.

      +

      The objective of this technique is to clearly identify any changes in language on a page by using the lang attribute.

      -

      Allowed values for the lang attribute are indicated in the resources referenced below. Language tags use a primary code to indicate the language, and optional sub-codes (separated by hyphen characters) to indicate variants of the language. For instance, English is indicated with the primary code "en"; British English and American English can be distinguished by using "en-GB" and "en-US", respectively. Use of the primary code is important for this technique. Use of subcodes is optional but may be helpful in certain circumstances.

      +

      Allowed values for the lang attribute are indicated in the resources referenced below. Language tags use a primary code to indicate the language, and optional sub-codes (separated by hyphen characters) to indicate variants of the language. For instance, English is indicated with the primary code "en"; British English and American English can be distinguished by using "en-GB" and "en-US", respectively. Use of the primary code is important for this technique. Use of sub-codes is optional but may be helpful in certain circumstances.

      Examples

      -
      -

      This example demonstrates the use of the lang attribute to define a quote written in German.

      +
      +

      The use of the lang attribute to define a quote written in German

      -
      <blockquote lang="de">
      +
      <blockquote lang="de">
         <p>
           Da dachte der Herr daran, ihn aus dem Futter zu schaffen,
           aber der Esel merkte, daß kein guter Wind wehte, lief fort
           und machte sich auf den Weg nach Bremen: dort, meinte er,
           könnte er ja Stadtmusikant werden.
         </p>
      -</blockquote>   
      -            
      +</blockquote>
      -

      Tests

      -

      Procedure

      -

      For each element in the document:

      +
      +

      Tests

      +
      +

      Procedure

      +

      For each element in the document:

      1. Check that the human language of the content of the element is the same as the - inherited language for the element as specified in HTML 4.01, Inheritance of language codes -
      2. + inherited language for the element as specified in HTML - The lang and xml:lang attributes. +
      -

      For each lang attribute in the document:

      +

      For each lang attribute in the document:

        -
      1. Check that the value of the lang attribute conforms to BCP 47: Tags for the Identification of Languages or its successor
      2. +
      3. Check that the value of the lang attribute conforms to BCP 47: Tags for the Identification of Languages or its successor.
      4. Check that the language code matches the language of the content it applies to.
      -

      Expected Results

      +
      +

      Expected Results

      • All checks above are true.
      @@ -66,20 +68,21 @@

      Related Techniques

    • H57
    -

    Resources

    +
    +

    Resources

    diff --git a/techniques/html/H59.html b/techniques/html/H59.html index 53e9b66126..56f31fe3ce 100644 --- a/techniques/html/H59.html +++ b/techniques/html/H59.html @@ -1,74 +1,85 @@ -Using the link element and navigation tools

    Using the link element and navigation tools

    ID: H59

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to describe how the link element can + + + + Using the link element and navigation tools + + + +

    Using the link element and navigation tools

    +
    +

    ID: H59

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to describe how the link element can provide metadata about the position of an HTML page within a set of Web pages or can - assist in locating content with a set of Web pages. The value of the rel - attributes indicates what type of relation is being described, and the href - attribute provides a link to the document having that relation. Multiple - link elements can provide multiple relationships. Several values of - rel are useful:

    + assist in locating content with a set of Web pages. The value of the rel + attributes indicates what type of relation is being described, and the href + attribute provides a link to the document having that relation. Different link element rel values are used to create relationships:

      -
    • Start: Refers to the first document in a collection of documents.
    • -
    • Next: Refers to the next document in a linear sequence of documents.
    • -
    • Prev: Refers to the previous document in an ordered series of documents.
    • -
    • Contents: Refers to a document serving as a table of contents.
    • -
    • Index: Refers to a document providing an index for the current document.
    • +
    • next: Refers to the next document in a linear sequence of documents.
    • +
    • prev: Refers to the previous document in an ordered series of documents.
    -

    Examples

    +
    +
    +

    Examples

    A Web page for Chapter 2 of an on-line book might contain the following links - within the head section.

    + within the head section.

    -
    <link rel="Contents" href="Contents.html" title="Table of Contents"  />
    -<link rel="Index" href="Index.html" title="Index" />
    -<link rel="Prev" href="Chapter01.html" title="01. Why Volunteer?" />
    -<link rel="Next" href="Chapter03.html" title="03. Who Volunteers?" />
    +
    <link rel="prev" href="Chapter01.html" title="01. Why Volunteer?">
    +<link rel="next" href="Chapter03.html" title="03. Who Volunteers?" />
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

    For a Web page that is within a sequence or collection of Web pages:

      -
    1. Check that all link elements pertaining to navigation occur in the - head section of the document.
    2. +
    3. Check that all link elements pertaining to navigation occur in the head section of the document.
    4. -

      For each link element in the head section of the - document which pertains to navigation, check that it contains at least:

      +

      For each link element in the head section of the document which pertains to navigation, check that it contains at least:

        -
      1. a rel attribute identifying the link type
      2. -
      3. a valid href attribute to locate the appropriate resource
      4. +
      5. a rel attribute identifying the link type
      6. +
      7. a valid href attribute to locate the appropriate resource
    -

    Expected Results

    +
    +

    Expected Results

    • All of the checks above are true.
    -

    Resources

    +
    + +
    +

    Resources

    diff --git a/techniques/html/H64.html b/techniques/html/H64.html index a9de147a7b..3e766a43e5 100644 --- a/techniques/html/H64.html +++ b/techniques/html/H64.html @@ -1,90 +1,70 @@ -Using the title attribute of the frame and iframe elements

    Using the title attribute of the frame and iframe elements

    ID: H64

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML documents that use frames or iframes

    -

    Description

    -

    The objective of this technique is to demonstrate the use of the title - attribute of the frame or iframe element to describe the contents - of each frame. This provides a label for the frame so users can determine which frame to - enter and explore in detail. It does not label the individual page (frame) or inline - frame (iframe) in the frameset.

    -

    Note that the title attribute labels frames, and is different from the - title element which labels documents. Both should be provided, since the - first facilitates navigation among frames and the second clarifies the user's current - location.

    -

    The title attribute is not interchangeable with the name - attribute. The title labels the frame for users; the name - labels it for scripting and window targeting. The name is not presented to - the user, only the title is.

    -

    In HTML5 the frame element is marked as obsolete. The iframe element remains part of the HTML5 specification.

    -

    Examples

    -
    - -

    This example shows how to use the title attribute with - frame to describe the frames containing the navigation bar and the - document.

    - -
    <html xmlns="http://www.w3.org/1999/xhtml">
    -  <head>
    -    <title>A simple frameset document</title>
    -  </head>
    -  <frameset cols="10%, 90%">
    -    <frame src="nav.html" title="Main menu" />
    -    <frame src="doc.html" title="Documents" />
    -    <noframes>
    -      <body>
    -        <a href="lib.html" title="Library link">Select to
    -        go to the electronic library</a>
    -      </body>
    -    </noframes>
    -  </frameset>
    -</html> 
    + + + + Using the title attribute of the iframe element + + + +

    Using the title attribute of the iframe element

    +
    +

    ID: H64

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML documents that use iframes

    +
    +

    Description

    +

    The objective of this technique is to demonstrate the use of the title + attribute of the iframe element to describe its contents. This provides a label for the frame so users can determine which frame to enter and explore in detail. It does not label the content inside the iframe.

    +
    +

    The title attribute labels iframes, and is different from the title element which labels documents. Both should be provided, since the first facilitates navigation among iframes and the second clarifies the user's current page.

    +
    +

    The title attribute is not interchangeable with the name + attribute. The title labels the frame for users; the name + labels it for scripting and window targeting. The name is not presented to the user, only the title is.

    +
    +
    +

    Examples

    - -

    This example shows how to use the title attribute with iframe to - describe the contents of an inline frame. The example also includes an alternative - link to the page included by the iframe element for older browsers, which may not - understand the iframeelement.

    - -
     <html xmlns="http://www.w3.org/1999/xhtml">
    -  <head>
    -    <title>A document using iframe</title>
    -  </head>
    +         

    Using the title attribute with an iframe to describe the iframe's content

    + +
    <!doctype html>
    +<html lang="en">
    +<head>
    +   <title>A document using an iframe</title>
    +</head>
     ...
    -<iframe src="banner-ad.html" id="testiframe" 
    -  name="testiframe" title="Advertisement">
    -    <a href="banner-ad.html">Advertisement</a>
    -</iframe>
    +<iframe src="banner-ad.html" name="ad-iframe" title="Advertisement"></iframe>
     ...
    -</html>  
    +</html>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Check each frame and iframe element in the HTML or XHTML source code for the presence of a - title attribute.
    2. -
    3. Check that the title attribute contains text that identifies the frame.
    4. +
    5. Check each iframe element in the HTML source code for the presence of a title attribute.
    6. +
    7. Check that the title attribute contains text that describes the iframe's content.
    -

    Expected Results

    +
    +

    Expected Results

    • Checks #1 and #2 are true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H67.html b/techniques/html/H67.html index 8d45921d7f..5956347bb8 100644 --- a/techniques/html/H67.html +++ b/techniques/html/H67.html @@ -1,37 +1,71 @@ -Using null alt text and no title attribute on img elements for images that AT - should ignore

    Using null alt text and no title attribute on img elements for images that AT - should ignore

    ID: H67

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML documents that load images.

    -

    Description

    -

    The purpose of this technique is to show how images can be marked so that they can be - ignored by Assistive Technology.

    -

    If no title attribute is used, and the alt text is set to null (i.e. - - alt="") it indicates to assistive technology that the image can be safely - ignored.

    + + + + Using null alt text and no title attribute on img elements for images that assistive technology should ignore + + + +

    Using null alt text and no title attribute on img elements for images that assistive technology should ignore

    +
    +

    ID: H67

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML documents that load images.

    +
    +
    +

    Description

    +

    The purpose of this technique is to show how images can be marked so that they can be ignored by assistive technology.

    +

    If no title attribute is used, and the alt text is set to null (i.e., alt="") it indicates to assistive technology that the image can be safely ignored.

    -

    Have a "null" alt attribute is not the same as having no alt attribute.

    +

    Having a "null" alt attribute is not the same as having no alt attribute.

    -

    Examples

    +
    +
    +

    Examples

    +

    Inserting a decorative image on a Web page

    -

    The following image is used to insert a decorative image on a Web page.

    - -
    -<img src="squiggle.gif" width="20" height="20" alt="" />
    +
    +<img alt="" src="squiggle.gif" height="20" width="20">
     
    -

    Tests

    -

    Procedure

    -

    For each image that should be ignored:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each image that should be ignored:

      -
    1. Check that title attribute is either absent or empty.
    2. -
    3. Check that alt attribute is present and empty.
    4. +
    5. Check that title attribute is either absent or empty.
    6. +
    7. Check that alt attribute is present and empty.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • #1 and #2 are true
    • +
    • #1 and #2 are true
    -

    Resources

    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H69.html b/techniques/html/H69.html index 96375b50da..fc44f6d4eb 100644 --- a/techniques/html/H69.html +++ b/techniques/html/H69.html @@ -1,140 +1,141 @@ -Providing heading elements at the beginning of each section of content

    Providing heading elements at the beginning of each section of content

    ID: H69

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to use section headings to convey the structure of - the content. Heading markup can be used:

    + + + + Providing heading elements at the beginning of each section of content + + + +

    Providing heading elements at the beginning of each section of content

    +
    +

    ID: H69

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to use section headings to convey the structure of the content. Heading markup can be used:

      -
    • to indicate start of main content
    • -
    • to mark up section headings within the main content area
    • -
    • to demarcate different navigational sections like top or main navigation, left or - secondary navigation and footer navigation
    • -
    • to mark up images of text that are used as headings
    • -
    • to allow users the ability to navigate a page by sections or skip repeated blocks of information
    • +
    • to indicate start of main content;
    • +
    • to mark up section headings within the main content area;
    • +
    • to demarcate different navigational sections like top or main navigation, left or secondary navigation and footer navigation;
    • +
    • to mark up images of text that are used as headings;
    • +
    • to allow users the ability to navigate a page by sections or skip repeated blocks of information.
    -

    Headings are designed to convey logical hierarchy. Skipping - levels in the sequence of headings may create the impression that the structure of the - document has not been properly thought through or that specific headings have been - chosen for their visual rendering rather than their meaning. Authors are encouraged to - nest headings hierarchically. When headings are nested hierarchically, the most important information is given the highest logical level, and subsections are given subsequent logical levels.(i.e., h2 is a subsection of h1). Providing this type of structure will help users understand the overall organization of the content more easily.

    -

    Since headings indicate the start of important sections of content, it is possible for - users with assistive technology to jump directly to the appropriate heading and begin - reading the content. This significantly speeds interaction for users who would otherwise - access the content slowly. Headings create chunks of information that can be found easily by people with disabilities, such as a blind person using a screen reader, or a person with a cognitive disability who uses assistive technology that delineates groups of information, or someone with a communication disability or illiteracy, who uses a screen reader to assist them in their reading. -

    +

    Headings are designed to convey logical hierarchy. Skipping levels in the sequence of headings may create the impression that the structure of the document has not been properly thought through or that specific headings have been chosen for their visual rendering rather than their meaning. Authors are encouraged to nest headings hierarchically. When headings are nested hierarchically, the most important information is given the highest logical level, and subsections are given subsequent logical levels.(i.e., h2 is a subsection of h1). Providing this type of structure will help users understand the overall organization of the content more easily.

    +

    Since headings indicate the start of important sections of content, it is possible for users with assistive technology to jump directly to the appropriate heading and begin reading the content. This significantly speeds interaction for users who would otherwise access the content slowly. Headings create chunks of information that can be found easily by people with disabilities, such as a blind person using a screen reader, or a person with a cognitive disability who uses assistive technology that delineates groups of information, or someone with a communication disability or illiteracy, who uses a screen reader to assist them in their reading.

    -

    All of our techniques assume that people needing special user agents (including AT or special plug-ins) will get and be using that type user agent (eg screen reader, or plug-in that allows keyboard navigation of properly marked up content, etc).

    +

    All of our techniques assume that people needing special user agents (including assistive technology or special plug-ins) will get and be using that type of user agent (for example: a screen reader, or plug-in that allows keyboard navigation of properly marked up content, etc.).

    -

    Examples

    +
    +
    +

    Examples

    +

    Organizing the sections of a search page

    +

    This example marks up each section heading using h2 elements.

    -

    This example organizes the sections of a search page by marking each section - heading using h2 elements.

    - -
    <h1>Search Technical Periodicals</h1>
    +
    <h1>Search Technical Periodicals</h1>
      <h2>Search</h2>
    - <form action="search.php">
    -  <p><label for="searchInput">Enter search topic: </label>
    -  <input type="text" size="30" id="searchInput">
    -  <input type="submit" value="Go"></p>
    + <form action="/search" role="search">
    +  <label for="searchInput">Enter search topic:</label>
    +  <input id="searchInput" type="text">
    +  <input type="submit" value="Search">
      </form>
    - <h2>Available Periodicals</h2>
    - <div class="jlinks">
    -  <a href="pcoder.com">Professional Coder</a> |
    -  <a href="algo.com">Algorithms</a> |
    -  <a href="jse.com">Journal of Software Engineering</a>
    - </div>
    - <h2>Search Results</h2>
    - ... search results are returned in this section ...   
    + <section> + <h2>Available Periodicals</h2> + <ul> + <li><a href="https://example.com/pcoder">Professional Coder</a></li> + <li><a href="https://example.com/algo">Algorithms</a></li> + <li><a href="https://example.com/jse">Journal of Software Engineering</a></li> + </ul> + </section> + <section> + <h2>Search Results</h2> + ... search results are returned in this section ... + </section>

    Headings show the overall organization of the content

    +

    In this example, heading markup is used to make the navigation and main content sections perceivable.

    -

    In this example, heading markup is used to make the navigation and main content - sections perceivable.

    - -
    <!-- Logo, banner graphic, search form, etc.  -->
    -  <h2>Navigation</h2>
    -    <ul>
    -      <li><a href="about.htm">About us</a></li>
    -      <li><a href="contact.htm">Contact us</a></li>
    -       ...
    -    </ul>
    -  <h2>All about headings</h2>
    -   <!-- Text, images, other material making up the main content... --> 
    -            
    +
    <main>
    +  <h1>Why Monday Monkey Lives For The Weekend</h1>
    +  ... text, images, and other material making up the main content ...
    +</main>
    +<nav aria-labelledby="nav-heading">
    +  <h2 id="nav-heading">More About Monday Monkey, Ltd.</h2>
    +  <ul>
    +    <li><a href="/about">About us</a></li>
    +    <li><a href="/contact">Contact us</a></li>
    +    ...
    +  </ul>
    +</nav>

    Headings show the organization of material within the main content

    -

    Note that in HTML 4.01 and XHTML 1.x, heading elements only mark the beginning of - sections. Because there is no markup to associate a heading element with the section content explicitly, users will assume that the heading applies to all following content until the next heading element is encountered.

    - -
     <html xmlns="http://www.w3.org/1999/xhtml">
    +
    <!doctype html>
    +<html lang="en">
       <head>
    +    <meta charset="utf-8">
         <title>Cooking techniques</title>  
       </head>   
    -  <body>     
    -    <h1>Cooking techniques</h1>     
    -    <p>       
    -      ... some text here ...     
    -    </p>           
    -    <h2>Cooking with oil</h2> 
    -    <p> 
    -        ... text of the section ...     
    -    </p>           
    -    <h2>Cooking with butter</h2>       
    -    <p>
    -        ... text of the section ...     
    -    </p>   
    +  <body>
    +    <main>
    +      <h1>Cooking techniques</h1>     
    +      <p>... some text here ...</p>
    +      <h2>Cooking with oil</h2> 
    +      <p>... text of the section ...</p>
    +      <h2>Cooking with butter</h2>       
    +      <p>... text of the section ...</p>
    +    </main>
       </body> 
    -</html>    
    +</html>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Check that the content is divided into separate sections
    2. +
    3. Check that the content is divided into separate sections.
    4. Check that each section on the page starts with a heading.
    -

    Expected Results

    +
    +

    Expected Results

    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H71.html b/techniques/html/H71.html index 23c4469ec5..36fa215f05 100644 --- a/techniques/html/H71.html +++ b/techniques/html/H71.html @@ -1,132 +1,144 @@ - Providing a description for groups of form controls using fieldset and legend - elements

    Providing a description for groups of form controls using fieldset and legend - elements

    ID: H71

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to provide a semantic grouping for related form controls. This allows users to understand the relationship of the controls and interact with the form more quickly and effectively.

    -

    Form controls can be grouped by enclosing them within the fieldset element. All controls within a given fieldset are then related. The first element inside the fieldset must be a legend element, which provides a label or description for the group. Authors should avoid nesting fieldsets unnecessarily, as this can lead to confusion.

    -

    Grouping controls is most important for related radio buttons and checkboxes. A set of radio buttons or checkboxes is related when they all submit values for a single named field. They work in the same way as selection lists, allowing the user to choose from a set of options, except selection lists are single controls while radio buttons and checkboxes are multiple controls. The individual label associated with each radio or checkbox control may not fully convey the group's descriptive context. In this situation, it is essential that they be grouped together semantically to facilitate being treated as a single control, as well as to provide an additional group level description. Often, user agents will present the value of the legend before the label of each control to provide this description, as well as to remind users that they are part of the same group.

    -

    It can also be useful to group other sets of controls less tightly related than radio buttons and checkboxes. For instance, several fields that collect a user's address might be grouped together with a legend of "Address", thus providing a group level description for these controls. As a rule of thumb, it can be said that where a group of controls within a larger form requires an additional heading to provide a description specific to that particular group, the use of fieldset and legend elements is appropriate.

    -

    However, when a group of related radio buttons or checkboxes (even having values for a single named field) includes clear instructions and distinct selections (i.e. where the individual label associated with each particular control provides a sufficient description), the use of the fieldset and legend elements is not required. - H44 is sufficient in this case.

    -

    Authors sometimes avoid using the fieldset element because of the default display in the browser, which draws a border around the grouped controls. This visual grouping is also useful and authors should seriously consider retaining it (or some form of visual grouping). The visual effect can be modified in CSS by overriding the "border" property of the fieldset and the "position" property of the legend.

    -

    Examples

    -
    -

    A multiple choice test

    + + + + Providing a description for groups of form controls using fieldset and legend elements + + + +

    Providing a description for groups of form controls using fieldset and legend elements

    +
    +

    ID: H71

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to provide a semantic grouping for related form controls. This allows users to understand the relationship of the controls and interact with the form more quickly and effectively.

    +

    Form controls can be grouped by enclosing them within the fieldset element. All controls within a given fieldset are then related. The first element inside the fieldset must be a legend element, which provides a label or description for the group. Authors should avoid nesting fieldsets unnecessarily, as this can lead to confusion.

    +

    Grouping controls is most important for related radio buttons and checkboxes. A set of radio buttons or checkboxes is related when they all submit values for a single named field. They work in the same way as selection lists, allowing the user to choose from a set of options, except selection lists are single controls while radio buttons and checkboxes are multiple controls. The individual label associated with each radio or checkbox control may not fully convey the group's descriptive context. In this situation, it is essential that they be grouped together semantically to facilitate being treated as a single control, as well as to provide an additional group level description. Often, user agents will present the value of the legend before the label of each control to provide this description, as well as to remind users that they are part of the same group.

    +

    It can also be useful to group other sets of controls less tightly related than radio buttons and checkboxes. For instance, several fields that collect a user's address might be grouped together with a legend of "Address", thus providing a group level description for these controls. As a rule of thumb, it can be said that where a group of controls within a larger form requires an additional heading to provide a description specific to that particular group, the use of fieldset and legend elements is appropriate.

    +

    However, when a group of related radio buttons or checkboxes (even having values for a single named field) includes clear instructions and distinct selections (i.e., where the individual label associated with each particular control provides a sufficient description), the use of the fieldset and legend elements is not required. H44 is sufficient in this case.

    +

    Authors sometimes avoid using the fieldset element because of the default display in the browser, which draws a border around the grouped controls. This visual grouping is also useful and authors should seriously consider retaining it (or some form of visual grouping). The visual effect can be modified in CSS by overriding the border property of the fieldset and the position property of the legend.

    +
    +
    +

    Examples

    +
    +

    A multiple choice test

    -

    This example shows a test item with one question and five possible answers. Each - answer is represented by a radio button ( - input - type="radio"). The radio - buttons are contained within a fieldset. The test question is tagged - with the legend element.

    +

    This example shows a test item with one question and five possible answers. Each answer is represented by a radio button (input type="radio"). The radio buttons are contained within a fieldset. The test question is tagged with the legend element. Each field has the same name attribute, indicating these radio buttons are related, and should be grouped as shown. Also note that while the name attributes have the same value, the id attributes' values must be unique.

    -
    <fieldset>
    +
    <fieldset>
       <legend>The play <cite>Hamlet</cite> was written by:</legend>
    -  <input type="radio" id="shakesp" name="hamlet" checked="checked" value="a">
    -  <label for="shakesp">William Shakespeare</label><br />
    -  <input type="radio" id="kipling" name="hamlet" value="b">
    -  <label for="kipling">Rudyard Kipling</label><br />
    -  <input type="radio" id="gbshaw" name="hamlet" value="c">
    -  <label for="gbshaw">George Bernard Shaw</label><br />
    -  <input type="radio" id="hem" name="hamlet" value="d">
    -  <label for="hem">Ernest Hemingway</label><br />
    -  <input type="radio" id="dickens" name="hamlet" value="e">
    -  <label for="dickens">Charles Dickens</label>
    -</fieldset>   
    + <div> + <input checked="checked" id="shakesp" name="hamlet" type="radio" value="a"> + <label for="shakesp">William Shakespeare</label> + </div> + <div> + <input id="austen" name="hamlet" type="radio" value="b"> + <label for="austen">Jane Austen</label> + </div> + <div> + <input id="gbshaw" name="hamlet" type="radio" value="c"> + <label for="gbshaw">George Bernard Shaw</label> + </div> + <div> + <input id="woolf" name="hamlet" type="radio" value="d"> + <label for="woolf">Virginia Woolf</label> + </div> + <div> + <input id="dickens" name="hamlet" type="radio" value="e"> + <label for="dickens">Charles Dickens</label> + </div> +</fieldset>
    -

    A set of checkboxes

    - -

    The User Profile page for a Web site allows users to indicate their interests by - selecting multiple checkboxes. Each checkbox ( - input - type="checkbox") - has a label. The checkboxes are contained within a - fieldset, and the legend element contains the prompt for - the entire group of checkboxes.

    +

    A set of checkboxes

    +

    The User Profile page for a Web site allows users to indicate their interests by selecting multiple checkboxes. Each checkbox (input type="checkbox") has a label. The checkboxes are contained within a fieldset, and the legend element contains the prompt for the entire group of checkboxes.

    -
    <fieldset>
    +
    <fieldset>
       <legend>I am interested in the following (check all that apply):</legend>
    -  <input type="checkbox" id="photo" name="interests" value="ph">
    -  <label for="photo">Photography</label><br />
    -  <input type="checkbox" id="watercol" name="interests" checked="checked" value="wa">
    -  <label for="watercol">Watercolor</label><br />
    -  <input type="checkbox" id="acrylic" name="interests" checked="checked" value="ac">
    -  <label for="acrylic">Acrylic</label>
    -  …
    -</fieldset>    
    + <div> + <input id="photo" name="interests" type="checkbox" value="ph"> + <label for="photo">Photography</label> + </div> + <div> + <input checked="checked" id="watercol" name="interests" type="checkbox" value="wa"> + <label for="watercol">Watercolor</label> + </div> + <div> + <input checked="checked" id="acrylic" name="interests" type="checkbox" value="ac"> + <label for="acrylic">Acrylic</label> + </div> +</fieldset>
    +
    -

    Radio buttons submitting to the same named field

    +

    Logically related controls

    +

    In this example, form fields for residential and postal addresses are distinguished by the value of the legend in each fieldset grouping.

    -

    This example requests the user to choose a single philosopher. Note that each field has the same "name" attribute, indicating these radio buttons are related (they all submit the same field), and should be grouped as shown. Also note that while the "name" attributes are the same, the "id" attributes must be unique.

    - -
    <form action="http://example.com/vote" method="post">
    +
    <form action="/adduser" method="post">
       <fieldset>
    -    <legend>Your preferred philosopher</legend>
    -    <input type="radio" name="philosopher" id="philosopher_socrates" value="socrates"/>
    -    <label for="philosopher_socrates">Socrates</label>
    -    <input type="radio" name="philosopher" id="philosopher_plato" value="plato"/>
    -    <label for="philosopher_plato">Plato</label>
    -    <input type="radio" name="philosopher" id="philosopher_aristotle" value="aristotle"/>
    -    <label for="philosopher_aristotle">Aristotle</label>
    +    <legend>Your Residential Address</legend>
    +    <div>
    +      <label for="raddress">Address:</label>
    +      <input autocomplete="street-address" id="raddress" name="raddress" type="text">
    +    </div>
    +    <div>
    +      <label for="rzip">Postal/Zip Code:</label>
    +      <input autocomplete="postal-code" id="rzip" name="rzip" type="text">
    +    </div>    
    +  </fieldset>
    +  <fieldset>
    +    <legend>Your Postal Address</legend>
    +    <div>    
    +      <label for="paddress">Address:</label>
    +      <input autocomplete="street-address" id="paddress" name="paddress" type="text">
    +    </div>
    +    <div>      
    +      <label for="pzip">Postal/Zip Code:</label>
    +      <input autocomplete="postal-code" id="pzip" name="pzip" type="text">
    +    </div>    
       </fieldset>
    -  </form> 
    - -
    -

    Groups of related checkboxes work in the same way, except the user is allowed to express more than one preference for the field.

    -
    - -
    -
    -

    Logically related controls

    - -

    In this example, form fields for residential and postal addresses are distinguished by the value of the legend in each fieldset grouping.

    - -
    <form action="http://example.com/adduser" method="post">
    -   <fieldset>
    -     <legend>Residential Address</legend>
    -     <label for="raddress">Address: </label>
    -     <input type="text" id="raddress" name="raddress" />
    -     <label for="rzip">Postal/Zip Code: </label>
    -     <input type="text" id="rzip" name="rzip" />
    -     ...more residential address information...
    -   </fieldset>
    -   <fieldset>
    -     <legend>Postal Address</legend>
    -     <label for="paddress">Address: </label>
    -     <input type="text" id="paddress" name="paddress" />
    -     <label for="pzip">Postal/Zip Code: </label>
    -     <input type="text" id="pzip" name="pzip" />
    -     ...more postal address information...
    -   </fieldset>
     </form>
    -

    Tests

    -

    Procedure

    -

    For groups of related controls where the individual labels for each control do not provide a sufficient description, and an additional group level description is needed,

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For groups of related controls where the individual labels for each control do not provide a sufficient description, and an additional group level description is needed:

      -
    1. Check that the group of logically related input or select elements are contained within fieldset elements.
    2. -
    3. Check that each fieldset has a legend element that includes a description for that group.
    4. +
    5. Check that the group of logically related input or select elements are contained within fieldset elements.
    6. +
    7. Check that each fieldset has a legend element that includes a description for that group.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • All of the above checks are true.
    • +
    • All of the checks are true.
    -

    Resources

    - - +
    + +
    +

    Resources

    +
    diff --git a/techniques/html/H74.html b/techniques/html/H74.html index c598b59a9d..d4ed30216b 100644 --- a/techniques/html/H74.html +++ b/techniques/html/H74.html @@ -1,75 +1,68 @@ -Ensuring that opening and closing tags are used according to specification

    Ensuring that opening and closing tags are used according to specification

    ID: H74

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to avoid key errors that are known to cause - problems for assistive technologies when they are trying to parse content which involve - having opening and closing tags that are not used according to specification. These - errors can be avoided by using the HTML or XHTML mechanism to specify the technology and - technology version, and making sure the Web page does not have these types of errors in - it. There are several validators that the developer can use: validation reports - generally mention these types of errors. This technique deals only with errors related - to incorrectly formed opening and closing tags. The document type declaration is not - strictly necessary for this type of evaluation, but specifying the document type - declaration makes it easier to use a validator.

    -

    Examples

    -
    -

    HTML

    - -

    HTML pages include a document type declaration (sometimes referred to as - !DOCTYPE statement). The developer can use offline or online - validators (see Resources below) to check that all id attribute values are unique - and that opening and closing tags are used according to the specification.

    -

    The specification for which elements require closing tags has changed with the introduction of HTML5.

    - + + + + Ensuring that opening and closing tags are used according to specification + + + +

    Ensuring that opening and closing tags are used according to specification

    +
    +

    ID: H74

    +

    Technology: html

    +

    Type: Technique

    -
    -

    XHTML

    - -

    Like other XML-based documents, XHTML documents reference a Document Type - Definition (DTD) or other type of XML schema. The developer can use online or - offline validators (including validation tools built into editors) to check that - opening and closing tags are used according to the specification.

    - +
    +

    When to Use

    +

    HTML

    -
    -

    Using test frameworks

    - -

    When a Website generates HTML or XHTML dynamically instead of serving only static pages, a - developer can use XHTMLUnit, - XML Test Suite or a similar - framework to test the generated XHTML code.

    - -
    -

    Tests

    -

    Procedure

    -
      -
    1. Check that there are closing tags for all elements with required closing tags. -
    2. -
    3. Check that there are no closing tags for all elements where closing tags are - forbidden.
    4. -
    5. Check that opening and closing tags for all elements are correctly nested.
    6. -
    -
    -

    Expected Results

    -

    Steps 1, 2, and 3 are true.

    -
    -

    Resources

    - - -

    For other resources, see Validating Web - pages.

    - -
    +
    +

    Description

    +

    The objective of this technique is to avoid key errors that are known to cause problems for assistive technologies when they are trying to parse content which involve having opening and closing tags that are not used according to specification. There are several validators that a developer can use: validation reports generally mention these types of errors. This technique deals only with errors related to incorrectly formed opening and closing tags. The document type declaration is not strictly necessary for this type of evaluation, but specifying the document type declaration makes it easier to use a validator.

    +
    +
    +

    Examples

    +
    +

    HTML

    +

    HTML pages include a document type declaration (sometimes referred to as !DOCTYPE declaration). A developer can use offline or online validators (see the Resources section) to check that all id attribute values are unique and that opening and closing tags are used according to the specification.

    +
    +
    +
    +

    Tests

    +
    +

    Procedure

    +
      +
    1. Check that there are closing tags for all elements with required closing tags.
    2. +
    3. Check that there are no closing tags for all elements where closing tags are forbidden.
    4. +
    5. Check that opening and closing tags for all elements are correctly nested.
    6. +
    +
    +
    +

    Expected Results

    +

    Steps 1, 2, and 3 are true.

    +
    +
    + +
    +

    Resources

    + +
    + + diff --git a/techniques/html/H76.html b/techniques/html/H76.html index dd85f87be8..5de7980b09 100644 --- a/techniques/html/H76.html +++ b/techniques/html/H76.html @@ -1,50 +1,70 @@ -Using meta refresh to create an instant client-side redirect

    Using meta refresh to create an instant client-side redirect

    ID: H76

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to enable redirects on the client side without - confusing the user. Redirects are preferably implemented on the server side (see Implementing automatic redirects on the server side - instead of on the client side), but authors do not always have control over - server-side technologies.

    -

    In HTML and XHTML, one can use the meta element with the value of - the http-equiv attribute set to "Refresh" and the value of the - content attribute set to "0" (meaning zero seconds), followed by the URI - that the browser should request. It is important that the time-out is set to zero, to - avoid that content is displayed before the new page is loaded. The page containing the - redirect code should only contain information related to the redirect.

    -

    Examples

    -
    -
     <html xmlns="http://www.w3.org/1999/xhtml">    
    -  <head>      
    -    <title>The Tudors</title>      
    -    <meta http-equiv="refresh" content="0;URL='http://thetudors.example.com/'" />    
    +
    +
    +   
    +      Using meta refresh to create an instant client-side redirect
    +      
    +   
    +   
    +      

    Using meta refresh to create an instant client-side redirect

    +
    +

    ID: H76

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to enable redirects on the client side without confusing the user. Redirects are preferably implemented on the server side (see Implementing automatic redirects on the server side instead of on the client side), but authors do not always have control over server-side technologies.

    +

    In HTML, one can use the meta element with the value of the http-equiv attribute set to refresh and the value of the content attribute set to 0 (meaning zero seconds), followed by the URI that the browser should request. It is important that the time-out is set to zero, to avoid that content is displayed before the new page is loaded. The page containing the redirect code should only contain information related to the redirect.

    +
    +
    +

    Examples

    +
    +

    Instantly redirecting a page

    +
    <!doctype html>
    +<html lang="en">    
    +  <head>
    +    <meta charset="utf-8">
    +    <title>Panucci's Pizza</title>
    +    <meta http-equiv="refresh" content="0; URL=https://planet-express.example.com">
       </head>    
    -  <body> 
    -    <p>This page has moved to a <a href="http://thetudors.example.com/">
    -      theTudors.example.com</a>.</p> 
    +  <body>
    +    <p>This page has moved to <a href="https://planet-express.example.com">
    +       Planet Express</a>.</p> 
       </body>  
    -</html>     
    -
    -

    Tests

    -

    Procedure

    -
      -
    1. Find all meta elements in the document.
    2. -
    3. For each meta element, check if it contains the attribute - http-equiv with value "refresh" (case-insensitive) and the - content attribute with a number greater than 0 followed by - ;'URL=anyURL' (where anyURL stands for the URI that should replace - the current page).
    4. -
    +</html>
    +
    -

    Expected Results

    -

    Step 2 is false.

    +
    +

    Tests

    +
    +

    Procedure

    +

    Find all meta elements in the document that contain the http-equiv attribute with value refresh, check that:

    +
      +
    1. the content attribute has a number with a value of 0, and
    2. +
    3. the number is followed by ;URL=anyURL (where anyURL stands for the URI that should replace the current page).
    4. +
    +
    +
    +

    Expected Results

    +

    Steps 1 and 2 are true.

    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H78.html b/techniques/html/H78.html index ad12ce85e4..c7fa6181e9 100644 --- a/techniques/html/H78.html +++ b/techniques/html/H78.html @@ -1,60 +1,79 @@ -Identifying the purpose of a link using link text combined with its enclosing - paragraph

    Identifying the purpose of a link using link text combined with its enclosing - paragraph

    ID: H78

    Technology: html

    Type: Technique

    When to Use

    -

    All technologies that contain links.

    -

    Description

    -

    The objective of this technique is to identify the purpose of a link from the link in - its paragraph context. The paragraph enclosing the link provides context for an - otherwise unclear link when the paragraph is the nearest enclosing block-level ancestor - element. The description lets a user distinguish this link from links in the Web page - that lead to other destinations and helps the user determine whether to follow the link. - Note that simply providing the URI of the destination is generally not sufficiently - descriptive.

    -
    -

    These descriptions will be most useful to the user if the additional information - needed to understand the link precedes the link. If the additional information follows - the link, there can be confusion and difficulty for screen reader users who are - reading through the page in order (top to bottom).

    -
    -

    Examples

    -
    - -

    Announcements column on a Folk Festival Web page.

    + + + + Identifying the purpose of a link using link text combined with its enclosing paragraph + + + +

    Identifying the purpose of a link using link text combined with its enclosing paragraph

    +
    +

    ID: H78

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    All technologies that contain links.

    +
    +
    +

    Description

    +

    The objective of this technique is to identify the purpose of a link from the link in its paragraph context. The paragraph enclosing the link provides context for an otherwise unclear link when the paragraph is the nearest enclosing block-level ancestor element. The description lets a user distinguish this link from links in the Web page that lead to other destinations and helps the user determine whether to follow the link. Note that simply providing the URI of the destination is generally not sufficiently descriptive.

    +
    +

    These descriptions will be most useful to the user if the additional information needed to understand the link precedes the link. If the additional information follows the link, there can be confusion and difficulty for screen reader users who are reading through the page in order (top to bottom).

    +
    +
    +
    +

    Examples

    +
    +

    Announcements content on a folk festival Web page

    -
    <h3>The final 15</h3>
    -<p>Coming soon to a town near you...the final 15 in the 
    -National Folk Festival lineup.
    -<a href="final15.html">[Read more...]</a>
    +
    <h3>The final 15</h3>
    +<p>
    +  Coming soon to a town near you: the final 15 in the 
    +  National Folk Festival lineup.
    +  <a href="final-15.html">Read more</a>
     </p>
     
     <h3>Folk artists get awards</h3>
    -<p>Performers from the upcoming National Folk Festival receive 
    - National Heritage Fellowships. 
    - <a href="nheritage.html">[Read more...]</a>
    -</p>
    -…   
    +<p> + Performers from the upcoming National Folk Festival receive + National Heritage Fellowships. + <a href="national-heritage.html">Read more</a> +</p>
    +
    -

    Tests

    -

    Procedure

    -

    For each link in the content that uses this technique:

    -
      -
    1. Check that the link is part of a paragraph.
    2. -
    3. Check that text of the link combined with the text of its enclosing paragraph - describes the purpose of the link.
    4. -
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each link in the content that uses this technique:

    +
      +
    1. Check that the link is part of a paragraph.
    2. +
    3. Check that text of the link combined with the text of its enclosing paragraph describes the purpose of the link.
    4. +
    +
    +
    +

    Expected Results

    +
      +
    • Steps 1 and 2 are true.
    • +
    +
    -

    Expected Results

    + -

    Resources

    \ No newline at end of file +
  • G53
  • +
  • G91
  • +
  • H33
  • +
  • H77
  • +
  • H79
  • +
  • H80
  • +
  • H81
  • +
  • C7
  • + +
    +
    +

    Resources

    +
    + + \ No newline at end of file diff --git a/techniques/html/H79.html b/techniques/html/H79.html index 446ca79b7c..f0e092a84b 100644 --- a/techniques/html/H79.html +++ b/techniques/html/H79.html @@ -1,81 +1,105 @@ -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

    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

    ID: H79

    Technology: html

    Type: Technique

    When to Use

    -

    All technologies that contain links.

    -

    Description

    -

    The objective of this technique is to identify the purpose of a link from the link in - its data table context. This context is the table cell enclosing the link and the cell's - associated table header cells. The data table context provides the purpose for an otherwise - unclear link when the table cell is the nearest enclosing block-level ancestor element. - It lets a user distinguish this link from other links in the Web page that lead to other - destinations and helps the user determine whether to follow the link. Note that simply - providing the URI of the destination is not sufficiently descriptive for people with - disabilities, especially those with cognitive disabilities.

    -

    Examples

    -
    -

    A table of rental car choices

    -
     <table>
    -<tr>
    -  <th></th>
    -  <th scope="col">Alamo</th>
    -  <th scope="col">Budget</th>
    -  <th scope="col">National</th>
    -  <th scope="col">Avis</th>
    -  <th scope="col">Hertz</th>
    -</tr>
    -<tr>
    -  <th scope="row">Economy cars</th>
    -  <td><a href="econ_ala.htm">$67/day</a></td>
    -  <td><a href="econ_bud.htm">$68/day</a></td>
    -  <td><a href="econ_nat.htm">$72/day</a></td>
    -  <td><a href="econ_av.htm">$74/day</a></td>
    -  <td><a href="econ_hz.htm">$74/day</a></td>
    -</tr>
    -<tr>
    -  <th scope="row">Compact cars</th>
    -  <td><a href="comp_ala.htm">$68/day</a></td>
    -  <td><a href="comp_bud.htm">$69/day</a></td>
    -  <td><a href="comp_nat.htm">$74/day</a></td>
    -  <td><a href="comp_av.htm">$76/day</a></td>
    -  <td><a href="comp_hz.htm">$76/day</a></td>
    -</tr>
    -<tr>
    -  <th scope="row">Mid-sized cars</th>
    -  <td><a href="mid_ala.htm">$79/day</a></td>
    -  <td><a href="mid_bud.htm">$80/day</a></td>
    -  <td><a href="mid_nat.htm">$83/day</a></td>
    -  <td><a href="mid_av.htm">$85/day</a></td>
    -  <td><a href="mid_hz.htm">$85/day</a></td>
    -</tr>
    -<tr>
    -  <th scope="row">Full-sized cars</th>
    -  <td><a href="full_ala.htm">$82/day</a></td>
    -  <td><a href="full_bud.htm">$83/day</a></td>
    -  <td><a href="full_nat.htm">$89/day</a></td>
    -  <td><a href="full_av.htm">$91/day</a></td>
    -  <td><a href="full_hz.htm">$91/day</a></td>
    -</tr>
    -</table>  
    + + + + 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 + + + +

    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

    +
    +

    ID: H79

    +

    Technology: html

    +

    Type: Technique

    -

    Tests

    -

    Procedure

    +
    +

    When to Use

    +

    All technologies that contain links.

    +
    +
    +

    Description

    +

    The objective of this technique is to identify the purpose of a link from the link in its data table context. This context is the table cell enclosing the link and the cell's associated table header cells. The data table context provides the purpose for an otherwise unclear link when the table cell is the nearest enclosing block-level ancestor element. It lets a user distinguish this link from other links in the Web page that lead to other destinations and helps the user determine whether to follow the link. Note that simply providing the URI of the destination is not sufficiently descriptive for people with disabilities, especially those with cognitive disabilities.

    +
    +
    +

    Examples

    +
    +

    A table of rental car choices

    +
    <table>
    +  <caption>Available rental cars with cost per day</caption>
    +  <tr>
    +    <th>Type of car</th>
    +    <th>Alamo</th>
    +    <th>Budget</th>
    +    <th>National</th>
    +    <th>Avis</th>
    +    <th>Hertz</th>
    +  </tr>
    +  <tr>
    +    <th scope="row">Economy</th>
    +    <td><a href="econ-ala.html">$67</a></td>
    +    <td><a href="econ-bud.html">$68</a></td>
    +    <td><a href="econ-nat.html">$72</a></td>
    +    <td><a href="econ-av.html">$74</a></td>
    +    <td><a href="econ-hz.html">$74</a></td>
    +  </tr>
    +  <tr>
    +    <th scope="row">Compact</th>
    +    <td><a href="comp-ala.html">$68</a></td>
    +    <td><a href="comp-bud.html">$69</a></td>
    +    <td><a href="comp-nat.html">$74</a></td>
    +    <td><a href="comp-av.html">$76</a></td>
    +    <td><a href="comp-hz.html">$76</a></td>
    +  </tr>
    +  <tr>
    +    <th scope="row">Mid-sized</th>
    +    <td><a href="mid-ala.html">$79</a></td>
    +    <td><a href="mid-bud.html">$80</a></td>
    +    <td><a href="mid-nat.html">$83</a></td>
    +    <td><a href="mid-av.html">$85</a></td>
    +    <td><a href="mid-hz.html">$85</a></td>
    +  </tr>
    +  <tr>
    +    <th scope="row">Full-sized</th>
    +    <td><a href="full-ala.html">$82</a></td>
    +    <td><a href="full-bud.html">$83</a></td>
    +    <td><a href="full-nat.html">$89</a></td>
    +    <td><a href="full-av.html">$91</a></td>
    +    <td><a href="full-hz.html">$91</a></td>
    +  </tr>
    +</table>
    +
    +
    +
    +

    Tests

    +
    +

    Procedure

    For each link in the content that uses this technique:

      -
    1. Check that the link is in a table cell.
    2. -
    3. Check that text of the link combined with the text of the associated table - header cells describes the purpose of the link.
    4. +
    5. Check that the link is in a table cell.
    6. +
    7. Check that text of the link combined with the text of the associated table header cells describes the purpose of the link.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • The above checks are true.
    • +
    • Steps 1 and 2 are true.
    -

    Resources

    \ No newline at end of file +
    + +
    +

    Resources

    +
    + + \ No newline at end of file diff --git a/techniques/html/H81.html b/techniques/html/H81.html index cb3e2d9033..9b21bf737d 100644 --- a/techniques/html/H81.html +++ b/techniques/html/H81.html @@ -1,88 +1,131 @@ -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

    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: H81

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to describe the purpose of a link in a nested list + + + + 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 + + + +

    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: H81

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to describe the purpose of a link in a nested list from the context provided by the list item under which the list is nested. This list item provides context for an otherwise unclear link. The description lets a user distinguish this link from links in the Web page that lead to other destinations and helps the user determine whether to follow the link.

    -

    Because current assistive technologies do not include commands to query contextual information provided by parent list items, use of this technique requires users to navigate the list one item at a time. Therefore, this technique may not be appropriate for very long or deeply nested lists.

    -
    -

    Whenever possible, provide link text that identifies the purpose of the link without - needing additional context.

    -
    -

    Examples

    -
    -

    A document provided in three formats

    -
    <ul>
    -<li>Annual Report 2005-2006
    -  <ul> 
    -  <li><a href="annrep0506.html">(HTML)</a></li>
    -  <li><a href="annrep0506.pdf">(PDF)</a></li>
    -  <li><a href="annrep0506.rtf">(RTF)</a></li>
    -  </ul>
    -</li>
    -<li>Annual Report 2006-2007
    -  <ul> 
    -  <li><a href="annrep0607.html">(HTML)</a></li>
    -  <li><a href="annrep0607.pdf">(PDF)</a></li>
    -  <li><a href="annrep0607.rtf">(RTF)</a></li>
    -  </ul>
    -</li>
    -</ul> 
    +

    Because current assistive technologies do not include commands to query contextual information provided by parent list items, use of this technique requires users to navigate the list one item at a time. Therefore, this technique may not be appropriate for very long or deeply nested lists.

    +
    +

    Whenever possible, provide link text that identifies the purpose of the link without needing additional context.

    +
    +
    +
    +

    Examples

    +
    +

    A document provided in three formats

    +
    <ul>
    +  <li>Annual Report 2021
    +    <ul> 
    +      <li>
    +        <a href="ar-2021.html"><abbr title="HyperText Markup Language">HTML</abbr></a>
    +      </li>
    +      <li>
    +        <a href="ar-2021.pdf"><abbr title="Portable Document Format">PDF</abbr></a>
    +      </li>
    +      <li>
    +        <a href="ar-2021.rtf"><abbr title="Rich Text Format">RTF</abbr></a>
    +      </li>
    +    </ul>
    +  </li>
    +  <li>Annual Report 2022
    +    <ul> 
    +      <li>
    +        <a href="ar-2022.html">HTML</a>
    +      </li>
    +      <li>
    +        <a href="ar-2022.pdf">PDF</a>
    +      </li>
    +      <li>
    +        <a href="ar-2022.rtf">RTF</a>
    +      </li>
    +    </ul>
    +  </li>
    +</ul>
    -

    Blocks of information on hotels

    - -

    The information for each hotel consists of the hotel name, a description and a - series of links to a map, photos, directions, guest reviews and a booking form.

    +

    Blocks of information about hotels

    +

    The information for each hotel consists of the hotel name, a description and a series of links to a map, photos, directions, guest reviews and a booking form.

    -
    <ul>
    -<li><a href="royal_palm_hotel.html">Royal Palm Hotel</a>
    -  <ul class="horizontal">
    -    <li><a href="royal_palm_hotel_map.html">Map</a></li>
    -    <li><a href="royal_palm_hotel_photos.html">Photos</a></li>
    -    <li><a href="hroyal_palm_hotel_directions.html">Directions</a></li>
    -    <li><a href="royal_palm_hotel_reviews.html">Guest reviews</a></li>
    -    <li><a href="royal_palm_hotel_book.html">Book now</a></li>
    -  </ul>
    -</li>
    -<li><a href="hotel_three_rivers.html">Hotel Three Rivers</a>
    -  <ul class="horizontal">
    -    <li><a href="hotel_three_rivers_map.html">Map</a></li>
    -    <li><a href="hotel_three_rivers_photos.html">Photos</a></li>
    -    <li><a href="hotel_three_rivers_directions.html">Directions</a></li>
    -    <li><a href="hotel_three_rivers_reviews.html">Guest reviews</a></li>
    -    <li><a href="hotel_three_rivers_book.html">Book now</a></li>
    +
    <nav>
    +  <ul>
    +    <li><a href="royal-palm-hotel.html">Royal Palm Hotel</a>
    +      <ul>
    +        <li><a href="royal-palm-hotel-map.html">Map</a></li>
    +        <li><a href="royal-palm-hotel-photos.html">Photos</a></li>
    +        <li><a href="royal-palm-hotel-directions.html">Directions</a></li>
    +        <li><a href="royal-palm-hotel-reviews.html">Guest reviews</a></li>
    +        <li><a href="royal-palm-hotel-book.html">Book now</a></li>
    +      </ul>
    +    </li>
    +    <li><a href="hotel-three-rivers.html">Hotel Three Rivers</a>
    +      <ul>
    +        <li><a href="hotel-three-rivers-map.html">Map</a></li>
    +        <li><a href="hotel-three-rivers-photos.html">Photos</a></li>
    +        <li><a href="hotel-three-rivers-directions.html">Directions</a></li>
    +        <li><a href="hotel-three-rivers-reviews.html">Guest reviews</a></li>
    +        <li><a href="hotel-three-rivers-book.html">Book now</a></li>
    +      </ul>
    +    </li>
       </ul>
    -</li>
    -</ul> 
    +</nav>
    -

    Tests

    -

    Procedure

    -

    For each link in the content that uses this technique:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each nested link in the content that uses this technique:

      -
    1. Find the ul or ol element that contains the link
    2. -
    3. Check that this list element (ul, ol) is a descendant of an - li element
    4. -
    5. Check that the text of the link combined with the text of that li element - describes the purpose of the link.
    6. +
    7. Find the link's parent ul or ol element.
    8. +
    9. Check that this list element (ul, ol) is a descendant of an li element.
    10. +
    11. Check that the text of the link combined with the text of that parent li element describes the purpose of the link.
    -

    Expected Results

    +
    +

    Expected Results

      -
    • The above checks are true.
    • +
    • Checks 2 and 3 are true.
    -

    Resources

    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H83.html b/techniques/html/H83.html index 353b68fda9..929d0d07aa 100644 --- a/techniques/html/H83.html +++ b/techniques/html/H83.html @@ -1,35 +1,63 @@ -Using the target attribute to open a new window on user request and indicating this in link text

    Using the target attribute to open a new window on user request and indicating this in link text

    ID: H83

    Technology: html

    Type: Technique

    When to Use

    -

    HTML5, HTML 4.01 Transitional, and XHTML 1.0 Transitional

    -

    Description

    -

    The objective of this technique is to avoid confusion that may be caused by the appearance of new windows that were not requested by the user. Suddenly opening new windows can disorient users or be missed completely by some. In HTML5, HTML 4.01 Transitional, and XHTML 1.0 Transitional, the target attribute can be used to open a new window, instead of automatic pop-ups. (The target attribute is deleted from HTML 4.01 Strict and XHTML 1.0 Strict.) Note that not using the target allows the user to decide whether a new window should be opened or not. Use of the target attribute provides an unambiguously machine-readable indication that a new window will open. User agents can inform the user, and can also be configured not to open the new window. For those not using assistive technology, the indication would also be available from the link text.

    -

    Examples

    -
    - -

    The following example illustrates the use of the target attribute in a link that indicates it will open in a new window.

    - + + + + Using the target attribute to open a new window on user request and indicating this in link text + + + +

    Using the target attribute to open a new window on user request and indicating this in link text

    +
    +

    ID: H83

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to avoid confusion that may be caused by the appearance of new windows that were not requested by the user. Suddenly opening new windows can disorient users or be missed completely by some. In HTML, the target attribute can be used to open a new window.

    +

    Use of the target attribute provides an unambiguously machine-readable indication that a new window will open. User agents can inform the user, and can also be configured not to open the new window. For those not using assistive technology, the indication would also be available from the link text.

    +
    +

    Note that not using the target allows the user to decide whether a new window should be opened or not.

    +
    +
    +
    +

    Examples

    +
    +

    Using the target attribute in a link to indicate it will open in a new window

    <a href="help.html" target="_blank">Show Help (opens new window)</a>
    +
    -

    Tests

    -

    Procedure

    -
      -
    1. Activate each link in the document to check if it opens a new window.
    2. -
    3. For each link that opens a new window, check that it uses the target attribute.
    4. -
    5. Check that the link text contains information indicating that the link will open in a new window.
    6. -
    +
    +

    Tests

    +
    +

    Procedure

    +
      +
    1. Activate each link in the document to check if it opens a new window.
    2. +
    3. For each link that opens a new window, check that it uses the target attribute.
    4. +
    5. Check that the link text contains information indicating that the link will open in a new window.
    6. +
    +
    +
    +

    Expected Results

    +
      +
    • Checks 2 and 3 are true.
    • +
    +
    -

    Expected Results

    + -

    Resources

    - +
    +

    Resources

    - -
    \ No newline at end of file +
    + + \ No newline at end of file diff --git a/techniques/html/H84.html b/techniques/html/H84.html index 3851c40063..b2857f06eb 100644 --- a/techniques/html/H84.html +++ b/techniques/html/H84.html @@ -1,64 +1,89 @@ -Using a button with a select element to perform an action

    Using a button with a select element to perform an action

    ID: H84

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    The objective of this technique is to allow the user to control when an action is performed, rather than having the action occur as a side effect of choosing a value for the select element. The user may inspect the different values of the select element, or may accidentally choose the wrong value, without causing the action to occur. When the user is satisfied with their choice, they select the button to perform the action.

    -

    This is particularly important for users who are choosing the value of the select element via the keyboard, since navigating through the options of the select element changes the value of the control.

    -

    Examples

    -
    -

    A Calendar

    - -

    A Web page lets the user choose any month of any year and display the calendar for that month. After the user has set the month and year, he displays the calendar by pressing the "Show" button. This example relies on client-side scripting to implement the action.

    - -
    -<label for="month">Month:</label>
    -<select name="month" id="month">
    -  <option value="1">January</option>
    -  <option value="2"> February</option>
    -  ...
    -  <option value="12">December</option>
    +
    +
    +   
    +      Using a button with a select element to perform an action
    +      
    +   
    +   
    +      

    Using a button with a select element to perform an action

    +
    +

    ID: H84

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    The objective of this technique is to allow the user to control when an action is performed, rather than having the action occur as a side effect of choosing a value for the select element. The user may inspect the different values of the select element, or may accidentally choose the wrong value, without causing the action to occur. When the user is satisfied with their choice, they select the button to perform the action.

    +

    This is particularly important for users who are choosing the value of the select element via the keyboard, since navigating through the options of the select element changes the value of the control.

    +
    +
    +

    Examples

    +
    +

    A calendar

    +

    A Web page lets the user choose a quarter of any year and display the calendar for those months. After the user has set the quarter and year, they display the calendar by pressing the "Show" button. This example relies on client-side scripting to implement the action.

    +
    +<label for="quarter">Quarter:</label>
    +<select id="quarter" name="quarter">
    +  <option value="1">Quarter 1 (January - March)</option>
    +  <option value="2">Quarter 2 (April - June)</option>
    +  <option value="3">Quarter 3 (July - September)</option>
    +  <option value="4">Quarter 4 (October - December)</option>
     </select> 
     <label for="year">Year:</label>
    -<input type="text" name="year" id="year">
    -<input type="button" value="Show" onclick = "...">
    +<input name="year" type="text" id="year"> +<button name="show" type="button">Show</button>

    Choosing an action

    +

    A select element contains a list of possible actions. The action is not performed until the user presses the "Update" button.

    -

    A select element contains a list of possible actions. The action is not performed until the user presses the "Do it" button.

    - -
    -<form action="http://somesite.com/action" method="post">
    +
    +<form action="/action" method="post">
       <label for="action">Options:</label>
       <select name="action" id="action">
    -    <option value="help">Help</option>
    -    <option value="reset">Reset</option>
    -    <option value="submit">Submit</option>
    +    <option value="add">Add</option>
    +    <option value="remove">Remove</option>
    +    <option value="cancel">Cancel</option>
    +    <option value="order">Order</option>
       </select> 
    -  <button type="submit" name="submit" value="submit">Do It </button>
    -</form>              
    + <button name="submit" type="submit">Update</button> +</form>
    -

    Tests

    -

    Procedure

    -

    For each select element/button element combination:

    +
    +
    +

    Tests

    +
    +

    Procedure

    +

    For each select element/button element combination:

      -
    1. Check that focus (including keyboard focus) on an option in the select element does not result in any actions
    2. -
    3. Check that selecting the button performs the action associated with the current select value
    4. +
    5. Check that focus (including keyboard focus) on an option in the select element does not result in any actions
    6. +
    7. Check that selecting the button performs the action associated with the current select value
    -

    Expected Results

    +
    +

    Expected Results

    • All checks are true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H85.html b/techniques/html/H85.html index a8213ec4eb..550ad23905 100644 --- a/techniques/html/H85.html +++ b/techniques/html/H85.html @@ -1,109 +1,115 @@ -Using OPTGROUP to group OPTION elements inside a SELECT

    Using OPTGROUP to group OPTION elements inside a SELECT

    ID: H85

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML pages that collect user input.

    -

    Description

    -

    The objective of this technique is to group items in a selection list. A selection list is a set of allowed values for a form control such as a multi-select list or a combo box. Often, selection lists have groups of related options. Those groups should be semantically identified, rather than simply delimiting the groups with "dummy" list entries. This allows user agents to collapse the options by group to support quicker skimming of the options, and to indicate in what group an option of interest is located. It also helps to visually break up long lists so that users can more easily locate the option(s) they are interested in.

    -

    In HTML, the select element is used to create both multi-select lists and combo boxes. The various allowed options are each indicated with option elements. To group options together, use the optgroup element, with the related option elements inside that element. Label the group with the "label" attribute so users will know what to expect inside the group.

    -

    The optgroup element should be directly inside the select element, and the option elements directly inside the optgroup. It is possible for a select element to contain both single option elements and optgroup groups, though authors should consider if this is in fact the desired intent when using this. It is not possible to nest the optgroup element, so only one level of grouping can be done within a select.

    -

    If grouping information is essential to understanding the list, authors may define option labels that can be understood even when the screen reader does not present the grouping information provided by optgroup.

    -

    Examples

    + + + + Using optgroup to group option elements inside a select + + + +

    Using optgroup to group option elements inside a select

    +
    +

    ID: H85

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML pages that collect user input.

    +
    +
    +

    Description

    +

    The objective of this technique is to group items in a selection list. A selection list is a set of allowed values for a form control such as a multi-select list or a combo box. Often, selection lists have groups of related options. Those groups should be semantically identified, rather than being delimited with "dummy" list entries, for example: an option element containing only a series of dashes to create a horizontal line. Semantically identifying groups of options helps to visually break up long lists so that users can more easily locate what they are interested in.

    +

    In HTML, the select element is used to create both multi-select lists and combo boxes. The various allowed options are each indicated with option elements. To group options together, use the optgroup element, with the related option elements inside that element. Label the group with the label attribute so users will know what to expect inside the group.

    +

    The optgroup element should be directly inside the select element, and the option elements directly inside the optgroup. It is possible for a select element to contain both single option elements and optgroup groups, though authors should consider if this is in fact the desired intent when using this. It is not possible to nest the optgroup element, so only one level of grouping can be done within a select.

    +

    If grouping information is essential to understanding the list, authors may define option labels that can be understood even when the screen reader does not present the grouping information provided by optgroup.

    +
    +
    +

    Examples

    +

    The following combo box collects data about favorite foods. Grouping by type allows users to select their preference more quickly.

    -

    The following combo box collects data about favorite foods. Grouping by type allows users to select their preference more quickly.

    - -
    -<form action="http://example.com/prog/someprog" method="post">
    -    <label for="food">What is your favorite food?</label>
    -    <select id="food" name="food">
    -      <optgroup label="Fruits">
    -        <option value="1">Apples</option>
    -        <option value="3">Bananas</option>
    -        <option value="4">Peaches</option>
    -        <option value="5">...</option>
    -      </optgroup>
    -      <optgroup label="Vegetables">
    -        <option value="2">Carrots</option>
    -        <option value="6">Cucumbers</option>
    -       <option value="7">...</option>
    -     </optgroup>
    -     <optgroup label="Baked Goods">
    -       <option value="8">Apple Pie</option>
    -       <option value="9">Chocolate Cake</option>
    -       <option value="10">...</option>
    -     </optgroup>
    +
    <form action="/favorite-food/" method="post">
    +  <label for="food">What is your favorite food?</label>
    +  <select id="food" name="food">
    +    <optgroup label="Fruits">
    +      <option value="1">Apples</option>
    +      <option value="2">Bananas</option>
    +      <option value="3">Peaches</option>
    +    </optgroup>
    +    <optgroup label="Vegetables">
    +      <option value="4">Broccoli</option>
    +      <option value="5">Carrots</option>
    +      <option value="6">Cucumbers</option>
    +    </optgroup>
    +    <optgroup label="Baked Goods">
    +      <option value="7">Apple Pie</option>
    +      <option value="8">Bagel</option>
    +      <option value="9">Chocolate Cake</option>
    +    </optgroup>
        </select>
    -</form>              
    +</form>
    -

    The following example shows how a multi-select box can make use of the optrgroup element.

    +

    The following example shows how a multi-select box can make use of the optgroup element.

    -
    -<form action="http://example.com/prog/someprog" method="post">
    -    <label for="related_techniques"><strong>Related Techniques:</strong></label>
    -    <select name="related_techniques" id="related_techniques" multiple="multiple" size="10">
    -  <optgroup label="General Techniques">
    -    <option value="G1">G1: Adding a link at the top of each page ... </option>
    -    <option value="G4">G4: Allowing the content to be paused and restarted ... </option>
    -    <option value="G5">G5: Allowing users to complete an activity without any time... </option>
    -    <option value="G8">G8: Creating an extended audio description for the ... </option>
    -    <option value="G9">G9: Creating captions for live synchronized media... </option>
    -    <option value="G10">G10: Creating components using a technology that ... </option>
    -  </optgroup>
    -  <optgroup label="HTML Techniques">
    -    <option value="H2">H2: Combining adjacent image and text links for the same ... </option>
    -    <option value="H4">H4: Creating a logical tab order through links, form ... </option>
    -    <option value="H24">H24: Providing text alternatives for the area ... </option>
    -  </optgroup>
    -  <optgroup label="CSS Techniques">
    -    <option value="C6">C6: Positioning content based on structural markup... </option>
    -    <option value="C7">C7: Using CSS to hide a portion of the link text... </option>
    -  </optgroup>
    -  <optgroup label="SMIL Techniques">
    -    <option value="SM1">SM1: Adding extended audio description in SMIL 1.0... </option>
    -    <option value="SM2">SM2: Adding extended audio description in SMIL 2.0... </option>
    -    <option value="SM6">SM6: Providing audio description in SMIL 1.0... </option>
    -  </optgroup>
    -  <optgroup label="ARIA Techniques">
    -    <option value="ARIA1">ARIA1: Using WAI-ARIA describedby... </option>
    -    <option value="ARIA2">ARIA2: Identifying required fields with the "required"... </option>
    -    <option value="ARIA3">ARIA3: Identifying valid range information with "valuemin" ... </option>
    -  </optgroup>
    -  <optgroup label="Common Failures">
    -    <option value="F1">F1: Failure of SC 1.3.2 due to changing the meaning of content by... </option>
    -    <option value="F2">F2: Failure of SC 1.3.1 due to using changes in text presentation... </option>
    -    <option value="F3">F3: Failure of SC 1.1.1 due to using CSS to include images  ... </option>
    -    <option value="F4">F4: Failure of SC 2.2.2 due to using text-decoration:blink ...</option>
    -  </optgroup>
    -</select>
    -</form>              
    +
    <form action="/animals/" method="post">
    +  <label for="animals">Pick your favorite animals:</label>
    +  <select id="animals" multiple name="animals" size="10">
    +    <optgroup label="Dinosaurs">
    +      <option value="brontosaurus">Brontosaurus</option>
    +      <option value="pterodactyl">Pterodactyl</option>
    +      <option value="trex">Tyrannosaurus Rex</option>
    +      <option value="velociraptor">Velociraptor</option>
    +    </optgroup>
    +    <optgroup label="Ungulates">
    +      <option value="camel">Camel</option>
    +      <option value="giraffe">Giraffe</option>
    +      <option value="hippo">Hippo</option>
    +      <option value="horse">Horse</option>
    +      <option value="zebra">Zebra</option>
    +    </optgroup>
    +    <optgroup label="Household Pets">
    +      <option value="cat">Cat</option>
    +      <option value="dog">Dog</option>
    +      <option value="fish">Fish</option>
    +      <option value="rabbit">Rabbit</option>
    +    </optgroup>
    +  </select>
    +</form>
    -

    Tests

    -

    Procedure

    -
      -
    1. Check the set of options within a selection list to see if there are groups of related options.
    2. -
    3. If there are groups of related options, they should be grouped with optgroup.
    4. -
    +
    +
    +

    Tests

    +
    +

    Procedure

    +
      +
    1. Check the set of options within a selection list to see if there are groups of related options.
    2. +
    3. If there are groups of related options, they should be grouped with optgroup.
    4. +
    -

    Expected Results

    +
    +

    Expected Results

      -
    • Check #2 is true.
    • +
    • Check 2 is true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H86.html b/techniques/html/H86.html index 6ec077ce18..d2c3e9a6cd 100644 --- a/techniques/html/H86.html +++ b/techniques/html/H86.html @@ -1,32 +1,77 @@ -Providing text alternatives for ASCII art, emoticons, and leetspeak

    Providing text alternatives for ASCII art, emoticons, and leetspeak

    ID: H86

    Technology: html

    Type: Technique

    When to Use

    -

    HTML and XHTML

    -

    Description

    -

    Before graphics became widely used on the internet, ASCII characters were often arranged to form pictures or graphs. Although ASCII art is not used frequently on the Web anymore, it must be remembered that, when it is used, it is very confusing to people who are blind and accessing the internet using screen readers. If it is used it should also have a text explanation of what the picture is. It is also suggested that there be a link to skip over the ASCII art (although this is not required).

    -

    Emoticons are very popular. They include ASCII characters that form facial expressions and other ways to communicate an emotion. They can be confusing for screen reader users. When possible it is better simply to use a word like "smile" instead of an emoticon. But if emoticons are used they should have a text alternative. In some contexts, blog and forum software for example, plug-ins are available that automatically convert ASCII characters used as emoticons into HTML images with text alternatives.

    -

    Leetspeak uses various combinations of characters, including numerals and special characters, to replace standard characters. Leet has become a part of Internet culture and slang. Leet is frequently used to beat text and spam filters. It is often incomprehensible to blind people using screen readers, and therefore requires a text alternative in order to conform to Success Criteria 1.1.1.

    -
    -

    Because support for this technique is limited, it is recommended that authors provide the text alternative in text.

    -
    -

    Examples

    -
    - -

    The following shows three options for providing alternatives for an emoticon representing "fright," which is made out of an equal sign followed by the number eight, a hyphen and the number zero.

    + + + + Providing text alternatives for emojis, emoticons, ASCII art, and leetspeak + + + +

    Providing text alternatives for emojis, emoticons, ASCII art, and leetspeak

    +
    +

    ID: H86

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML

    +
    +
    +

    Description

    +

    Emojis are very popular and are frequently used online to help provide more context and expression to text-based communication. Emojis come with their own pre-defined names that might not always match what the author is intending to communicate. For example, the emoji of a black right-facing triangle (►) is described by default as black right-pointing pointer, which would be confusing if a designer had changed its rotation or color, or if it was being used to give the accessible name to a "play" button in a multimedia player.

    -
    -=8-0 (fright)
    +         

    Emoticons pre-date emojis, are still used but are much less popular than they once were. Emoticons use ASCII characters to create facial expressions and other ways to communicate an emotion. Because emoticons are made from many text characters, they can be confusing for screen reader users. When possible it is better simply to use a word like "smile" or a suitable emoji instead of an emoticon. If emoticons are used they should have a text alternative.

    + +

    ASCII art was common on the internet before graphics became widely used. ASCII characters were arranged to form pictures, pictures of text, or graphs. Although ASCII content is not used frequently on the Web anymore, it must be remembered that, when it is used, it can be very confusing to people who are accessing the internet using screen readers. If ASCII art is used, it should also have a text explanation of what the picture is. It is also suggested that, if the ASCII picture isn't marked up as an image using ARIA, that there is a link to skip over the art (although this is not required).

    -<abbr title="fright">=8-0</abbr> +

    Leet used to be a fairly-common part of Internet culture and slang, but is now hardly used. Leetspeak uses various combinations of characters, including numerals and special characters, to replace standard characters. Leet is often incomprehensible to people using screen readers, and therefore requires a text alternative in order to conform to Success Criterion 1.1.1 (Non-Text Content).

    -<img src="fright.gif" alt="fright"/> -
    -
    +
    +

    Examples

    +
    +

    Marking up emojis in a sentence

    +

    This shows a technique to mark up emojis with accessible names that differ from their default. Because you can't use an alt attribute on a span element and the ARIA recommendation disallows accessible names on generic elements, to give the emojis accessible names they are defined as images with the ARIA role="img" property which then allows the creation of an accessible name using the aria-label property.

    +
    <p>I smiled at my friend and said 
    +   <span aria-label="you" role="img">👉🏾</span>
    +   <span aria-label="rock" role="img">🤘🏾</span>!
    +</p>
    +
    +
    +

    Four options for providing alternatives for an emoticon representing "smile"

    -

    Here is ASCII art with an explanation of the picture preceding it. It includes a link to skip over the ASCII art. Skip ASCII example.

    +

    The following shows four options for providing alternatives for an emoticon representing "smile", which is consists of a colon followed by a closing parenthesis.

    -
    - Figure 1: ASCII art picture of a butterfly. 
    - <a href="#skipbutterfly">Skip ASCII image</a>
    +
    :) (smile)
    +<abbr title="smile">:)</abbr>
    +<span aria-label="smile" role="img">:)</span>
    +<img alt="smile" src="smile.gif">
    +
    + +
    +

    Using the aria-label and role="img" properties

    +

    Adding the role="img" property to the ASCII content's containing element defines it as an image, and the aria-label property gives it the required text alternative. Skip to the next ASCII example.

    +
    +<div aria-label="WCAG" role="img">
    +oooooo   oooooo     oooo   .oooooo.         .o.         .oooooo.    
    + `888.    `888.     .8'   d8P'  `Y8b       .888.       d8P'  `Y8b   
    +   `888.   .8888.   .8'   888              .8"888.     888           
    +    `888  .8'`888. .8'    888             .8' `888.    888           
    +     `888.8'  `888.8'     888            .88ooo8888.   888     ooooo 
    +       `888'    `888'      `88b    ooo   .8'     `888.  `88.    .88'  
    +        `8'      `8'        `Y8bood8P'  o88o     o8888o  `Y8bood8P'
    +</div>        
    +
    +
    +
    +

    ASCII art with an explanation of the picture preceding it

    +

    This example includes a link to skip over the ASCII art. Skip to the Leetspeak example.

    + +
    <figure>
    +  <figcaption>
    +    <p>Figure 1: ASCII art picture of a butterfly.
    +      <a href="#skipbutterfly">Skip ASCII butterfly image</a>
    +    </p>
    +  </figcaption>
                                      
                                                                     LLLLLLLLLLL
                                                                 __LLLLLLLLLLLLLL
    @@ -73,26 +118,45 @@
                                 ~LLLLLLLLLLLLLLLLL~~
                                    LLLLLLLLLLLLL
                                      ~~~~~~~~~
    -<a name="skipbutterfly"></a>            
    +</figure> +<p id="skipbutterfly">New content after the ASCII image.</p>
    +

    Marking up Leetspeak

    +

    The following is Leetspeak for "Austin Rocks".

    -

    The following is Leetspeak for "Austin Rocks".

    - -
    -<abbr title="Austin Rocks">Au5t1N r0xx0rz</abbr>             
    +
    +<abbr title="Austin Rocks">Au5t1N r0xx0rz</abbr>
    -

    Tests

    -

    Procedure

    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Open the page in a common browser.
    2. -
    3. Check to see that the content contains ASCII art, emoticons and/or leetspeak.
    4. -
    5. Check that there is a text alternative immediately before or after all ASCII art, emoticons and/or Leetspeak.
    6. +
    7. Check to see that the content contains emojis, emoticons, ASCII art, or leetspeak.
    8. +
    9. Check that each emoji has a text alternative that serves an equivalent purpose.
    10. +
    11. Check that each ASCII artwork, emoticon, and / or Leetspeak either: +
        +
      1. is marked up as an image with a text alternative that serves an equivalent purpose; or
      2. +
      3. has a text alternative immediately before or after.
      4. +
      +
    -

    Expected Results

    +
    +

    Expected Results

      -
    • Test procedure #3 is true.
    • +
    • Checks 2 and 3 are true.
    -
    \ No newline at end of file +
    +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H97.html b/techniques/html/H97.html index 7240e2bf3b..0979b5cf51 100644 --- a/techniques/html/H97.html +++ b/techniques/html/H97.html @@ -1,80 +1,114 @@ -Grouping related links using the nav element

    Grouping related links using the nav element

    ID: H97

    Technology: html

    Type: Technique

    When to Use

    -

    HTML5 documents that contain related links.

    -

    Description

    -

    The objective of this technique is to group navigation links using the HTML5 nav element. The nav element is one of several sectioning elements in HTML5. Use of this markup can make groups of links easier to locate and skip past by users of assistive technology such as screen readers. Using semantic structures allow custom style sheets to be used to change the presentation of groups of links while preserving their relationship. When the nav element is employed more than once on a page, distinguish the navigation groups by using an aria-label or aria-labelledby attribute.

    -

    Not all groups of links need to use the nav element for markup. For instance, links may be grouped in other structure such as lists or may use ARIA markup if they do not represent a discrete section of the page.

    -

    Examples

    + + + + Grouping related links using the nav element + + + +

    Grouping related links using the nav element

    +
    +

    ID: H97

    +

    Technology: html

    +

    Type: Technique

    +
    +
    +

    When to Use

    +

    HTML documents that contain related links.

    +
    +
    +

    Description

    +

    The objective of this technique is to group navigation links using the HTML nav element. The nav element is one of several sectioning elements in HTML. Use of this markup can make groups of links easier to locate and skip past by users of assistive technology such as screen readers. Using semantic structures allow custom style sheets to be used to change the presentation of groups of links while preserving their relationship. When the nav element is employed more than once on a page, distinguish the navigation groups by using an aria-labelledby or aria-label attribute.

    +

    Not all groups of links need to use the nav element for markup. For instance, links may be grouped in other structure such as lists or may use ARIA markup if they do not represent a discrete section of the page.

    +
    +
    +

    Examples

    Navigation links enclosed in a nav element

    -

    This example uses a nav element to group navigation links in an accessibility curriculum.

    +

    This example uses a nav element to group navigation links in an accessibility curriculum.

    -
    -				 <nav>
    -				    <a href="../webaccessibility.html">Web Accessibility</a>
    -				    <a href="../docaccessibility.html">Document Accessibility</a>
    -					<a href="../mobileaccessibility.html">Mobile Accessibility</a>
    -				 </nav>
    -            
    +
    +<nav>
    +  <ul>
    +    <li><a href="/web-accessibility.html">Web Accessibility</a></li>
    +    <li><a href="/doc-accessibility.html">Document Accessibility</a></li>
    +    <li><a href="/mobile-accessibility.html">Mobile Accessibility</a></li>
    +  </ul>    
    +</nav>
    -

    Multiple nav elements

    - -

    This example uses an nav element with an aria-label attribute to identify the navigation group when there is more than one nav element in a document.

    +

    Multiple nav elements and aria-labelledby

    +

    The following example shows a best practice of how landmarks might be added to an HTML document in situations where there are two or more of the same type of landmark on the same page. For instance, if a nav element is used multiple times on a page, each instance may have a unique label specified using aria-labelledby:

    -
    -			<nav aria-label="Site menu">
    -			  <ul>
    -				  <li>...a list of links site navigation link here ...</li>
    -			  </ul>
    -			</nav>
    -			...
    -			<article>
    -			  <nav aria-label="Related links">
    -				...a list of related links here ...
    -			  </nav>
    -			</article>          
    +
    <nav aria-labelledby="site-nav-heading">
    +  <h2 id="site-nav-heading">Site</h2>
    +    <ul>
    +      <li><a href="...">nav link 1</a></li>  
    +      <li><a href="...">nav link 2</a></li>
    +      <li><a href="...">nav link 3</a></li>
    +    </ul>
    +</nav>
    +<nav aria-labelledby="related-nav-heading">
    +  <h2 id="related-nav-heading">Related Topics</h2>
    +    <ul>
    +    <li><a href="...">topic link 1</a></li>
    +    <li><a href="...">topic link 2</a></li>
    +    <li><a href="...">topic link 3</a></li>
    +  </ul>
    +</nav>
    -

    Generic multiple nav elements

    - -

    The following example shows a best practice of situation where there are more than two navigation menus on the same page, and there is no existing text on the page that can be referenced as the label.

    +

    Multiple nav elements and aria-label

    -
    -			<nav aria-label="primary">
    -				<a href="home.html">Home</a>
    -				<a href="about-us.html">About Us</a>
    -				<a href="products.html">Products</a>
    -			</nav>
    +         

    The following example shows a best practice of how landmarks might be added to an HTML document in situations where there are two or more of the same type of landmark on the same page, and there is no existing text on the page that can be referenced as the label:

    - <nav aria-label="secondary"> - <a href="adverts.html">Our Advertisers</a> - <a href="related.html">Related Links</a> - <a href="subsidiaries.html">Subsidiaries</a> - </nav>
    -
    -

    Tests

    -

    Procedure

    +
    <nav aria-label="Site">
    +  <ul>
    +    <li>< href="...">nav link 1</a></li>
    +    <li>< href="...">nav link 2</a></li>
    +    <li>< href="...">nav link 3</a></li>
    +  </ul>
    +</nav>
    +<nav aria-label="Tags">
    +  <ul>
    +    <li><a href="...">tag link 1</a></li>
    +    <li><a href="...">tag link 2</a></li>
    +    <li><a href="...">tag link 3</a></li>
    +  </ul>
    +</nav>
    +
    +
    +
    +

    Tests

    +
    +

    Procedure

      -
    1. Check that links that are visually grouped and represent a section of the page are enclosed in a nav element.
    2. +
    3. Check that links that are visually grouped and represent a section of the page are enclosed in a nav element.
    -

    Expected Results

    +
    +

    Expected Results

    • Check #1 is true.
    -

    Resources

    - - - -
    \ No newline at end of file +
    + +
    +

    Resources

    + +
    + + \ No newline at end of file diff --git a/techniques/html/H98.html b/techniques/html/H98.html index 3d8407a7f4..1545559cb9 100644 --- a/techniques/html/H98.html +++ b/techniques/html/H98.html @@ -2,72 +2,73 @@ Using HTML 5.2 autocomplete attributes - + -

    Using HTML 5.2 autocomplete attributes

    -
    -

    Metadata

    -

    -

    html. It should also be noted that as of the summer 2018, neither Edge nor IE support the functionality found in Chrome, Firefox or Safari with regard to auto-filling the form inputs.

    -

    sufficient

    +

    Using HTML 5.2 autocomplete attributes

    +
    +

    ID: H98

    +

    Technology: html

    +

    Type: sufficient

    When to Use

    -

    All HTML form fields that map to the HTML 5.2 autofill tokens.

    +

    All HTML form fields that map to the HTML 5.2 autofill tokens.

    Description

    The objective of this technique is to programmatically link a pre-defined and published taxonomic term to the input, so that the inputs can also be machine-interpreted. This way the input will always have a common, referable and identifiable value associated to it, no matter what language is used, or what visible on-screen term is used to label the input. Then it can be further customized or otherwise machine-manipulated to help users.

    -

    The technique works by adding the appropriate autocomplete token to each form field on the form to make the identified inputs Programmatically Determinable. This will help people with cognitive disabilities who may not immediately know the purpose of the field because the label used by the author is not familiar to them. When inputs have been programmatically assigned, third party plugins and software can manipulate these form fields to make them more accessible to people with cognitive disabilities. For instance, a plugin could detect an autocomplete token with the text string "tel" and insert a telephone icon. It will further enable third party software to swap out the existing labels for text labels that the user finds more familiar. For instance, it could change "Given Name" to "First Name".

    +

    The technique works by adding the appropriate autocomplete token to each form field on the form to make the identified inputs Programmatically Determinable. This will help people with cognitive disabilities who may not immediately know the purpose of the field because the label used by the author is not familiar to them. When inputs have been programmatically assigned, third party plugins and software can manipulate these form fields to make them more accessible to people with cognitive disabilities. For instance, a plugin could detect an autocomplete token with the text string "tel" and insert a telephone icon. It will further enable third party software to swap out the existing labels for text labels that the user finds more familiar. For instance, it could change "Given Name" to "First Name".

    -

    The autocomplete attribute also improves the browser's ability to pre-populate form fields with user-preferred values. When the input has been properly 'tagged' with the known token value, the value entered by the user is stored locally on the host machine and associated with the token value for reuse. It helps those with dexterity disabilities who have trouble typing, those who may need more time, and anyone who wishes to reduce effort to fill out a form.

    +

    The autocomplete attribute also improves the browser's ability to pre-populate form fields with user-preferred values. When the input has been properly "tagged" with the known token value, the value entered by the user is stored locally on the host machine and associated with the token value for reuse. It helps those with dexterity disabilities who have trouble typing, those who may need more time, and anyone who wishes to reduce effort to fill out a form.

    -

    The autocomplete attribute allows the browser to do a pattern match against a list of values locally stored with the browser, and supplies the appropriate corresponding value when the input is programmatically tagged. This is a User setting that can be turned on or off, or modified by the end user. This reduces typing and reliance on memory because it uses stored values to fill in the fields.

    +

    The autocomplete attribute allows the browser to do a pattern match against a list of values locally stored with the browser, and supplies the appropriate corresponding value when the input is programmatically tagged. This is a user setting that can be turned on or off, or modified by the end user. This reduces typing and reliance on memory because it uses stored values to fill in the fields.

    -

    It's important to note the success criterion Identify Input Purpose and autocomplete attribute only place requirements on input fields collecting information about the user.

    +

    It's important to note the Success Criterion Identify Input Purpose and autocomplete attribute only place requirements on input fields collecting information about the user.

    -

    For the success criterion, it is assumed that the autocomplete attribute is not used on form fields that do not correspond to an autocomplete field described in the HTML specification. If the autocomplete field is used to describe a "custom" taxonomy, rather than that described in the specification, this rule may produce incorrect results.

    +

    For the Success Criterion, it is assumed that the autocomplete attribute is not used on form fields that do not correspond to an autocomplete field described in the HTML autocomplete attribute specification. If the autocomplete field is used to describe a "custom" taxonomy, rather than that described in the specification, this rule may produce incorrect results.

    Security considerations

    Organizations can be concerned about allowing input fields to be automatically filled-in. There is sometimes confusion about how browsers save information and the security implications.

    -

    For the autocomplete attribute:

    +

    For the autocomplete attribute:

      -
    • This technique should only be used when asking for data about the user who is filling the form in, not for other people.
    • -
    • It only works if you are on the same computer, using the same user-account, and using the same browser. Any multi-login scenario does not save autocomplete data between different accounts. (Users can setup syncing of data across computers, but that is not the default.)
    • -
    • Saving information with autocomplete is opt-in by the user, usually at the point of saving data the first time.
    • +
    • This technique should only be used when asking for data about the user who is filling the form in, not for other people.
    • +
    • It only works if you are on the same computer, using the same user-account, and using the same browser. Any multi-login scenario does not save autocomplete data between different accounts. (Users can setup syncing of data across computers, but that is not the default.)
    • +
    • Saving information with autocomplete is opt-in by the user, usually at the point of saving data the first time.
    • The form is not auto-submitted, the user can see the data before it is submitted.
    • It is easy to wipe both history and form data in the browser settings.
    • It is easy to engage a privacy mode, such as private browsing.
    • -
    • Even without autocomplete set in the webpage, browsers can save data, and some plugins (such as password managers) will aggressively use heuristics to guess what fields are for and fill them in. Using the autocomplete attribute makes those guesses accurate.
    • +
    • Even without autocomplete set in the webpage, browsers can save data, and some plugins (such as password managers) will aggressively use heuristics to guess what fields are for and fill them in. Using the autocomplete attribute makes those guesses accurate.
    -

    The browser history provides far more detail about what people have done, and is just as available as autocomplete data. The solutions/mitigations for browser-history are similar to autocomplete.

    +

    The browser history provides far more detail about what people have done, and is just as available as autocomplete data. The solutions/mitigations for browser-history are similar to autocomplete.

    Examples

    -
    -

    Example 1: Currency

    +
    +

    A user's credit card information

    This is a simple form that collects contact and credit card information from the user.

    <form method="post" action="step2">
    - <div>
    -   <label for="fname">First Name</label>
    -  <input id="fname" type="text" autocomplete="given-name" ... >
    +  <div>
    +    <label for="fname">First Name</label>
    +    <input autocomplete="given-name" id="fname" type="text">
    +  </div>
    +  <div>
    +    <label for="lname">Last Name</label>
    +    <input autocomplete="family-name" id="lname" type="text">
       </div>
       <div>
    -    <label for="lname">Last Name Name</label>
    -  <input id="lname" type="text" autocomplete="family-name" ... >
         <label for="cc-num">Credit card number:</label>
    -    <input type="text" id="cc-num" autocomplete="cc-number">
    +    <input autocomplete="cc-number" id="cc-num" type="text">
       </div>
       <div>
         <label for="exp-date">Expiry Date:</label>
    -    <input type="month" id="exp-date" autocomplete="cc-exp">
    +    <input autocomplete="cc-exp" id="exp-date" type="month">
       </div>
       <div>
    -    <input type="submit" value="Continue...">
    +    <input type="submit" value="Continue">
       </div>
     </form>
    @@ -77,16 +78,16 @@

    Example 1: Currency

    Tests

    Procedure

    -

    For each form field that collects information about the user and corresponds to an autocomplete field described in WCAG 2.1 7. Section 7: Input Purposes for User Interface Components, check the following:

    +

    For each form field that collects information about the user and corresponds to an autocomplete field described in WCAG 2.1 7. Section 7: Input Purposes for User Interface Components, check the following:

      -
    1. The form field has a valid and well-formed autocomplete attribute and value pair.
    2. -
    3. The purpose of the form field indicated by the label corresponds with the autocomplete token on the input.
    4. +
    5. The form field has a valid and well-formed autocomplete attribute and value pair.
    6. +
    7. The purpose of the form field indicated by the label corresponds with the autocomplete token on the input.

    Expected Results

      -
    • If #1 and #2 are true, then the test passes and the technique has been successfully implemented
    • +
    • If #1 and #2 are true, then the test passes and the technique has been successfully implemented.
    diff --git a/understanding/20/abbreviations.html b/understanding/20/abbreviations.html index 11135dccaa..e4990162e2 100644 --- a/understanding/20/abbreviations.html +++ b/understanding/20/abbreviations.html @@ -265,11 +265,6 @@

    Situation A: If the abbreviation has only one meaning within the Web page: -
  • - - Using the link element to link to a glossary - -
  • diff --git a/understanding/20/info-and-relationships.html b/understanding/20/info-and-relationships.html index 2d6d7eab87..a3984757ed 100644 --- a/understanding/20/info-and-relationships.html +++ b/understanding/20/info-and-relationships.html @@ -352,12 +352,6 @@

    Situation A: The technology provides semantic structure to make information

  • -
  • - - Using the summary attribute of the table element to give an overview of data tables - -
  • -
  • Using the scope attribute to associate header cells and data cells in data tables diff --git a/understanding/20/media-alternative-prerecorded.html b/understanding/20/media-alternative-prerecorded.html index 2bdf72f388..79d88586f2 100644 --- a/understanding/20/media-alternative-prerecorded.html +++ b/understanding/20/media-alternative-prerecorded.html @@ -209,19 +209,6 @@

    Situation B: If the content is prerecorded video-only:

  • -

    Additional Techniques (Advisory) for Media Alternative (Prerecorded)

    - - - -
    diff --git a/understanding/20/name-role-value.html b/understanding/20/name-role-value.html index f3d71769fc..1e5867062b 100644 --- a/understanding/20/name-role-value.html +++ b/understanding/20/name-role-value.html @@ -14,7 +14,7 @@

    Intent of Name, Role, Value

    The intent of this Success Criterion is to ensure that Assistive Technologies (AT) - can gather information about, activate(or set) and keep up to date on the status of + can gather information about, activate (or set) and keep up to date on the status of user interface controls in the content.

    diff --git a/understanding/20/non-text-content.html b/understanding/20/non-text-content.html index 633d3a6cab..01a22cf4dd 100644 --- a/understanding/20/non-text-content.html +++ b/understanding/20/non-text-content.html @@ -550,12 +550,6 @@

    Situation A: If a short description can serve the same purpose and present t -
  • - - - -
  • -
  • @@ -708,12 +702,6 @@

    Situation B: If a short description can

  • -
  • - - - -
  • -
  • @@ -867,12 +855,6 @@

    Situation D: If non-text content is time-based media (including live video-o

  • -
  • - - - -
  • -
  • @@ -976,22 +958,6 @@

    Situation F: If the non-text content should be ignored by assistive technolo

    Additional Techniques (Advisory) for Non-text Content

    -
    - -

    HTML Techniques (Advisory)

    - - - -
    -

    CSS Techniques (Advisory)

    diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index ac5b3a8c25..d66496a0a8 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -12,14 +12,16 @@

    Understanding Parsing

    Intent of Parsing

    - -

    The intent of this Success Criterion is to ensure that user agents, including assistive - technologies, can accurately interpret and parse content. If the content cannot be - parsed into a data structure, then different user agents may present it differently - or be completely unable to parse it. Some user agents use "repair techniques" to render - poorly coded content. - - +

    This criterion has been removed from WCAG 2.2.

    + +

    The intent of this Success Criterion was to ensure that user-agents, including assistive technologies, can accurately interpret and parse content. Since WCAG 2.0 was published, the specifications (such as HTML) and browsers have improved their handling of parsing errors. It is also that case that assistive technology used to do their own parsing of markup, but now rely on the browser. For that reason this success criterion has been removed. Many issues that would have failed this criterion will fail Info and Relationships or Name, Role, Value. Other issues are excepted by the "except where the specification allow these features" part of the criterion.

    + +

    The following content is left for historical purposes to show the original intent.

    + +
    + +

    + If the content cannot be parsed into a data structure, then different user agents may present it differently or be completely unable to parse it. Some user agents use "repair techniques" to render poorly coded content.

    Since repair techniques vary among user agents, authors cannot assume that content @@ -39,16 +41,16 @@

    Intent of Parsing

    The concept of "well formed" is close to what is required here. However, exact parsing requirements vary amongst markup languages, and most non XML-based languages do not explicitly define requirements for well formedness. Therefore, it was necessary to - be more explicit in the success criterion in order to be generally applicable to markup + be more explicit in the Success Criterion in order to be generally applicable to markup languages. Because the term "well formed" is only defined in XML, and (because end tags are sometimes optional) valid HTML does not require well formed code, the term - is not used in this success criterion. + is not used in this Success Criterion.

    -

    With the exception of one success criterion ( - 1.4.4: Resize Text, which specifically mentions that the effect specified by the success criterion must - be achieved without relying on an assistive technology) authors can meet the success - criteria with content that assumes use of an assistive technology (or access features +

    With the exception of one Success Criterion ( + 1.4.4: Resize Text, which specifically mentions that the effect specified by the Success Criterion must + be achieved without relying on an assistive technology) authors can meet the Success + Criteria with content that assumes use of an assistive technology (or access features in use agents) by the user, where such assistive technologies (or access features in user agents) exist and are available to the user.

    diff --git a/understanding/20/three-flashes-or-below-threshold.html b/understanding/20/three-flashes-or-below-threshold.html index 794bd2fb85..7be90c24d1 100644 --- a/understanding/20/three-flashes-or-below-threshold.html +++ b/understanding/20/three-flashes-or-below-threshold.html @@ -82,6 +82,26 @@

    Intent of Three Flashes or Below Threshold

    + +
    +

    The new (in WCAG 2.2) working definition in the field for "pair of opposing transitions involving a saturated red" is a pair of opposing transitions where, one transition is either to or from a state with a value R/(R + G + B) that is greater than or equal to 0.8, and the difference between states is more than 0.2 (unitless) in the CIE 1976 UCS chromaticity diagram. [ISO 9241-391]

    +

    The chromaticity difference is calculated as:

    +
      +
    • SQRT( (u'1 - u'2)^2 + (v'1 - v'2)^2 )
    • +
    +

    where u'1 and v'1 are chromaticity coordinates of State 1 and u'2 and v'2 are chromaticity coordinates of State 2. The 1976 UCS chromaticity coordinates of u' and v' are calculated as:

    +
      +
    • u' = 4 * X / (X + 15 * Y + 3 * Z)
    • +
    • v' = 9 * Y / (X + 15 * Y + 3 * Z)
    • +
    +

    where X, Y, and Z are the tristimulus values of a color in the CIE XYZ colorspace, which can be calculated as:

    +
      +
    • X = 0.4124564 * R + 0.3575761 * G + 0.1804375 * B
    • +
    • Y = 0.2126729 * R + 0.7151522 * G + 0.0721750 * B
    • +
    • Z = 0.0193339 * R + 0.1191920 * G + 0.9503041 * B
    • +
    +

    where R, G, & B are values that range from 0-1 as specified in “relative luminance” definition.

    +
    diff --git a/understanding/20/unusual-words.html b/understanding/20/unusual-words.html index 99adb35c13..2d880d9fe2 100644 --- a/understanding/20/unusual-words.html +++ b/understanding/20/unusual-words.html @@ -186,12 +186,6 @@

    Situation A: If the word or phrase has a unique meaning within the Web page:

  • -
  • - - Using the link element to link to a glossary - -
  • - @@ -247,12 +241,6 @@

    Situation A: If the word or phrase has a unique meaning within the Web page: -
  • - - Using the link element to link to a glossary - -
  • - @@ -312,12 +300,6 @@

    Situation B: If the word or phrase means different things within the same We -
  • - - Using the link element to link to a glossary - -
  • - From e9d71daed04f8cd4e95ae4d96b9665e9b01f1f67 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Thu, 1 Dec 2022 10:25:17 -0500 Subject: [PATCH 41/73] un-removing parsing from 2.1 --- guidelines/sc/20/parsing.html | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/guidelines/sc/20/parsing.html b/guidelines/sc/20/parsing.html index 08a9244ba4..dc5b0dce40 100644 --- a/guidelines/sc/20/parsing.html +++ b/guidelines/sc/20/parsing.html @@ -1,8 +1,18 @@

    Parsing

    - -

    This criterion has been removed.

    +

    A

    + +

    In content implemented using markup languages, elements have complete start and end + tags, elements are nested according to their specifications, elements do not contain + duplicate attributes, and any IDs are unique, except where the specifications allow + these features. +

    + +

    Start and end tags that are missing a critical character in their formation, such + as a closing angle bracket or a mismatched attribute value quotation mark are not + complete. +

    \ No newline at end of file From 760756a30e7beed6d13db52567e4e6941cf16288 Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Thu, 1 Dec 2022 10:26:35 -0500 Subject: [PATCH 42/73] Update parsing.html --- understanding/20/parsing.html | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index d66496a0a8..b6ccd1887d 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -12,16 +12,18 @@

    Understanding Parsing

    Intent of Parsing

    -

    This criterion has been removed from WCAG 2.2.

    +
    +

    This criterion has been removed from WCAG 2.2.

    -

    The intent of this Success Criterion was to ensure that user-agents, including assistive technologies, can accurately interpret and parse content. Since WCAG 2.0 was published, the specifications (such as HTML) and browsers have improved their handling of parsing errors. It is also that case that assistive technology used to do their own parsing of markup, but now rely on the browser. For that reason this success criterion has been removed. Many issues that would have failed this criterion will fail Info and Relationships or Name, Role, Value. Other issues are excepted by the "except where the specification allow these features" part of the criterion.

    +

    The intent of this Success Criterion was to ensure that user-agents, including assistive technologies, can accurately interpret and parse content. Since WCAG 2.0 was published, the specifications (such as HTML) and browsers have improved their handling of parsing errors. It is also that case that assistive technology used to do their own parsing of markup, but now rely on the browser. For that reason this success criterion has been removed. Many issues that would have failed this criterion will fail Info and Relationships or Name, Role, Value. Other issues are excepted by the "except where the specification allow these features" part of the criterion.

    -

    The following content is left for historical purposes to show the original intent.

    - -
    +

    The following content is left for historical purposes to show the original intent.

    + +
    +

    - If the content cannot be parsed into a data structure, then different user agents may present it differently or be completely unable to parse it. Some user agents use "repair techniques" to render poorly coded content. + The intent of this Success Criterion is to ensure that user agents, including assistive technologies, can accurately interpret and parse content. If the content cannot be parsed into a data structure, then different user agents may present it differently or be completely unable to parse it. Some user agents use "repair techniques" to render poorly coded content.

    Since repair techniques vary among user agents, authors cannot assume that content From a51be2eca65d15c010d99bf902500e382e73a6cc Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Fri, 23 Dec 2022 11:20:15 -0500 Subject: [PATCH 43/73] update from main --- techniques/general/G157.html | 5 +---- techniques/general/G160.html | 5 +---- understanding/20/parsing.html | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/techniques/general/G157.html b/techniques/general/G157.html index d7090ca21c..d56679260c 100644 --- a/techniques/general/G157.html +++ b/techniques/general/G157.html @@ -44,10 +44,7 @@

    Web conferencing products with integrated support for captioning viewport

    +
      + + +
    diff --git a/xslt/generate-techniques.xslt b/xslt/generate-techniques.xslt index ce29384ddd..b468a1b730 100644 --- a/xslt/generate-techniques.xslt +++ b/xslt/generate-techniques.xslt @@ -8,48 +8,92 @@ exclude-result-prefixes="#all" version="2.0"> - + techniques/ output/ technique-assocations.xml ../guidelines/wcag.xml - + - + - - + + + - +
    -

    About Understanding Documents

    - -

    Understanding WCAG 2.1 provides commentary on each guideline and each Success Criterion to help readers better understand the intent and how the guidelines and Success Criteria work together. The content of Understanding documents is not normative, which means it is not required for conformance.

    -

    Understanding documents also provide examples of Techniques or combinations of Techniques that the Working Group has identified as being sufficient to meet each Success Criterion. Links are then provided to write-ups for each of the Techniques.

    -

    To comment, file an issue in the W3C WCAG GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

    -
    -

    Introduction

    -

    Understanding WCAG 2.1 is a guide to understanding and using Web Content Accessibility Guidelines 2.1 [[WCAG22]] Although the normative definition and requirements for WCAG 2.1 can all be found in the WCAG 2.1 document itself, the concepts and provisions may be new to some people. Understanding WCAG 2.1 provides a non-normative extended commentary on each guideline and each Success Criterion to help readers better understand the intent and how the guidelines and Success Criteria work together. It also provides examples of techniques or combinations of techniques that the Working Group has identified as being sufficient to meet each Success Criterion. Links are then provided to write-ups for each of the techniques.

    -
    -

    Relationship to Understanding WCAG 2.0

    -

    Understanding WCAG 2.0 [[UNDERSTANDING-WCAG20]] is a substantial resource to support Web Content Accessibility Guidelines 2.0 [[WCAG20]]. Understanding WCAG 2.1 is a parallel resource that supports the new success criteria in WCAG 2.1. At this stage, it only includes content related to new features of WCAG 2.0. Future versions may include content relevant to WCAG 2.0, depending on how WCAG 2.1 evolves and what structure is determined to provide optimal support.

    -

    Unlike Understanding WCAG 2.0, this document has not been published as a Technical Report. This change reduces the formality of the document and increases the ability of the Accessibility Guidelines Working Group to maintain the content and optimize the structure. The Working Group considers the content to be authoritative. If feedback indicates the need, the document could be published as a Technical Report in the future.

    -
    -
    -

    Structure of Understanding WCAG 2.1

    -

    This is not an introductory document. It is a detailed technical description of the guidelines and their Success Criteria. See Web Content Accessibility Guidelines (WCAG) Overview for an introduction to WCAG, supporting technical documents, and educational material.

    -

    Understanding WCAG 2.1 is organized by guideline. There is an Understanding Guideline X.X section for each guideline. The intent and any advisory techniques that are related to the guideline but not specifically related to any of its Success Criteria are listed there as well.

    -

    The Understanding Guidelines X.X section is then followed by a Understanding Success Criterion X.X.X section for each Success Criterion of that guideline. These sections each contain:

    -
      -
    • -

      The Success Criterion as it appears in WCAG 2.1

      -
    • -
    • -

      Intent of the Success Criterion

      -
    • -
    • -

      Benefits (how the Success Criterion helps people with disabilities)

      -
    • -
    • -

      Examples

      -
    • -
    • -

      Related Resources

      -
    • -
    • -

      Techniques or combinations of techniques that are sufficient to meet the guidelines

      -
    • -
    • -

      Failures of this Success Criterion

      -
    • -
    • -

      Additional advisory techniques that go beyond what is required to meet the Success Criterion but can be used to make some or all types of content more accessible. Use of advisory techniques does not impact the level of conformance claimed.

      -
    • -
    • -

      Key terms for this Success Criterion (taken from the WCAG 2.1 Glossary)

      -
    • -
    -

    Links are provided from each Guideline in WCAG 2.1 directly to each Understanding Guideline X.X in this document. Similarly, there is a link from each Success Criterion in WCAG 2.1 to the Understanding Success Criterion X.X.X section in this document.

    -
    -
    -

    Techniques for WCAG 2.1

    -

    Techniques specific to WCAG 2.1 are added to the techniques for WCAG 2.0, it is one set. The Techniques change log lists the new techniques added since WCAG 2.1 was published.

    -
    +

    About WCAG Understanding Documents

    + +
    +

    About WCAG

    +

    Web Content Accessibility Guidelines (WCAG) provides requirements for making websites, applications, and other digital content accessible to people with disabilities. For an introduction to WCAG, supporting technical documents, and educational material, see WCAG 2 Overview.

    +

    There are additional resources that help you understand and implement WCAG. These Understanding documents are one type of resource. Others are explained in the WCAG 2 Documents.

    +
    +
    +

    About the Understanding Documents

    +

    WCAG Understanding documents are guides to understanding and implementing WCAG. They provide detailed explanations for + each guideline and each success criterion to help readers better understand the intent + of the success criteria. They include background information and technical details. They include techniques that are examples of ways to meet the success criteria. Each technique is linked to more details in a techniques page. Techniques are explained in Understanding Techniques for WCAG Success Criteria.

    +

    WCAG Understanding documents are not introductory resources. They are for people who want to understand WCAG more thoroughly. The WCAG Overview provides introductory information.

    +
    +

    Structure of the Documents

    +

    Understanding Guideline pages include:

    +
      +
    • The intent
    • +
    • Any advisory techniques that are related + to the guideline and not specifically related to any of its success criteria
    • +
    +

    Understanding Success Criterion pages include:

    +
      +
    • The success criterion wording from WCAG
    • +
    • Intent of the success criterion
    • +
    • Benefits, how it helps people with disabilities
    • +
    • Examples
    • +
    • Related resources
    • +
    • Techniques +
        +
      • Sufficient techniques
      • +
      • Advisory techniques
      • +
      • Failures
      • +
      +
    • +
    • Key terms for this success criterion, from the WCAG Glossary
    • +
    +
    diff --git a/understanding/index.html b/understanding/index.html index e29685b7fd..357b0e0f34 100644 --- a/understanding/index.html +++ b/understanding/index.html @@ -4,7 +4,7 @@ - Understanding WCAG 2.1 | WAI | W3C + Understanding WCAG 2.2 | WAI | W3C @@ -29,7 +29,7 @@
    -

    All WCAG 2.1 Understanding Docs

    +

    All WCAG 2.2 Understanding Docs

    -

    Techniques for WCAG 2.2

    +

    Techniques for WCAG 2.1

    From b86b715b70492ec6b9108b0c5aa71ca9bdfe3324 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 18 Apr 2023 14:30:51 +0100 Subject: [PATCH 55/73] Adding notes from meeting https://www.w3.org/2023/04/04-ag-minutes#item04 --- guidelines/sc/20/parsing.html | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/guidelines/sc/20/parsing.html b/guidelines/sc/20/parsing.html index dc5b0dce40..4859b1d699 100644 --- a/guidelines/sc/20/parsing.html +++ b/guidelines/sc/20/parsing.html @@ -10,9 +10,14 @@

    Parsing

    these features.

    -

    Start and end tags that are missing a critical character in their formation, such - as a closing angle bracket or a mismatched attribute value quotation mark are not - complete. -

    +

    This Success Criterion should be considered as always satisfied for any content using HTML or XML.

    + +
    +

    Since this criterion was written, the HTML Standard has adopted specific requirements governing how user agents must handle incomplete tags, incorrect element nesting, duplicate attributes, and non-unique IDs.

    + +

    Although the HTML Standard treats some of these cases as non-conforming for authors, it is considered to "allow these features" for the purposes of this Success Criterion because the specification requires that user agents support handling these cases consistently. In practice, this criterion no longer provides any benefit to people with disabilities in itself.

    + +

    Issues such as missing roles due to inappropriately nested elements or incorrect states or names due to a duplicate ID are covered by different Success Criteria and should be reported under those criteria rather than as issues with 4.1.1.

    +
    \ No newline at end of file From de2f64ec6fad328b91e772c94418af12694e62f4 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Wed, 3 May 2023 16:28:44 +0100 Subject: [PATCH 56/73] Updating 404 link --- understanding/21/reflow.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/reflow.html b/understanding/21/reflow.html index 6d273acfa9..da1bcaf91b 100644 --- a/understanding/21/reflow.html +++ b/understanding/21/reflow.html @@ -79,7 +79,7 @@

    Example 1: Responsive Design

    Resources

      -
    • Operational Overhead Caused by Horizontal Scrolling Text by Wayne Dick, 2017. The study shows the impact of horizontal scrolling on reading effort
    • +
    • Operational Overhead Caused by Horizontal Scrolling Text by Wayne Dick, 2017. The study shows the impact of horizontal scrolling on reading effort
    • Accessibility Requirements for People with Low Vision. W3C First Public Working Draft 17 March 2016
    • Responsive design resources from MDN Web docs
    • Responsive web design basics tutorial from Google
    • From 47575c39d985ceed357182cedc1749c00fe9536b Mon Sep 17 00:00:00 2001 From: Michael Cooper Date: Tue, 20 Jun 2023 08:19:04 -0400 Subject: [PATCH 57/73] update from 2.2 --- guidelines/terms/20/abbreviation.html | 10 +- .../20/ambiguous-to-users-in-general.html | 4 +- guidelines/terms/20/assistive-technology.html | 4 +- guidelines/terms/20/changes-of-context.html | 4 +- guidelines/terms/20/idiom.html | 12 +- guidelines/terms/20/image-of-text.html | 2 +- guidelines/terms/20/jargon.html | 2 +- guidelines/terms/20/keyboard-interface.html | 4 +- guidelines/terms/20/legal-commitments.html | 4 +- guidelines/terms/20/process.html | 8 +- ...grammatically-determined-link-context.html | 4 +- .../terms/20/programmatically-determined.html | 8 +- guidelines/terms/20/pure-decoration.html | 2 +- guidelines/terms/20/real-time-event.html | 10 +- guidelines/terms/20/role.html | 4 +- guidelines/terms/20/same-functionality.html | 4 +- .../terms/20/specific-sensory-experience.html | 2 +- guidelines/terms/20/supplemental-content.html | 12 +- guidelines/terms/20/technology.html | 4 +- guidelines/terms/20/text-alternative.html | 4 +- .../used-in-an-unusual-or-restricted-way.html | 4 +- guidelines/terms/20/user-agent.html | 4 +- guidelines/terms/20/user-controllable.html | 2 +- .../terms/20/user-interface-component.html | 4 +- guidelines/terms/20/web-page.html | 14 +- guidelines/terms/21/motion-animation.html | 2 +- guidelines/terms/21/set-of-web-pages.html | 11 +- techniques/aria/ARIA1.html | 3 + techniques/aria/ARIA10.html | 2 +- techniques/aria/ARIA11.html | 238 ++++++---- techniques/aria/ARIA13.html | 2 +- techniques/aria/ARIA14.html | 2 +- techniques/aria/ARIA19.html | 5 +- techniques/aria/ARIA5.html | 100 ++-- techniques/aria/ARIA8.html | 2 +- techniques/aria/ARIA9.html | 2 +- techniques/client-side-script/SCR1.html | 2 +- techniques/css/C18.html | 6 +- techniques/css/C20.html | 8 +- techniques/css/C23.html | 6 +- techniques/css/C25.html | 4 +- techniques/css/C27.html | 14 +- techniques/css/C30.html | 2 +- techniques/css/C40.html | 54 +-- techniques/css/C41.html | 2 +- techniques/css/C43.html | 190 ++++++++ techniques/css/C7.html | 2 +- techniques/failures/F108.html | 4 +- techniques/failures/F109.html | 61 +++ techniques/failures/F110.html | 80 ++++ techniques/failures/F72.html | 2 +- techniques/general/G15.html | 4 +- techniques/general/G153.html | 8 +- techniques/general/G176.html | 5 +- techniques/general/G200.html | 3 - techniques/general/G209.html | 2 +- techniques/general/G214.html | 4 +- techniques/general/G218.html | 2 + techniques/general/G219.html | 10 +- techniques/general/G220.html | 7 + techniques/general/G223.html | 2 +- techniques/html/H100.html | 73 +++ techniques/html/H101.html | 162 +++++++ techniques/html/H63.html | 2 +- techniques/html/H69.html | 4 +- techniques/pdf/PDF2.html | 2 +- techniques/pdf/PDF22.html | 2 +- techniques/pdf/PDF23.html | 2 +- techniques/pdf/PDF5.html | 2 +- techniques/pdf/PDF7.html | 2 +- understanding/20/audio-control.html | 6 +- understanding/20/captions-prerecorded.html | 2 +- understanding/20/contrast-enhanced.html | 165 ++++--- understanding/20/contrast-minimum.html | 201 +++----- understanding/20/error-suggestion.html | 114 ++--- understanding/20/focus-order.html | 2 +- understanding/20/focus-visible.html | 2 +- understanding/20/info-and-relationships.html | 110 ++--- understanding/20/language-of-parts.html | 9 +- understanding/20/parsing.html | 2 +- .../21/animation-from-interactions.html | 10 + understanding/21/character-key-shortcuts.html | 10 + .../21/concurrent-input-mechanisms.html | 10 + .../21/content-on-hover-or-focus.html | 12 +- understanding/21/identify-input-purpose.html | 10 + understanding/21/identify-purpose.html | 10 + understanding/21/input-modalities.html | 2 +- understanding/21/label-in-name.html | 10 + understanding/21/motion-actuation.html | 10 + understanding/21/non-text-contrast.html | 15 +- understanding/21/orientation.html | 10 + understanding/21/pointer-cancellation.html | 11 +- understanding/21/pointer-gestures.html | 9 + understanding/21/reflow.html | 17 +- understanding/21/status-messages.html | 10 + understanding/21/target-size-enhanced.html | 10 + understanding/21/text-spacing.html | 24 +- understanding/21/timeouts.html | 20 +- xslt/base.xslt | 16 +- xslt/generate-structure-xml.xslt | 4 +- xslt/generate-techniques.xslt | 2 +- xslt/generate-understanding.xslt | 18 + xslt/generic-xml-to-json.xslt | 439 ++++++++++++++++++ 103 files changed, 1832 insertions(+), 710 deletions(-) create mode 100644 techniques/css/C43.html create mode 100644 techniques/failures/F109.html create mode 100644 techniques/failures/F110.html create mode 100644 techniques/html/H100.html create mode 100644 techniques/html/H101.html create mode 100644 xslt/generic-xml-to-json.xslt diff --git a/guidelines/terms/20/abbreviation.html b/guidelines/terms/20/abbreviation.html index 57126dde89..7e289ea77b 100644 --- a/guidelines/terms/20/abbreviation.html +++ b/guidelines/terms/20/abbreviation.html @@ -17,10 +17,10 @@

      Not defined in all languages.

      -

      SNCF is a French initialism that contains the initial letters of the Société Nationale des Chemins de Fer, the French national railroad. -

      + -

      ESP is an initialism for extrasensory perception.

      + @@ -30,9 +30,9 @@ name or phrase) which may be pronounced as a word

      -

      NOAA is an acronym made from the initial letters of the National Oceanic and Atmospheric +

      diff --git a/guidelines/terms/20/ambiguous-to-users-in-general.html b/guidelines/terms/20/ambiguous-to-users-in-general.html index 4fc95a61f6..26d94e44cf 100644 --- a/guidelines/terms/20/ambiguous-to-users-in-general.html +++ b/guidelines/terms/20/ambiguous-to-users-in-general.html @@ -6,10 +6,10 @@ would not know what a link would do until they activated it)

      -

      The word guava in the following sentence "One of the notable exports is guava" is +

      diff --git a/guidelines/terms/20/assistive-technology.html b/guidelines/terms/20/assistive-technology.html index 6a75d242dd..0e9df1d118 100644 --- a/guidelines/terms/20/assistive-technology.html +++ b/guidelines/terms/20/assistive-technology.html @@ -27,9 +27,9 @@ markup into identifiable bundles.

      -

      Assistive technologies that are important in the context of this document include +

        diff --git a/guidelines/terms/20/changes-of-context.html b/guidelines/terms/20/changes-of-context.html index 5c4719e59d..9992de5ac6 100644 --- a/guidelines/terms/20/changes-of-context.html +++ b/guidelines/terms/20/changes-of-context.html @@ -27,9 +27,9 @@ context, unless they also change one of the above (e.g., focus).

        -

        Opening a new window, moving focus to a different component, going to a new page (including +

        diff --git a/guidelines/terms/20/idiom.html b/guidelines/terms/20/idiom.html index 2e35d5528e..259296dc85 100644 --- a/guidelines/terms/20/idiom.html +++ b/guidelines/terms/20/idiom.html @@ -9,16 +9,16 @@ or language-dependent) meaning.

        -

        In English, "spilling the beans" means "revealing a secret." However, "knocking over +

        -

        In Japanese, the phrase "さじを投げる" literally translates into "he throws a spoon," but it means that there is nothing +

        -

        In Dutch, "Hij ging met de kippen op stok" literally translates into "He went to roost with the chickens," but it means that +

        diff --git a/guidelines/terms/20/image-of-text.html b/guidelines/terms/20/image-of-text.html index 39f995e70b..92e3b94f8c 100644 --- a/guidelines/terms/20/image-of-text.html +++ b/guidelines/terms/20/image-of-text.html @@ -8,6 +8,6 @@

        This does not include text that is part of a picture that contains significant other visual content.

        -

        A person's name on a nametag in a photograph.

        + diff --git a/guidelines/terms/20/jargon.html b/guidelines/terms/20/jargon.html index 769ca59b81..aa3e3f12e2 100644 --- a/guidelines/terms/20/jargon.html +++ b/guidelines/terms/20/jargon.html @@ -3,6 +3,6 @@

        words used in a particular way by people in a particular field

        -

        The word StickyKeys is jargon from the field of assistive technology/accessibility.

        + diff --git a/guidelines/terms/20/keyboard-interface.html b/guidelines/terms/20/keyboard-interface.html index 85ca7f4975..50d55a00ab 100644 --- a/guidelines/terms/20/keyboard-interface.html +++ b/guidelines/terms/20/keyboard-interface.html @@ -7,11 +7,11 @@

        A keyboard interface allows users to provide keystroke input to programs even if the native technology does not contain a keyboard.

        -

        A touchscreen PDA has a keyboard interface built into its operating system as well +

        Operation of the application (or parts of the application) through a keyboard-operated diff --git a/guidelines/terms/20/legal-commitments.html b/guidelines/terms/20/legal-commitments.html index 431518846b..b0124e710c 100644 --- a/guidelines/terms/20/legal-commitments.html +++ b/guidelines/terms/20/legal-commitments.html @@ -3,8 +3,8 @@

        transactions where the person incurs a legally binding obligation or benefit

        -

        A marriage license, a stock trade (financial and legal), a will, a loan, adoption, +

        diff --git a/guidelines/terms/20/process.html b/guidelines/terms/20/process.html index aaa9e27880..8fe199d3f5 100644 --- a/guidelines/terms/20/process.html +++ b/guidelines/terms/20/process.html @@ -3,13 +3,13 @@

        series of user actions where each action is required in order to complete an activity

        -

        Successful use of a series of Web pages on a shopping site requires users to view +

        -

        An account registration page requires successful completion of a Turing test before +

        diff --git a/guidelines/terms/20/programmatically-determined-link-context.html b/guidelines/terms/20/programmatically-determined-link-context.html index d45d179706..51a40166a6 100644 --- a/guidelines/terms/20/programmatically-determined-link-context.html +++ b/guidelines/terms/20/programmatically-determined-link-context.html @@ -4,10 +4,10 @@

        additional information that can be programmatically determined from relationships with a link, combined with the link text, and presented to users in different modalities

        -

        In HTML, information that is programmatically determinable from a link in English +

        Since screen readers interpret punctuation, they can also provide the context from the current sentence, when the focus is on a link in that sentence. diff --git a/guidelines/terms/20/programmatically-determined.html b/guidelines/terms/20/programmatically-determined.html index ec6e1f0594..c63f17c9ab 100644 --- a/guidelines/terms/20/programmatically-determined.html +++ b/guidelines/terms/20/programmatically-determined.html @@ -6,13 +6,13 @@ user agents, including assistive technologies, can extract and present this information to users in different modalities

        -

        Determined in a markup language from elements and attributes that are accessed directly +

        -

        Determined from technology-specific data structures in a non-markup language and exposed +

        diff --git a/guidelines/terms/20/pure-decoration.html b/guidelines/terms/20/pure-decoration.html index b4f4d57a54..cc1b3fa962 100644 --- a/guidelines/terms/20/pure-decoration.html +++ b/guidelines/terms/20/pure-decoration.html @@ -7,6 +7,6 @@ changing their purpose.

        -

        The cover page of a dictionary has random words in very light text in the background.

        + diff --git a/guidelines/terms/20/real-time-event.html b/guidelines/terms/20/real-time-event.html index c776655c3d..b2724c659c 100644 --- a/guidelines/terms/20/real-time-event.html +++ b/guidelines/terms/20/real-time-event.html @@ -5,14 +5,14 @@ by the content

        -

        A Webcast of a live performance (occurs at the same time as the viewing and is not +

        -

        An on-line auction with people bidding (occurs at the same time as the viewing).

        + -

        Live humans interacting in a virtual world using avatars (is not completely generated +

        diff --git a/guidelines/terms/20/role.html b/guidelines/terms/20/role.html index 0f766933cf..5406356e6c 100644 --- a/guidelines/terms/20/role.html +++ b/guidelines/terms/20/role.html @@ -5,8 +5,8 @@ content

        -

        A number that indicates whether an image functions as a hyperlink, command button, +

        diff --git a/guidelines/terms/20/same-functionality.html b/guidelines/terms/20/same-functionality.html index 03480888a5..a1a317bd2e 100644 --- a/guidelines/terms/20/same-functionality.html +++ b/guidelines/terms/20/same-functionality.html @@ -3,10 +3,10 @@

        same result when used

        -

        A submit "search" button on one Web page and a "find" button on another Web page may +

        diff --git a/guidelines/terms/20/specific-sensory-experience.html b/guidelines/terms/20/specific-sensory-experience.html index 3762854baf..aa1e5e6a44 100644 --- a/guidelines/terms/20/specific-sensory-experience.html +++ b/guidelines/terms/20/specific-sensory-experience.html @@ -5,6 +5,6 @@ information or perform a function

        -

        Examples include a performance of a flute solo, works of visual art etc.

        + diff --git a/guidelines/terms/20/supplemental-content.html b/guidelines/terms/20/supplemental-content.html index 69b3344d49..b2eb33a00d 100644 --- a/guidelines/terms/20/supplemental-content.html +++ b/guidelines/terms/20/supplemental-content.html @@ -4,14 +4,14 @@

        additional content that illustrates or clarifies the primary content

        -

        An audio version of a Web page. -

        + -

        An illustration of a complex process. -

        + -

        A paragraph summarizing the major outcomes and recommendations made in a research +

        diff --git a/guidelines/terms/20/technology.html b/guidelines/terms/20/technology.html index 9edb054581..ed6a93d570 100644 --- a/guidelines/terms/20/technology.html +++ b/guidelines/terms/20/technology.html @@ -14,8 +14,8 @@ applications.

        -

        Some common examples of Web content technologies include HTML, CSS, SVG, PNG, PDF, +

        diff --git a/guidelines/terms/20/text-alternative.html b/guidelines/terms/20/text-alternative.html index 95e3bf555a..a3e6d73277 100644 --- a/guidelines/terms/20/text-alternative.html +++ b/guidelines/terms/20/text-alternative.html @@ -6,9 +6,9 @@ from the non-text content.

        -

        An image of a chart is described in text in the paragraph after the chart. The short +

        Refer to Understanding Text Alternatives for more information.

        diff --git a/guidelines/terms/20/used-in-an-unusual-or-restricted-way.html b/guidelines/terms/20/used-in-an-unusual-or-restricted-way.html index 03d6e87f2e..cc5e6dc547 100644 --- a/guidelines/terms/20/used-in-an-unusual-or-restricted-way.html +++ b/guidelines/terms/20/used-in-an-unusual-or-restricted-way.html @@ -5,10 +5,10 @@ in order to understand the content correctly

        -

        The term "gig" means something different if it occurs in a discussion of music concerts +

        diff --git a/guidelines/terms/20/user-agent.html b/guidelines/terms/20/user-agent.html index 89d5b46c91..6780a2844d 100644 --- a/guidelines/terms/20/user-agent.html +++ b/guidelines/terms/20/user-agent.html @@ -3,7 +3,7 @@

        any software that retrieves and presents Web content for users

        -

        Web browsers, media players, plug-ins, and other programs — including assistive technologies — that help in retrieving, rendering, and interacting with Web content. -

        + diff --git a/guidelines/terms/20/user-controllable.html b/guidelines/terms/20/user-controllable.html index 8e6bdc7456..511c53cf71 100644 --- a/guidelines/terms/20/user-controllable.html +++ b/guidelines/terms/20/user-controllable.html @@ -5,6 +5,6 @@

        This does not refer to such things as Internet logs and search engine monitoring data.

        -

        Name and address fields for a user's account.

        + diff --git a/guidelines/terms/20/user-interface-component.html b/guidelines/terms/20/user-interface-component.html index 3a9faa487c..732e68defd 100644 --- a/guidelines/terms/20/user-interface-component.html +++ b/guidelines/terms/20/user-interface-component.html @@ -18,9 +18,9 @@ called "user interface element".

        -

        An applet has a "control" that can be used to move through content by line or page +

        diff --git a/guidelines/terms/20/web-page.html b/guidelines/terms/20/web-page.html index 57c69b4c42..c54d118efb 100644 --- a/guidelines/terms/20/web-page.html +++ b/guidelines/terms/20/web-page.html @@ -12,24 +12,24 @@ within the scope of conformance to be considered a Web page.

        -

        A Web resource including all embedded images and media.

        + -

        A Web mail program built using Asynchronous JavaScript and XML (AJAX). The program +

        -

        A customizable portal site, where users can choose content to display from a set of +

        -

        When you enter "http://shopping.example.com/" in your browser, you enter a movie-like +

        diff --git a/guidelines/terms/21/motion-animation.html b/guidelines/terms/21/motion-animation.html index 2e65d73188..b68f94033b 100644 --- a/guidelines/terms/21/motion-animation.html +++ b/guidelines/terms/21/motion-animation.html @@ -2,6 +2,6 @@

        addition of steps between conditions to create the illusion of movement or to give a sense of a smooth transition

        -

        For example, an element which moves into place or changes size while appearing is considered to be animated. An element which appears instantly without transitioning is not using animation. Motion animation does not include changes of color, blurring, or opacity which do not change the perceived size, shape, or position of the element.

        +
        diff --git a/guidelines/terms/21/set-of-web-pages.html b/guidelines/terms/21/set-of-web-pages.html index 6e5c4fa0bc..8add90c3f2 100644 --- a/guidelines/terms/21/set-of-web-pages.html +++ b/guidelines/terms/21/set-of-web-pages.html @@ -4,11 +4,12 @@

        collection of web pages that share a common purpose and that are created by the same author, group or organization

        -

        Examples include a publication which is split across multiple Web pages, where each page contains - one chapter or other significant section of the work. The publication is logically - a single contiguous unit, and contains navigation features that enable access to the - full set of pages. -

        +

        Different language versions would be considered different sets of Web pages.

        diff --git a/techniques/aria/ARIA1.html b/techniques/aria/ARIA1.html index f8233aed02..a36412ad3f 100644 --- a/techniques/aria/ARIA1.html +++ b/techniques/aria/ARIA1.html @@ -88,6 +88,9 @@

        Resources

      • WAI-ARIA Authoring Practices Guide.
      • +
      • + HTML Accessibility API Mappings +
      • Accessible Name and Description Computation.
      • diff --git a/techniques/aria/ARIA10.html b/techniques/aria/ARIA10.html index d4f4163282..66afc07d29 100644 --- a/techniques/aria/ARIA10.html +++ b/techniques/aria/ARIA10.html @@ -43,7 +43,7 @@

        Providing a short description for a complex graphic

        WAI-ARIA Authoring Practices Guide
      • - HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation + HTML Accessibility API Mappings
      • Accessible Name and Description Computation diff --git a/techniques/aria/ARIA11.html b/techniques/aria/ARIA11.html index 49014902fb..32969afd78 100644 --- a/techniques/aria/ARIA11.html +++ b/techniques/aria/ARIA11.html @@ -1,120 +1,154 @@ -Using ARIA landmarks to identify regions of a page

        Using ARIA landmarks to identify regions of a page

        ID: ARIA11

        Technology: aria

        Type: Technique

        When to Use

        + + + + Using ARIA landmarks to identify regions of a page + + + +

        Using ARIA landmarks to identify regions of a page

        +
        +

        ID: ARIA11

        +

        Technology: aria

        +

        Type: Technique

        +
        +

        When to Use

        Technologies that support Accessible Rich Internet Applications (WAI-ARIA).

        -

        Description

        -

        The purpose of this technique is to provide programmatic access to sections of a web page. Landmark roles (or "landmarks") programmatically identify sections of a page. Landmarks help assistive technology (AT) users orient themselves to a page and help them navigate easily to various sections of a page. -

        +
        +

        Description

        +

        The purpose of this technique is to provide programmatic access to sections of a web page. Landmark roles (or "landmarks") programmatically identify sections of a page. Landmarks help assistive technology (AT) users orient themselves to a page and help them navigate easily to various sections of a page.

        They also provide an easy way for users of assistive technology to skip over blocks of content that are repeated on multiple pages and notify them of programmatic structure of a page. For instance, if there is a common navigation menu found on every page, landmark roles (or "landmarks") can be used to skip over it and navigate from section to section. This will save assistive technology users and keyboard users the trouble and time of tabbing through a large amount of content to find what they are really after, much like a traditional "skip links" mechanism. (Refer to User Agent Notes above for specifics of AT support). A blind user who may be familiar with a news site's menu, and is only interested in getting to the top story could easily navigate to the "main" landmark, and bypass dozens of menu links. In another circumstance, a user who is blind may want to quickly find a navigation menu, and can do so by jumping to the navigation landmark.

        -

        Landmarks also can help sighted keyboard-only users navigate to sections of a page using a browser plugin. -

        -

        Landmarks are inserted into the page using the role attribute on an element that marks the section. The value of the attribute is the name of the landmark. These role values are listed below: +

        Landmarks also can help sighted keyboard-only users navigate to sections of a page using a browser plugin.

        +

        Landmarks are inserted into the page using the role attribute on an element that marks the section. The value of the attribute is the name of the landmark. These role values are listed below:

          -
        • banner: A region that contains the prime heading or internal title of a page. -
        • -
        • complementary: Any section of the document that supports the main content, yet is separate and meaningful on its own. -
        • -
        • contentinfo: A region that contains information about the parent document such as copyrights and links to privacy statements. -
        • -
        • form: A region of the document that represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing. -
        • -
        • main: Main content in a document. In almost all cases a page will have only one role="main". -
        • -
        • navigation: A collection of links suitable for use when navigating the document or related documents. -
        • -
        • search: The search tool of a Web document. -
        • +
        • banner: A region that contains the prime heading or internal title of a page.
        • +
        • navigation: A region that contains navigation links links to other pages or different parts of the same page.
        • +
        • main: A region that contains a page's main content.
        • +
        • region: A region that contains a perceivable section of the page containing content that is sufficiently important for users to be able to navigate to the section. A region landmark isn't exposed as a landmark region unless it has an accessible name.
        • +
        • form: A region of the document that represents a collection of form-associated elements, some of which can represent editable values that can be submitted to a server for processing.
        • +
        • search: A region of the page containing search functionality.
        • +
        • complementary: Any section of the document that supports the main content, yet is separate and meaningful on its own.
        • +
        • contentinfo: A region that contains information about the parent document such as copyrights and links to privacy statements.
        -

        There are cases when a particular landmark role could be used more than once on a page, such as on primary and secondary navigation menus. In these cases, identical roles should be disambiguated from each other using a valid technique for labelling regions (see examples below). -

        -

        Landmarks should supplement native semantic markup such as HTML headings, lists and other structural markup. Landmarks are interpretable by WAI-ARIA-aware assistive technologies and are not exposed by browsers directly to users. -

        -

        It is a best practice to include ALL content on the page in landmarks, so that screen reader users who rely on them to navigate from section to section do not lose track of content. -

        + +

        There are cases when a particular landmark role could be used more than once on a page, such as on primary and secondary blocks of navigation. In these cases, identical roles should be labeled using a valid technique for labelling regions.

        + +

        Landmarks should supplement native semantic markup such as HTML headings, lists and other structural markup. Landmarks are interpretable by WAI-ARIA-aware assistive technologies and are not exposed by browsers directly to users.

        + +

        It is a best practice to include all content on the page in landmarks, so that screen reader users who rely on them to navigate from section to section do not lose track of content.

        +

        Examples

        -
        -

        Simple landmarks

        +
        +

        Simple landmarks

        -

        The following example shows how landmarks might be added to an HTML4 or XHTML 1.0 document:

        -
        <div id="header" role="banner">A banner image and introductory title</div>
        -<div id="sitelookup" role="search">....</div>
        -<div id="nav" role="navigation">...a list of links here ... </div>
        -<div id="content" role="main"> ... Ottawa is the capital of Canada ...</div>
        -<div id="rightsideadvert" role="complementary">....an advertisement here...</div>
        -<div id="footer" role="contentinfo">(c)The Freedom Company, 123 Freedom Way, Helpville, USA</div>
        - -
        -
        -

        Multiple landmarks of the same type and aria-labelledby

        - -

        The following example shows a best practice of how landmarks might be added to an HTML4 or XHTML 1.0 document in situations where there are more than two of the same type of landmark on the same page. For instance, if a navigation role is used multiple times on a Web page, each instance may have a unique label specified using aria-labelledby: +

        The following example shows how landmarks might be added to an HTML document:

        +
        <div role="banner"> site logo and name, etc. here </div>
        +<div role="search"> search functionality here </div>
        +<div role="navigation"> a list of navigation links here </div>
        +<div role="form"> a sign-up form here </div>
        +<div role="main"> the page's main content here </div>
        +<div role="region"> a sponsor's promotion here </div>
        +<div role="complementary"> sidebar content here </div>
        +<div role="contentinfo"> site contact details, copyright information, etc. here </div>
        -

        -
        <div id="leftnav" role="navigation" aria-labelledby="leftnavheading">
        -<h2 id="leftnavheading">Institutional Links</h2>
        -<ul><li>...a list of links here ...</li> </ul></div>
        -<div id="rightnav" role="navigation" aria-labelledby="rightnavheading">
        -<h2 id="rightnavheading">Related topics</h2>
        -<ul><li>...a list of links here ...</li></ul></div>
        - -
        -
        -

        Multiple landmarks of the same type and aria-label

        - -

        The following example shows a best practice of how landmarks might be added to an HTML4 or XHTML 1.0 document in situations where there are more than two of the same type of landmark on the same page, and there is no existing text on the page that can be referenced as the label.

        -
        <div id="leftnav" role="navigation" aria-label="Primary">
        -<ul><li>...a list of links here ...</li></ul> </div>
        -<div id="rightnav" role="navigation" aria-label="Secondary">
        -<ul><li>...a list of links here ...</li> </ul></div>
        - -
        -
        -

        Search form

        +
        +
        +

        Multiple landmarks of the same type and aria-labelledby

        + +

        The following example shows a best practice of how landmarks might be added to an HTML document in situations where there are two or more of the same type of landmark on the same page. For instance, if a navigation role is used multiple times on a page, each instance may have a unique label specified using aria-labelledby:

        + +
        <div aria-labelledby="site-nav-heading" role="navigation">
        +  <h2 id="site-nav-heading">Site</h2>
        +    <ul>
        +      <li><a href="...">nav link 1</a></li>  
        +      <li><a href="...">nav link 2</a></li>
        +      <li><a href="...">nav link 3</a></li>
        +   </ul>
        +</div>
        +<div aria-labelledby="related-nav-heading" role="navigation">
        +  <h2 id="related-nav-heading">Related Topics</h2>
        +    <ul>
        +      <li><a href="...">topic link 1</a></li>
        +      <li><a href="...">topic link 2</a></li>
        +      <li><a href="...">topic link 3</a></li>
        +    </ul>
        +</div>
        -

        The following example shows a search form with a "search" landmark. The search role typically goes on the form element or a div surrounding the form.

        -
        <form role="search">
        -<label for="s6">search</label><input id="s6" type="text" size="20">
        -...
        -</form> 
        +
        +
        +

        Multiple landmarks of the same type and aria-label

        + +

        The following example shows a best practice of how landmarks might be added to an HTML document in situations where there are two or more of the same type of landmark on the same page, and there is no existing text on the page that can be referenced as the label:

        +
        <div aria-label="Site" role="navigation">
        +   <ul>
        +      <li>< href="...">nav link 1</a></li>
        +      <li>< href="...">nav link 2</a></li>
        +      <li>< href="...">nav link 3</a></li>
        +   </ul>
        +</div>
        +<div aria-label="Tags" role="navigation">
        +   <ul>
        +      <li><a href="...">tag link 1</a></li>
        +      <li><a href="...">tag link 2</a></li>
        +      <li><a href="...">tag link 3</a></li>
        +   </ul>
        +</div>
        +
        +
        +

        Search form

        +

        The following example shows a search form with a "search" landmark. The search role typically goes on the form element or a div surrounding the form:

        +
        <form role="search">
        +   <label for="product-search" id="search-label">Search</label>
        +   <input id="product-search" placeholder="title, author, or ISBN" type="text">
        +   <button type="submit">Find Books</button>
        +</form>
        -
        +

        Tests

        -

        Procedure

        +
        +

        Procedure

          -
        1. Examine each element with a landmark role. -
        2. -
        3. Examine whether the landmark role attribute is applied to the section of the page that corresponds with that role. (i.e., the "navigation" role is applied to a navigation section, the "main" role is applied to where the main content begins.) -
        4. +
        5. Examine each element with a landmark role.
        6. +
        7. Examine whether the correct element has been used to mark up content. For example: a navigation role has been used to mark up a section with navigation links, or the main role is used to contain the page's main content.
        8. +
        9. If a landmark region needs to have an accessible name to be exposed as a landmark, check to see that there is an accessible name.
        -

        Expected Results

        +
        +

        Expected Results

          -
        • #1 and #2 are true.
        • +
        • #1, #2, and #3 are true.
        -

        Resources

        - - - -
        +
        + +

        Resources

        + +
        + + diff --git a/techniques/aria/ARIA13.html b/techniques/aria/ARIA13.html index 699427d650..66fbd52344 100644 --- a/techniques/aria/ARIA13.html +++ b/techniques/aria/ARIA13.html @@ -65,7 +65,7 @@

        Identification for Application landmarks

        WAI-ARIA Authoring Practices Guide
      • - HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation + HTML Accessibility API Mappings
      diff --git a/techniques/aria/ARIA14.html b/techniques/aria/ARIA14.html index c49a768e75..05ad896766 100644 --- a/techniques/aria/ARIA14.html +++ b/techniques/aria/ARIA14.html @@ -56,7 +56,7 @@

      A phone number with multiple fields

      WAI-ARIA Authoring Practices Guide
    • - HTML to Platform Accessibility APIs Implementation Guide: Accessible Name and Description Calculation + HTML Accessibility API Mappings
    diff --git a/techniques/aria/ARIA19.html b/techniques/aria/ARIA19.html index d0a0f0d522..433d8c476a 100644 --- a/techniques/aria/ARIA19.html +++ b/techniques/aria/ARIA19.html @@ -81,9 +81,6 @@

    Injecting error messages into a container with role=alert already present in
  • Form Labels, ARIA Examples (Experimental)
  • -
  • - MSF&W Accessibility -
  • WAI-ARIA, Supported States and Properties, aria-describedby
  • @@ -95,4 +92,4 @@

    Injecting error messages into a container with role=alert already present in -

    \ No newline at end of file +
    diff --git a/techniques/aria/ARIA5.html b/techniques/aria/ARIA5.html index 0be0172e49..a4bd419dc0 100644 --- a/techniques/aria/ARIA5.html +++ b/techniques/aria/ARIA5.html @@ -2,70 +2,70 @@

    Technologies that support Accessible Rich Internet Applications (WAI-ARIA).

    Description

    The objective of this technique is to use WAI-ARIA state and property attributes to expose the state, properties and values of a user interface component so that they can be read and set by assistive technology, and so that assistive technology is notified of changes to these values. The WAI-ARIA specification provides a normative description of each attribute, and the role of the user interface elements that they support. When rich internet applications define new user interface widgets, exposing the state and property attributes enables users to understand the widget and how to interact with it.

    -

    Examples

    +
    +
    +

    Examples

    A toggle button

    -

    A widget with role button acts as a toggle button when it implements the attribute aria-pressed. When aria-pressed is true, the button is in a "pressed" state. When aria-pressed is false, it is not pressed. If the attribute is not present, the button is a simple command button.

    -

    The following snippet from The Open Ajax Accessibility Examples, Example 38, shows WAI-ARIA mark-up for a toggle button that selects bold text:

    +

    The following snippet from the ARIA Authoring Practices Guide (APG) examples for button shows WAI-ARIA mark-up for a toggle button to mute/unmute audio:

    -  <li id="bold1"  
    -    class="toggleButton"
    -    role="button"
    -    tabindex="0"
    -    aria-pressed="false"
    -    aria-labelledby="bold_label"
    -    aria-controls="text1">
    -    <img src="http://www.oaa-accessibility.org/media/examples/images/button-bold.png" alt="bold text" align="middle">
    -</li>
    +<a tabindex="0"
    +   role="button"
    +   id="toggle"
    +   aria-pressed="false">
    +  Mute
    +  …
    +</a>
     
    -

    The li element has a role of "button" and an "aria-pressed" attribute. The following excerpt from the Javascript for this example updates the value of the "aria-pressed" attribute:

    +

    The a element has a role="button" and an aria-pressed attribute. The following excerpt from the Javascript for this example updates the value of the aria-pressed attribute:

                       
    -                             /**
    -   * togglePressed() toggles the aria-pressed atribute between true or false
    -   *
    -   * @param ( id object) button to be operated on
    -   *
    -   * @return N/A
    -   */
    -  function togglePressed(id) {
    -  
    -    // reverse the aria-pressed state
    -    if ($(id).attr('aria-pressed') == 'true') {
    -      $(id).attr('aria-pressed', 'false');
    -    }
    -    else {
    -      $(id).attr('aria-pressed', 'true');
    -    }
    -  }
    -                            
    -

    This button is available as part of the working example of Example 38 - Toolbar using inline images for visual state, on the OpenAjax Alliance site.

    +/** + * Toggles the toggle button’s state between *pressed* and *not pressed*. + * + * @param {HTMLElement} button + */ +function toggleButtonState(button) { + var isAriaPressed = button.getAttribute('aria-pressed') === 'true'; + + button.setAttribute('aria-pressed', isAriaPressed ? 'false' : 'true'); + + … +} +

    A slider

    A widget with role slider lets a user select a value from within a given range. The slider represents the current value and the range of possible values via the size of the slider and the position of the handle. These properties of the slider are represented by the attributes aria-valuemin, aria-valuemax, and aria-valuenow.

    -

    The following snippet from The Open Ajax Accessibility Examples, Example 32, shows WAI-ARIA mark-up for a slider created in Javascript. Note that the javascript sets the attributes aria-valuemin, aria-valuemax, and aria-valuenow:

    -
       var handle = '<img id="' + id + '" class="' + (this.vert == true ? 'v':'h') +'sliderHandle" ' +
    -    'src="http://www.oaa-accessibility.org/media/examples/images/slider_' + (this.vert == true ? 'v':'h') + '.png" ' + 'role="slider" ' +
    -    'aria-valuemin="' + this.min +
    -    '" aria-valuemax="' + this.max +
    -    '" aria-valuenow="' + (val == undefined ? this.min : val) +
    -           '" aria-labelledby="' + label +
    -           '" aria-controls="' + controls + '" tabindex="0"></img>';
    -

    The following excerpt from the Javascript for this example updates the value of the "aria-valuenow" attribute when the value of the slider handle is changed:

    -
     slider.prototype.positionHandle = function($handle, val) {
    -    ...
    -   // Set the aria-valuenow position of the handle
    -  $handle.attr('aria-valuenow', val);
    -   ...
    -  }
    +            

    The following snippet from the ARIA Authoring Practices Guide (APG) color viewer slider example shows WAI-ARIA mark-up for one of the sliders:

    +
    +<div id="id-red" class="color-slider-label">
    +   Red
    +</div>
    +<div class="color-slider red"
    +      role="slider"
    +      tabindex="0"
    +      aria-valuemin="0"
    +      aria-valuenow="128"
    +      aria-valuemax="255"
    +      aria-labelledby="id-red">
    +   …
    +</div>
     
    -

    This slider is available as part of the working example of Example 32 - Slider, on the OpenAjax Alliance site.

    - +

    The following excerpt from the Javascript for this example updates the value of the aria-valuenow attribute when the value of the slider handle is changed:

    +
    +moveSliderTo(slider, value) {
    +  …
    +  slider.sliderNode.setAttribute('aria-valuenow', value);
    +  …
    +}
    +
    +
    -

    Tests

    +
    +

    Tests

    Procedure

    The WAI-ARIA specification, Section 5.3, Categorization of Roles defines the required and inherited states and properties for each role.

    diff --git a/techniques/aria/ARIA8.html b/techniques/aria/ARIA8.html index 84890f8e54..055bf7f95f 100644 --- a/techniques/aria/ARIA8.html +++ b/techniques/aria/ARIA8.html @@ -42,7 +42,7 @@

    Describing the purpose of a link in HTML using aria-label.

    Description

    -

    The objective of this technique is to allow user to extend the default time limit by providing a mechanism to extend the time when scripts provide functionality that has default time limits. In order to allow the user to request a longer time limit, the script can provide a form (for example) allowing the user to enter a larger time limit or indicating that more time is needed. If the user is being warned that a time limit is about to expire (see ), this form can be made available from the warning dialog. The user can extend the time limit to at least 10 times the default time limit, either by allowing the user to indicate how much additional time is needed or by repeatedly allowing the user to extend the time limit.

    +

    The objective of this technique is to allow user to extend the default time limit by providing a mechanism to extend the time when scripts provide functionality that has default time limits. In order to allow the user to request a longer time limit, the script can provide a form (for example) allowing the user to enter a larger time limit or indicating that more time is needed. If the user is being warned that a time limit is about to expire (see SCR16), this form can be made available from the warning dialog. The user can extend the time limit to at least 10 times the default time limit, either by allowing the user to indicate how much additional time is needed or by repeatedly allowing the user to extend the time limit.

    Examples

    -
    \ No newline at end of file +
    diff --git a/techniques/css/C20.html b/techniques/css/C20.html index 42c9ad7b8b..0d8537a468 100644 --- a/techniques/css/C20.html +++ b/techniques/css/C20.html @@ -58,15 +58,15 @@
  • CSS 2 Visual formatting Model Details
  • -
  • - About fluid and fixed width layouts +
  • + Fixed, fluid and elastic layouts
  • Accessible CSS
  • - Ideal line length for content + Ideal line length for content
  • -
    \ No newline at end of file +
    diff --git a/techniques/css/C23.html b/techniques/css/C23.html index b894085f55..d15cdd4c45 100644 --- a/techniques/css/C23.html +++ b/techniques/css/C23.html @@ -42,8 +42,8 @@ -
    \ No newline at end of file +
    diff --git a/techniques/css/C25.html b/techniques/css/C25.html index c0915b587f..a373cc854c 100644 --- a/techniques/css/C25.html +++ b/techniques/css/C25.html @@ -1,7 +1,7 @@ Specifying borders and layout in CSS to delineate areas of a Web page while not specifying text and text-background colors

    Specifying borders and layout in CSS to delineate areas of a Web page while not specifying text and text-background colors

    ID: C25

    Technology: css

    Type: Technique

    When to Use

    Pages that use CSS.

    Description

    -

    The intent of this technique is to specify borders and layout using CSS and leave text and background colors to render according to the user's browser and/or operating system settings (Please see above note in relation to Safari). This allows users to view the text in the colors they require while maintaining other aspects of the layout and page design such as columns of text, borders around sections or vertical lines between a menu and main content area. It will also prevent some display issues in some browsers when pages contain Javascript pop-up boxes or drop-down menus and have the colors overridden.

    +

    The intent of this technique is to specify borders and layout using CSS and leave text and background colors to render according to the user's browser and/or operating system settings. This allows users to view the text in the colors they require while maintaining other aspects of the layout and page design such as columns of text, borders around sections or vertical lines between a menu and main content area. It will also prevent some display issues in some browsers when pages contain Javascript pop-up boxes or drop-down menus and have the colors overridden.

    Borders and layout indicators help many people with cognitive disabilities, as does flexibility over the text and background colors. Sometimes these two needs are in conflict when the user has to over-ride the author's color selection of text and background in the browser and the browser also removes the borders and the intended layout. This can mean the page is displayed in a single column with one block of content below the other, which can result in unnecessary whitespace and long lines of text. It can also mean that pop-up boxes gain a transparent background, superimposing the text of the box on the text of the page, and drop-down menus either become transparent or gain a dark-grey background. When a Web author does not specify the colors of any text and background, while specifying border colors and layout, it is possible, in most popular browsers, to change the text and background colors without affecting the other (author-specified) CSS declarations.

    Examples

    @@ -35,4 +35,4 @@
  • G148
  • G156
  • C23
  • -
    \ No newline at end of file +
    diff --git a/techniques/css/C27.html b/techniques/css/C27.html index 960624bc93..9b77624fe3 100644 --- a/techniques/css/C27.html +++ b/techniques/css/C27.html @@ -30,10 +30,16 @@

    Resources

    + + + -
    \ No newline at end of file +
    diff --git a/techniques/css/C30.html b/techniques/css/C30.html index d106dadfcc..73e06fd8e0 100644 --- a/techniques/css/C30.html +++ b/techniques/css/C30.html @@ -5,7 +5,7 @@

    This technique can be used to meet Success Criterion 1.4.5 or 1.4.9 if a presentation that does not include images of text is available and as long as the user interface control that is provided to allow users to switch to an alternate presentation meets the relevant criteria. Where possible, authors should deliver the presentation that does not include images of text as the default presentation. In addition, the control used to switch should be located near the beginning of the page.

    A variety of "image replacement" techniques have been developed to address a variety of user agent, configuration and compatibility with assistive technology issues (See resources for more information). While there are a variety of approaches authors may use to replace text, it is important to consider compatibility with assistive technology, whether the technique will work correctly if scripting, CSS, images (or combinations of these) are turned off. Since it can be difficult to find a single solution that works in all cases, this technique recommends the use of a control that allows users to switch to a presentation that does not include an image replacement technique.

    -

    This technique can be used in combination with a style switching technique to present a page that is a conforming alternate version for non-conforming content. Refer to and Understanding Conforming Alternate Versions for more information.

    +

    This technique can be used in combination with a style switching technique to present a page that is a conforming alternate version for non-conforming content. Refer to C29 and Understanding Conforming Alternate Versions for more information.

    Examples

    diff --git a/techniques/css/C40.html b/techniques/css/C40.html index b2353644d3..6d79db1463 100644 --- a/techniques/css/C40.html +++ b/techniques/css/C40.html @@ -18,63 +18,51 @@

    When to Use

    Description

    -

    The objective of this technique is to create a two-color focus indicator that has sufficient contrast against any background color. This technique eliminates the need for multiple classes to ensure sufficient contrast of the focus indicator when viewed against different backgrounds.

    +

    The objective of this technique is to create a two-color focus indicator that has sufficient contrast against any solid background color. This technique can avoid the need for multiple classes to ensure sufficient contrast of the focus indicator when viewed against different backgrounds.

    -

    The default focus indicators provided by browsers are typically one color, so they are highly visible when some components have focus and not well seen on other components. For instance, if a focus indicator is dark blue and a button is on a white background then it will be easily seen, but if the background is also blue it will not be easily seen.

    +

    Authors may apply this technique to sites that use a variety of different colored backgrounds. Although it is possible to create different colored focus indicators for different parts of a page, this can be time consuming and it can be easy to miss some components. However, if the focus indicator uses two highly-contrasting colors - a light color and a dark color - then the same indicator can be re-used, since at least one of the two colors will always have enough contrast against any background color.

    -

    Although it is possible to create individual CSS classes to address the different buttons across a site, this can be time consuming and easy to miss some types of interactive content. However, if the focus indicator is two colors - a light color and a dark color - then it will always have sufficient contrast against any background color. Currently, this can be done by combining the text-shadow property with the outline property on the focus indicator.

    +

    As long as the two indicator colors have a contrast ratio of at least 9:1 with each other, at least one of the two colors is guaranteed to meet 3:1 contrast with any solid background color.

    -

    Developers may apply this technique to parts of the site where its hard to keep track of the focus indicator (such as when there are lots of different component colors). Developers can also provide a single-color focus indicator for components such as a navigation menus that are used across a site, have specific design requirements, and are easy to test and maintain.

    +

    This technique only guarantees that an indicator will pass if the entire indicator is drawn over the background, not within the boundary of the focused component, and if the entire background behind the indicator is one single, solid color. For example, if the background is an image or gradient, or if the indicator is partially overlaid on top of a different UI component, it may still be necessary to compare the indicator pixel-by-pixel against the background.

    -

    If it can be determined that the two-color focus indicator CSS takes precedence then the test can be applied programmatically rather than by manually focusing on each interface component.

    - +

    In CSS, two-color indicators can be implemented by combining the outline and box-shadow properties with the :focus or :focus-visible pseudo-classes.

    + +

    Avoid setting outline: none to use box-shadow on its own. User agents commonly suppress the box-shadow property in forced-color modes, so authors should avoid relying on box-shadow alone to implement focus indicators. If box-shadow only styling is required, consider combining it with an outline: 2px transparent solid property to ensure compatibility with forced-color modes.

    Examples

    -

    The examples demonstrate a simple implementation where focus styles are applied to all links and inputs. In use on a more complex website care would need to be taken that these styles are not overridden by more specific styles.

    +

    This example demonstrates a simple implementation where focus styles are applied to all focusable components. In use on a more complex website care would need to be taken that these styles are not overridden by more specific styles.

    -

    A light and dark dotted indicator

    -

    Description

    +

    A thick two-color indicator

    +

    In this example, the indicator consists of two solid bands of color. Because each color band is 2 CSS pixels thick, either color band is large enough to meet the minimum indicator size requirement on its own. As long as one of the two colors has 3:1 change contrast with the pixels behind and around the focus indicator, the indicator will satisfy both the Focus Appearance and Non-Text Contrast success criteria.

    *:focus {
    -	box-shadow: 0 0 0px 2px white;
    -	outline: dotted;
    +	/* inner indicator */
    +	outline: 2px #F9F9F9 solid;
    +	outline-offset: 0;
    +	/* outer indicator */
    +	box-shadow: 0 0 0 4px #193146;
     }
    -

    Working example of combining a dark outline and light text shadow

    - +

    Working example of a thick two-color indicator

    - -
    -

    A thicker light and dark indicator

    -

    Description

    -
    *:focus { 
    -	/* ensure high-contrast mode still has an indicator */
    -	outline: 2px transparent solid;
    -
    -	/* Apply a thick yellow box-shadow with 
    -	   a thin dark blue indicator in the middle */
    -	box-shadow: 0 0 0 2px #F9F9D1, 0 0 0 4px #396196, 0 0 4px 8px #F9F9D1;
    -}
    -

    Working example of combining a dark outline and light text shadow

    - -
    -

    Tests

    Procedure

    -

    For each focusable user interface element:

    +

    For each focusable user interface component:

      -
    1. Check that the two-colors in the focus indicator are adjacent and have a contrast ratio that is 3:1 or greater with each other.
    2. -
    3. Check that the colors used contrast with the adjacent colors, or are at least 2 CSS pixels thick.
    4. +
    5. Check that the two colors in the focus indicator have a contrast ratio that is 9:1 or greater with each other.
    6. +
    7. Check that each color band is at least 2 CSS pixels thick.
    8. +
    9. Check that the indicator only appears overtop one solid background color at a time.

    Expected Results

      -
    • #1 and #2 are true.
    • +
    • #1, #2, and #3 are true.
    diff --git a/techniques/css/C41.html b/techniques/css/C41.html index 389e05971f..6f1ec9226f 100644 --- a/techniques/css/C41.html +++ b/techniques/css/C41.html @@ -54,7 +54,7 @@

    Tests

    Procedure

    -

    For each focusable user interface element:

    +

    For each focusable user interface component:

    1. Place keyboard focus on each focusable user interface element on the page using the keyboard.
    2. Check that the focus indicator area is at least the size of a 2 CSS px border around the component.
    3. diff --git a/techniques/css/C43.html b/techniques/css/C43.html new file mode 100644 index 0000000000..08bea6f0d7 --- /dev/null +++ b/techniques/css/C43.html @@ -0,0 +1,190 @@ + + + + Using CSS margin and scroll-margin to un-obscure content + + + +

      Using CSS margin and scroll-margin to un-obscure content

      +
      +

      Metadata

      +

      +

      CSS

      +

      +
      +
      +

      When to Use

      +

      All technologies that support CSS.

      +
      +
      +

      Description

      +

      The objective of this technique is to ensure that user interface components (for example: links, buttons, and form fields) that are initially completely obscured by a fixed-position component can still be accessed by users. In this example, this is achieved using the CSS margin and scroll-margin properties to create space underneath the site footer and allow the link in the footer to scroll into view when it is focused with a keyboard.

      +
      +
      +

      Examples

      + +
      +

      Using CSS margin and scroll-margin to un-obscure content

      +

      This example shows a situation where there is a fixed-position banner at the bottom of the screen that is covering up the site footer, which contains a link. This type of fixed-position banner is a common design for cookie-consent banners.

      + +

      Working example: Using CSS margin and scroll-margin to un-obscure content.

      +
      <!doctype html>
      +<html lang="en">
      +<head>
      +  <meta charset="utf-8">
      +  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
      +  <title>Using CSS margin and scroll-margin to un-obscure content</title>
      +  <style>
      +    ...
      +
      +    .wrapper {
      +      display:grid;
      +      gap:1rem;
      +      grid-template-columns:repeat(9, 1fr);
      +      grid-template-rows:8rem auto minmax(10rem, max-content);
      +      height:100vh;
      +    }
      +
      +    .wrapper > * {
      +      border:1px solid var(--black);
      +      padding:1rem;
      +    }
      +
      +    header {
      +      grid-column:1 / -1;
      +      grid-row:1;
      +    }
      +
      +    main {
      +      grid-column:1 / 8;
      +    }
      +
      +    aside {
      +      grid-column:8 / 10;
      +    }
      +
      +    footer {
      +      grid-column:1 / -1;
      +    }
      +
      +    @media (max-width:70rem) {
      +      main {
      +       grid-column:1 / -1;
      +      }
      +
      +      aside {
      +        grid-column:1 / -1;
      +      }
      +    }
      +
      +    .fixed-position-banner {
      +      background:var(--banner-background);
      +      border:3px solid var(--banner-border);
      +      height:12rem;
      +      inset-block-end:0;      
      +      margin-block-end:1rem;
      +      padding:1rem;
      +      position:relative;
      +      width:calc(100vw - 1rem);
      +    }
      +
      +    @media (min-width:70rem), (min-height:60rem) {
      +      .fixed-position-banner {
      +        margin-block-end:0;
      +        position:fixed; 
      +      }
      +
      +      .banner-open {
      +        margin-block-end:14rem;
      +      }
      +
      +      .banner-open footer a {
      +        scroll-margin-block-end:15.5rem;
      +      }
      +    }
      +  </style>
      +</head>
      +<body>
      +  <dialog class="fixed-position-banner">
      +    <h2 tabindex="-1">Fixed-Position Banner</h2>
      +    <button aria-label="close fixed-position banner" class="close-banner" type="button">
      +      ...
      +    </button>
      +  </dialog>
      +  <div class="wrapper">
      +    <header>
      +      <p>Header Content</p>
      +    </header>
      +    <main>
      +      <h1>Main Content</h1>
      +    </main>
      +    <aside>
      +      <h2>Sidebar Content</h2>
      +    </aside>
      +    <footer>
      +      <h2>Footer Content</h2>
      +      <p><a href="https://example.com">Here's an example link in the footer</a>.</p>
      +    </footer>
      +  </div>
      +  <script>
      +    document.addEventListener("DOMContentLoaded", function(e){
      +      const cookieBanner = document.querySelector(".fixed-position-banner");
      +      const closeBannerBtn = document.querySelector(".close-banner");
      +      const pageBody = document.querySelector("body");
      +
      +      cookieBanner.show();
      +
      +      if(cookieBanner.hasAttribute("open")){
      +        pageBody.classList.add("banner-open");
      +      }
      +
      +      closeBannerBtn.addEventListener("click", function(e){
      +        cookieBanner.close();
      +        pageBody.classList.remove("banner-open");
      +      }, false);
      +    });
      +  </script>	
      +</body>
      +</html>
      + +
      +
      + +
      +

      Tests

      +
      +

      Procedure

      + +

      For each user interface component that can receive keyboard focus:

      +
        +
      1. Check that the user interface component is not entirely hidden when it receives keyboard focus.
      2. +
      +
      +
      +

      Expected Results

      +
        +
      • Check 1 is true.
      • +
      +
      +
      + +
      +

      Resources

      +
        +
      1. W3C - CSS margins.
      2. +
      3. W3C - CSS the scroll-margin property.
      4. +
      5. MDN - :has() property.
      6. +
      + +
      + + diff --git a/techniques/css/C7.html b/techniques/css/C7.html index a1704f2f60..fa2606a3d8 100644 --- a/techniques/css/C7.html +++ b/techniques/css/C7.html @@ -21,7 +21,7 @@

      When to Use

      This technique is not a method for hiding complete links, only a section of text within a link. The resources below include methods for hiding and showing links aimed at screenreader users.

      This technique to hide link text has been advocated by some screen reader users and corporate Web authors. It has proved effective on some Web sites. Other screen reader users and accessibility experts don't recommend this as a general technique because the results can be overly chatty and constrain the ability of the experienced screen reader user to control the verbosity. The working group believes the technique can be useful for Web pages that do not have repetitive content in the hidden text areas.

      -

      This technique can be used in combination with a style switching technique to present a page that is a conforming alternate version for non-conforming content. Refer to and Understanding Conforming Alternate Versions for more information.

      +

      This technique can be used in combination with a style switching technique to present a page that is a conforming alternate version for non-conforming content. Refer to C29 and Understanding Conforming Alternate Versions for more information.

    diff --git a/techniques/failures/F108.html b/techniques/failures/F108.html index 3cbefd185f..9e7f0195ea 100644 --- a/techniques/failures/F108.html +++ b/techniques/failures/F108.html @@ -1,7 +1,7 @@ - Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement + Failure of Success Criterion 2.5.7 due to not providing a single pointer method for the user to operate a function that does not require a dragging movement @@ -9,7 +9,7 @@ -

    Failure of Success Criterion 2.5.X Dragging due to not providing a single pointer method for the user to operate a function that does not require a dragging movement

    +

    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

    Metadata

    diff --git a/techniques/failures/F109.html b/techniques/failures/F109.html new file mode 100644 index 0000000000..2d19703daf --- /dev/null +++ b/techniques/failures/F109.html @@ -0,0 +1,61 @@ + + + + Failure of Success Criterion 3.3.8 and 3.3.9 due to preventing password or code re-entry in the same format + + + + + + +

    Failure of Success Criterion 3.3.8 and 3.3.9 due to preventing password or code re-entry in the same format

    + +
    +

    ID: F109

    Technology: failures

    Type: Failure

    +
    + +

    When to Use

    +

    All technologies that require authentication.

    +
    + +
    +

    Description

    + +

    Requiring users to authenticate by entering a password or code in a different format from which it was originally created is a failure to meet Success Criteria 3.3.8 and 3.3.9 (unless alternative authentication methods are available). The string to be entered could include a password, verification code, or any string of characters the user has to remember or record to authenticate.

    + +

    If a user is required to enter individual characters across multiple fields in a way that prevents pasting the password in a single action, it prevents use of a password manager or pasting from local copy of the password. This means users cannot avoid transcription, resulting in a cognitive function test. This applies irrespective of whether users are required to enter all characters in the string, or just a subset.

    + +
    + +
    +

    Examples

    +

    These examples would prevent a user from entering a password or code in the same format in which it was originally created:

    +
      +
    • A fieldset that prompts a user to "Enter the 2nd, 6th and last characters of your password", with separate input fields for each character.
    • +
    • A fieldset that prompts a user to enter each digit of a verification code in a separate input (unless the user can paste the entire code in the first input, and the remaining inputs are populated automatically).
    • +
    • A password input fieldset composed of <select> elements that requires a user to select each character of a fixed-length password from individual dropdown fields.
    • +
    +
    + +

    Tests

    +

    Procedure

    +

    For each form field which accepts password or code entry:

    +
      +
    1. Check if the structure of the input field(s) prevents the user from pasting or auto-filling the entire password or code in the format in which it was originally created.
    2. +
    3. Confirm that no other acceptable authentication methods are present that satisfy Success Criteria 3.3.8 or 3.3.9 (such as an authentication method that does not rely on a cognitive function test).
    4. +
    +
    +

    Expected Results

    +
      +
    • If steps #1 and #2 are true, then this failure condition applies and content fails the Success Criterion.
    • +
    +
    +
    + +
    +

    Resources

    +
    + + diff --git a/techniques/failures/F110.html b/techniques/failures/F110.html new file mode 100644 index 0000000000..89897086eb --- /dev/null +++ b/techniques/failures/F110.html @@ -0,0 +1,80 @@ + + + Failure of Success Criterion 2.4.11 due to a sticky footers or headers hiding focused elements + + + + + + +

    Failure of Success Criterion 2.4.11 due to a sticky footers or headers hiding focused elements

    + +
    +

    Metadata

    +

    +

    failures

    +

    failure

    +
    + +
    +

    Applicability

    +

    Content using any technology which supports keyboard interfaces.

    +
    +
    +

    Description

    +

    The objective of this failure is to avoid situations in which people using a keyboard interface (e.g. tabbing through links and controls) cannot see where the indicator is due to other authored content.

    + +

    Any 'sticky' content that moves with the viewport can potentially obscure other elements on the page, including controls the user may tab to.

    +
    + +
    +

    Examples

    + +
    +

    Sticky footer

    +

    A Web page has a sticky footer, an element that stays visible at the bottom of the viewport as the user scrolls the page. The footer is tall enough to completely cover the element in focus as a user tabs down the page.

    + +
    + +
    +

    Sticky header

    +

    A Web page has a sticky header, an element that stays visible at the top of the viewport as the user scrolls the page. The header is tall enough to completely cover the element in focus as a user tabs up the page.

    + +
    + +
    + + +
    +

    Tests

    + +
    +

    Procedure

    +

    Tab through the links and controls on the page. Both progressing down through the page, and back up:

    +
      +
    1. Check whether the focused element is completely obscured by other content
    2. +
    + +
    +
    +

    Expected Results

    + +
      +
    • If #1 is true, then this failure condition applies and the content fails the Success Criterion.
    • +
    +
    +
    + +
    +

    Resources

    +
      +
    +
    + + + + diff --git a/techniques/failures/F72.html b/techniques/failures/F72.html index a317e901a6..80039d2647 100644 --- a/techniques/failures/F72.html +++ b/techniques/failures/F72.html @@ -6,7 +6,7 @@

    ASCII Art chart without a text alternative

    -

    The following ASCII art chart lacks a text alternative and therefore does not meet Success Criterion 1.1.1. Note this failure example does in fact cause this page to fail, but you may skip over the example.

    +

    The following ASCII art chart lacks a text alternative and therefore does not meet Success Criterion 1.1.1. Note this failure example does in fact cause this page to fail, but you may skip over the example.

     <pre>
    diff --git a/techniques/general/G15.html b/techniques/general/G15.html
    index 0775275e45..9715cf2c82 100644
    --- a/techniques/general/G15.html
    +++ b/techniques/general/G15.html
    @@ -6,10 +6,10 @@
              

    There are some simple tests that can be run for particular simple types of flashing. For example:

    • If material flashes 3 times per second or less then the simple test in - + G19 can be used.
    • If material flashes in only one place on screen at a time and is quite small then the simple test in technique - + G176 can be used.

    For all other types, a tool is needed to keep track of all the factors and apply them to the video on a time-continuous basis.

    diff --git a/techniques/general/G153.html b/techniques/general/G153.html index 8066b4a6bf..c644b9d674 100644 --- a/techniques/general/G153.html +++ b/techniques/general/G153.html @@ -5,15 +5,15 @@

    In order to reduce the complexity of the text:

    • Develop a single topic or subtopic per paragraph.
    • -
    • Use the simplest sentence forms consistent with the purpose of the content. For example, the simplest sentence-form for English consists of Subject-Verb-Object, as in John hit the ball or The Web site conforms to WCAG 2.0.
    • +
    • Use the simplest sentence forms consistent with the purpose of the content. For example, the simplest sentence form for English consists of Subject-Verb-Object, as in John hit the ball or The Web site conforms to WCAG 2.1.
    • Use sentences that are no longer than the typical accepted length for secondary education. (Note: In English that is 25 words.)
    • Consider dividing longer sentences into two.
    • -
    • Use sentences that contain no more than two conjunction.
    • +
    • Use sentences that contain no more than two conjunctions.
    • Indicate logical relationships between phrases, sentences, paragraphs, or sections of the text.
    • Avoid professional jargon, slang, and other terms with a specialized meaning that may not be clear to people.
    • Replace long or unfamiliar words with shorter, more common terms.
    • Remove redundant words, that is, words that do not change the meaning of the sentence.
    • -
    • Use single nouns or short noun-phrases.
    • +
    • Use single nouns or short noun phrases.
    • Remove complex words or phrases that could be replaced with more commonly used words without changing the meaning of the sentence.
    • Use bulleted or numbered lists instead of paragraphs that contain long series of words or phrases separated by commas.
    • Make clear pronoun references and references to other points in the document.
    • @@ -37,4 +37,4 @@
    • Check #2 is true.
    -
    \ No newline at end of file +
    diff --git a/techniques/general/G176.html b/techniques/general/G176.html index dab4b1ec15..b592c94ce4 100644 --- a/techniques/general/G176.html +++ b/techniques/general/G176.html @@ -22,7 +22,7 @@ any single flashing event on a screen (there is no other flashing on screen) that is smaller than a contiguous area of 21,824 sq pixels (any shape), would pass the General and Red Flash Thresholds.

    1024 x 768 was chosen because it represents the most common screen size. It also works with higher resolution screens since the tighter pixel density would result in a smaller and safer image size.

    Users with lower resolution displays or that enlarge or view their screens closely would have a higher risk depending on the viewing distance. To address the needs of this group, - + G19 should be used since it is independent of screen resolution or viewing distance.

    Formula 2: Small Safe Area for Known Displays @@ -90,9 +90,6 @@

  • Epilepsy Foundation
  • -
  • - ITC Guidance Note for Licensees on Flashing Images and Regular Patterns in Television -
  • \ No newline at end of file diff --git a/techniques/general/G200.html b/techniques/general/G200.html index 5d31cc2e78..af82573d07 100644 --- a/techniques/general/G200.html +++ b/techniques/general/G200.html @@ -31,9 +31,6 @@

    Date Picker

  • SCR24
  • Resources

    -

    - Beware of opening links in a new window -

    diff --git a/techniques/general/G209.html b/techniques/general/G209.html index 8de80237d0..7364cf4fbd 100644 --- a/techniques/general/G209.html +++ b/techniques/general/G209.html @@ -79,7 +79,7 @@

    Expected Results

    diff --git a/techniques/general/G214.html b/techniques/general/G214.html index bf7d046a54..fb3b34914c 100644 --- a/techniques/general/G214.html +++ b/techniques/general/G214.html @@ -24,7 +24,7 @@

    Description

    Examples

    An e-Reader application

    -

    Users of an e-Reader web application sometimes read when laying down on their side. In this situation, the device is viewed by the user in portrait mode even though the device is in the landscape orientation with regard to gravity. The developer locks the content into the portrait orientation to allow for this reading behavior, but also provides a control to allow users who have devices mounted in a specific orientation to achieve the desired viewing orientation.

    +

    Users of an e-Reader web application sometimes read when lying down on their side. In this situation, the device is viewed by the user in portrait mode even though the device is in the landscape orientation with regard to gravity. The developer locks the content into the portrait orientation to allow for this reading behavior, but also provides a control to allow users who have devices mounted in a specific orientation to achieve the desired viewing orientation.

    @@ -47,7 +47,7 @@

    Expected Results

    diff --git a/techniques/general/G218.html b/techniques/general/G218.html index c60bfd5371..f6697727cd 100644 --- a/techniques/general/G218.html +++ b/techniques/general/G218.html @@ -38,12 +38,14 @@

    Procedure

  • Check that the email is received.
  • Check that selecting the link opens the website.
  • Check that the user account is logged in.
  • +
  • Check that no object recognition test is used as part of the authentication process.
  • Expected Results

    • #2, #3 and #4 are true.
    • +
    • For the AAA Accessible Authentication (Enhanced), #5 is also true.
    diff --git a/techniques/general/G219.html b/techniques/general/G219.html index bdf008ca66..38cebb61ab 100644 --- a/techniques/general/G219.html +++ b/techniques/general/G219.html @@ -1,11 +1,11 @@ - Ensuring that a single pointer alternative is available for dragging movements that operate on content + Ensuring an alternative to dragging movements -

    Ensuring that a single pointer alternative is available for dragging movements that operate on content

    +

    Ensuring that an alternative is available for dragging movements that operate on content

    Metadata

    Provide information below to help editors associate the technique properly. Contents of the meta section are not output by the processor.

    @@ -18,9 +18,9 @@

    Applicability

    Description

    -

    The objective of this Technique is to ensure that people with motor impairments who cannot carry out dragging movements are presented with an alternative single pointer interaction.

    +

    The objective of this Technique is to ensure that people with motor impairments who cannot carry out dragging movements are presented with an alternative single pointer interaction that does not involve dragging.

    Some direct manipulation interfaces allow users to pick up targets and use dragging movements to move them to another position, for example, to change the position of an item in a priority list, or to move a task on a Kanban or planning board.

    -

    Such dragging movements are difficult or impossible to carry out for some users with motor disabilities. The alternative to dragging movements operates the underlying function by one or several single pointer activations. A single tap or click may reveal controls (arrows) to move a target in a stepwise fashion; open a drop-down menu where the drop position can be selected; or allow moving it to an ajacent postion by a swipe gesture.

    +

    Such dragging movements are difficult or impossible to carry out for some users with motor disabilities. The alternative to dragging movements operates the underlying function by one or several single pointer activations that don't require dragging. A single tap or click may reveal controls (arrows) to move a target in a stepwise fashion; open a drop-down menu where the drop position can be selected; or allow moving it to an ajacent postion by a swipe gesture.

    @@ -43,7 +43,7 @@

    Procedure

    For interface elements that support dragging:

    1. Check the interface for the presence of functions triggered by dragging movements.
    2. -
    3. Check that there is a single pointer activation alternative to operate the same function
    4. +
    5. Check that there is a single pointer activation alternative that does not require dragging to operate the same function
    diff --git a/techniques/general/G220.html b/techniques/general/G220.html index f2339dca9d..c899d2eb7a 100644 --- a/techniques/general/G220.html +++ b/techniques/general/G220.html @@ -55,6 +55,13 @@

    Procedure

  • Without changing the viewport size, check that the identified help is present on all other web pages within that set of web pages.
  • +
    +

    Expected Results

    +
      +
    • If #1 is true, #2 and #3 are true.
    • +
    • Otherwise, #1 is false.
    • +
    +

    Expected Results

      -
    • Checks #2, #4, and #5 are true.
    • +
    • All checks are true.

    Examples

    diff --git a/techniques/html/H69.html b/techniques/html/H69.html index fc44f6d4eb..3dd1770291 100644 --- a/techniques/html/H69.html +++ b/techniques/html/H69.html @@ -117,6 +117,7 @@

    Expected Results

    Related Techniques

    @@ -138,4 +139,5 @@

    Resources

    - \ No newline at end of file + + diff --git a/techniques/pdf/PDF2.html b/techniques/pdf/PDF2.html index ac2d0c13f7..7190bce770 100644 --- a/techniques/pdf/PDF2.html +++ b/techniques/pdf/PDF2.html @@ -49,7 +49,7 @@

    Converting a table of contents created with Microsoft as bookmarks in the Navigation pane). The table of contents also should be marked up with a heading so it is bookmarked as well.

    If this markup has not been done in the authoring tool, Adobe Acrobat - Pro can be used to provide the tags. See if + Pro can be used to provide the tags. See PDF9 if you need to modify converted headings or add new ones.

    This example is shown in operation in the working example of creating bookmarks with Word 2007.

    diff --git a/techniques/pdf/PDF22.html b/techniques/pdf/PDF22.html index 32ad89b95f..880cfdcf54 100644 --- a/techniques/pdf/PDF22.html +++ b/techniques/pdf/PDF22.html @@ -33,7 +33,7 @@

    Labels for required formats in form controls

    It is also important that users are aware that an error may occur. You can incorporate this information in labels; for example, "Date - (MM/DD/YYYY)." See .

    + (MM/DD/YYYY)." See PDF10.

    Examples

    diff --git a/techniques/pdf/PDF23.html b/techniques/pdf/PDF23.html index 1ac10cde1a..82a587bc02 100644 --- a/techniques/pdf/PDF23.html +++ b/techniques/pdf/PDF23.html @@ -122,7 +122,7 @@

    Editing form controls in PDF documents using Adobe

    The tooltip is not keyboard accessible but will be screen-reader - accessible: see .

    + accessible: see PDF12.

    diff --git a/techniques/pdf/PDF5.html b/techniques/pdf/PDF5.html index cbf93742e9..269555d14e 100644 --- a/techniques/pdf/PDF5.html +++ b/techniques/pdf/PDF5.html @@ -35,7 +35,7 @@

    Labels for required form controls

    You can incorporate this information in labels; for example, "Date (required)" or the use of a red asterisk to indicate required fields. (Make sure that a legend appears on each form with required - fields, e.g., "* = required field".) See .

    + fields, e.g., "* = required field".) See PDF10.

    Examples

    diff --git a/techniques/pdf/PDF7.html b/techniques/pdf/PDF7.html index cdd2731ceb..fbee569673 100644 --- a/techniques/pdf/PDF7.html +++ b/techniques/pdf/PDF7.html @@ -64,7 +64,7 @@

    Generating actual text rather than images of text using Order tool and the Tags panel to tag the content properly for the intended final document. For this example, the image of the spiral book binding was tagged in the conversion. The TouchUp Reading Order tool was used - to hide the image as a background (decorative) image (see ). The recipe + to hide the image as a background (decorative) image (see PDF4). The recipe titles were tagged as first level headers.

    diff --git a/understanding/20/audio-control.html b/understanding/20/audio-control.html index e6df75988f..7c3b96cce5 100644 --- a/understanding/20/audio-control.html +++ b/understanding/20/audio-control.html @@ -17,8 +17,10 @@

    Intent of Audio Control

    if there is other audio playing at the same time. This difficulty is exacerbated when the screen reader's speech output is software based (as most are today) and is controlled via the same volume control as the sound. Therefore, it is important that the user - be able to turn off the background sound. Note: Having control of the volume includes - being able to reduce its volume to zero. + be able to turn off the background sound. +

    +

    Having control of the volume includes + being able to reduce its volume to zero. Muting the system volume is not "pausing or stopping" the autoplay audio. Both the "pause or stop" and control of audio volume need to be independent of the overall system volume.

    diff --git a/understanding/20/captions-prerecorded.html b/understanding/20/captions-prerecorded.html index 027f1a8fce..a465df1b35 100644 --- a/understanding/20/captions-prerecorded.html +++ b/understanding/20/captions-prerecorded.html @@ -131,7 +131,7 @@

    Guides to Captioning

    • - BBC: Subtitle Guidelines + BBC: Subtitle Guidelines
    • diff --git a/understanding/20/contrast-enhanced.html b/understanding/20/contrast-enhanced.html index 8a2ad8a374..d9af17df5f 100644 --- a/understanding/20/contrast-enhanced.html +++ b/understanding/20/contrast-enhanced.html @@ -8,11 +8,9 @@

      Understanding Contrast (Enhanced)

      -

      Intent of Contrast (Enhanced)

      -

      The intent of this Success Criterion is to provide enough contrast between text and its background so that it can be read by people with moderately low vision (who do not use contrast-enhancing assistive technology). For people without color deficiencies, @@ -27,7 +25,6 @@

      Intent of Contrast (Enhanced)

      words are used to create a background and the words could be rearranged or substituted without changing meaning, then it would be decorative and would not need to meet this criterion. -

      Text that is larger and has wider character strokes is easier to read at lower contrast. @@ -37,53 +34,56 @@

      Intent of Contrast (Enhanced)

      enough to require a lower contrast ratio. (See The American Printing House for the Blind Guidelines for Large Printing and The Library of Congress Guidelines for Large Print under - Resources). "18 point" and "bold" can both have different meanings in different fonts but, - except for very thin or unusual fonts, they should be sufficient. Since there are - so many different fonts, the general measures are used and a note regarding fancy - or thin fonts is included. + Resources). "18 point" and "bold" can both have different meanings in + different fonts but, except for very thin or unusual fonts, they should be sufficient. Since there + are so many different fonts, the general measures are used and a note regarding thin or unusual + fonts is included in the definition for large-scale text.

      - -

      The point size should be obtained from the user agent, or calculated based on font - metrics as the user agent does when evaluating this success criterion. Point sizes - are based on the CSS pt size as defined in - CSS3 Values. The ratio between sizes in points and CSS pixels is 1pt = 1.333px, therefore 14pt - and 18pt are equivalent to approximately 18.5px and 24px. +

      When evaluating this Success Criterion, the font size in points should be obtained + from the user agent or calculated on font metrics in the way that user agents do. + Point sizes are based on the CSS pt size as defined in + CSS3 Values. The ratio between + sizes in points and CSS pixels is 1pt = 1.333px, therefore 14pt + and 18pt are equivalent to approximately 18.5px and 24px.

      - -

      When fonts have anti-aliasing applied to make them look smoother, they can lose darkness - or lightness. Thus, the actual contrast can be reduced. Thicker stem widths will - reduce this effect (thin fonts could have the full stem lightened rather than just - the ends). Using larger fonts and testing for legibility in user agents with font - smoothing turned on is recommended. - -

      -

      Because different image editing applications default to different pixel densities - (ex. 72 PPI or 96 PPI), specifying point sizes for fonts from within an image editing - application can be unreliable when it comes to presenting text at a specific size. + (e.g., 72ppi or 96ppi), specifying point sizes for fonts from within an + image editing application can be unreliable when it comes to presenting text at a specific size. When creating images of large-scale text, authors should ensure that the text in the resulting image is roughly equivalent to 1.2 and 1.5 em or to 120% or 150% of the - default size for body text as rendered by the browser. + default size for body text. For example, for a 72ppi image, an author would need + to use approximately 19pt and 24pt font sizes in order to successfully present images + of large-scale text to a user.

      The 7:1 and 4.5:1 contrast ratios referenced in this Success Criterion are intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criterion - ratio, the computed values should not be rounded (e.g. 4.499:1 would not meet the 4.5:1 threshold).

      - + ratio, the computed values should not be rounded (e.g., 4.499:1 would not meet the 4.5:1 threshold).

      +
      + +
      +

      Because authors do not have control over user settings for font smoothing/anti-aliasing, when evaluating this + Success Criterion, refer to the foreground and background colors obtained from the user agent, or the underlying + markup and stylesheets, rather than the text as presented on screen.

      +

      Due to anti-aliasing, particularly thin or unusual fonts may be rendered by user agents with a much fainter + color than the actual text color defined in the underlying CSS. This can lead to situations where text has + a contrast ratio that nominally passes the Success Criterion, but has a much lower contrast in practice. + In these cases, best practice would be for authors to choose a font with stronger/thicker lines, + or to aim for a foreground/background color combination that exceeds the normative requirements + of this Success Criterion. +

      -

      The previously-mentioned contrast requirements for text also apply to - images of text (text that has been rendered into pixels and then stored in an image - format) as stated in Success Criterion 1.4.5 - - +

      The contrast requirements for text also apply to images of text + (text that has been rendered into pixels and then stored in an image format) - see + Success Criterion 1.4.5: Images of Text.

      This requirement applies to situations in which images of text were intended to be understood as text. Incidental text, such as in photographs that happen to include a street sign, are not included. Nor is text that for some reason is designed to be - invisible to all users. Stylized text, such as in corporate logos, should be treated + invisible to all viewers. Stylized text, such as in corporate logos, should be treated in terms of its function on the page, which may or may not warrant including the content in the text alternative. Corporate visual guidelines beyond logo and logotype are not included in the exception. @@ -96,15 +96,31 @@

      Intent of Contrast (Enhanced)

      in order to get a particular look.

      -

      Although this Success Criterion only applies to text, similar issues occur for content presented in charts, graphs, diagrams, and other non-text-based information which is covered by - Success Criterion 1.4.11 Non-Text Contrast. +

      + +

      Images of text do not scale as well as text because they tend to pixelate. It is also + harder to change foreground and background contrast and color combinations for images + of text, which is necessary for some users. See 1.4.5: Images of Text. + +

      + +
      + +

      The minimum contrast Success Criterion (1.4.3) applies to text in the page, including + placeholder text and text that is shown when a pointer is hovering over an object + or when an object has keyboard focus. If any of these are used in a page, the text + needs to provide sufficient contrast. +

      + +

      Although this Success Criterion only applies to text, similar issues occur for content presented + in charts, graphs, diagrams, and other non-text-based information, which is covered by + Success Criterion 1.4.11 Non-Text Contrast.

      Rationale for the Ratios Chosen

      -

      A contrast ratio of 3:1 is the minimum level recommended by [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] for standard text and vision. The 4.5:1 ratio is used in Success Criterion 1.4.3 to account for the loss in contrast that results from moderately low visual acuity, congenital or acquired color deficiencies, or the loss of contrast sensitivity that @@ -136,11 +152,22 @@

      Rationale for the Ratios Chosen

      [[ARDITI]].

      +
      + +

      Some people with cognitive disabilities require color combinations or hues that have + low contrast, and therefore we allow and encourage authors to provide mechanisms to + adjust the foreground and background colors of the content. Some of the combinations + that could be chosen may have contrast levels that will be lower than those + specified here. This is not a violation of this Success Criterion, provided + there is a mechanism that will return to the required values set out here. +

      + +
      +

      The contrast ratio of 4.5:1 was chosen for level AA because it compensated for the loss in contrast sensitivity usually experienced by users with vision loss equivalent to approximately 20/40 vision. (20/40 calculates to approximately 4.5:1.) 20/40 is commonly reported as typical visual acuity of elders at roughly age 80. [[GITTINGS-FOZARD]] -

      The contrast ratio of 7:1 was chosen for level AAA because it compensated for the @@ -154,9 +181,8 @@

      Rationale for the Ratios Chosen

      - -

      Calculations in [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] are for body text. A relaxed contrast ratio is provided for text that is much larger.

      - +

      Calculations in [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] are for body text. A relaxed contrast + ratio is provided for text that is much larger.

      @@ -167,10 +193,10 @@

      Notes on formula

      Conversion from nonlinear to linear RGB values is based on IEC/4WD 61966-2-1 [[IEC-4WD]].

      -

      The formula (L1/L2) for contrast is based on [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] standards.

      +

      The formula (L1/L2) for contrast is based on [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] standards.

      The ANSI/HFS 100-1988 standard calls for the contribution from ambient light to be - included in the calculation of L1 and L2. The .05 value used is based on Typical Viewing + included in the calculation of L1 and L2. The .05 value used is based on Typical Viewing Flare from [[IEC-4WD]].

      @@ -181,22 +207,27 @@

      Notes on formula

      -

      - Refer to - related resources for a list of tools that utilize the contrast ratio to analyze the contrast of Web - content. - + Refer to + related resources for a list of tools that utilize the contrast ratio + to analyze the contrast of Web content.

      -

      See also 2.4.7: Focus Visible for techniques for indicating keyboard focus.

      -
      +
      +

      Inactive User Interface Components

      + +

      User Interface Components that are not available for user interaction (e.g., a disabled control in HTML) are not required to meet contrast requirements. An inactive user interface component is visible but not currently operable. An example would be a submit button at the bottom of a form that is visible but cannot be activated until all the required fields in the form are completed.

      +
      + Grey button with non-contrasting grey text. +
      An inactive button using default browser styles
      +
      +

    @@ -230,57 +261,39 @@

    Resources for Contrast (Enhanced)

    @@ -302,27 +315,21 @@

    Situation A: text is less than 18 point if not bold and less than 14 point i
    1. - Ensuring that contrast of at least 10:1 exists between text and background behind the text -
    2. - Not specifying background color, not specifying text color, and not using technology features that change those defaults -
    3. - Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast -
    @@ -336,27 +343,21 @@

    Situation B: text is as least 18 point if not bold and at least 14 point if
    1. - Ensuring that a contrast ratio of at least 4.5:1 exists between text and background behind the text -
    2. - Not specifying background color, not specifying text color, and not using technology features that change those defaults -
    3. - Providing a control with a sufficient contrast ratio that allows users to switch to a presentation that uses sufficient contrast -
    @@ -372,9 +373,7 @@

    Additional Techniques (Advisory) for Contrast (Enhanced)

    @@ -388,19 +387,15 @@

    Failures for Contrast (Enhanced)

    diff --git a/understanding/20/contrast-minimum.html b/understanding/20/contrast-minimum.html index 5da419df08..ec7a98ded7 100644 --- a/understanding/20/contrast-minimum.html +++ b/understanding/20/contrast-minimum.html @@ -8,11 +8,9 @@

    Understanding Contrast (Minimum)

    -

    Intent of Contrast (Minimum)

    -

    The intent of this Success Criterion is to provide enough contrast between text and its background so that it can be read by people with moderately low vision (who do not use contrast-enhancing assistive technology). For people without color deficiencies, @@ -27,7 +25,6 @@

    Intent of Contrast (Minimum)

    words are used to create a background and the words could be rearranged or substituted without changing meaning, then it would be decorative and would not need to meet this criterion. -

    Text that is larger and has wider character strokes is easier to read at lower contrast. @@ -37,40 +34,50 @@

    Intent of Contrast (Minimum)

    enough to require a lower contrast ratio. (See The American Printing House for the Blind Guidelines for Large Printing and The Library of Congress Guidelines for Large Print under - Resources). "18 point" and "bold" can both have different meanings in different fonts but, - except for very thin or unusual fonts, they should be sufficient. Since there are - so many different fonts, the general measures are used and a note regarding fancy - or thin fonts is included. + Resources). "18 point" and "bold" can both have different meanings in + different fonts but, except for very thin or unusual fonts, they should be sufficient. Since there + are so many different fonts, the general measures are used and a note regarding thin or unusual + fonts is included in the definition for large-scale text.

    - -

    When evaluating this success criterion, the font size in points should be obtained +

    When evaluating this Success Criterion, the font size in points should be obtained from the user agent or calculated on font metrics in the way that user agents do. - Point sizes are based on the CSS pt size as defined in - CSS3 Values. The ratio between sizes in points and CSS pixels is 1pt = 1.333px, therefore 14pt - and 18pt are equivalent to approximately 18.5px and 24px. + Point sizes are based on the CSS pt size as defined in + CSS3 Values. The ratio between + sizes in points and CSS pixels is 1pt = 1.333px, therefore 14pt + and 18pt are equivalent to approximately 18.5px and 24px.

    -

    Because different image editing applications default to different pixel densities - (e.g. 72 PPI or 96 PPI), specifying point sizes for fonts from within an image editing - application can be unreliable when it comes to presenting text at a specific size. + (e.g., 72ppi or 96ppi), specifying point sizes for fonts from within an + image editing application can be unreliable when it comes to presenting text at a specific size. When creating images of large-scale text, authors should ensure that the text in the resulting image is roughly equivalent to 1.2 and 1.5 em or to 120% or 150% of the - default size for body text. For example, for a 72 PPI image, an author would need - to use approximately 19 pt and 24 pt font sizes in order to successfully present images + default size for body text. For example, for a 72ppi image, an author would need + to use approximately 19pt and 24pt font sizes in order to successfully present images of large-scale text to a user.

    The 3:1 and 4.5:1 contrast ratios referenced in this Success Criterion are intended to be treated as threshold values. When comparing the computed contrast ratio to the Success Criterion - ratio, the computed values should not be rounded (e.g. 4.499:1 would not meet the 4.5:1 threshold).

    - + ratio, the computed values should not be rounded (e.g., 4.499:1 would not meet the 4.5:1 threshold).

    -

    The previously-mentioned contrast requirements for text also apply to images of text - (text that has been rendered into pixels and then stored in an image format) as stated - in Success Criterion 1.4.3. - +

    +

    Because authors do not have control over user settings for font smoothing/anti-aliasing, when evaluating this + Success Criterion, refer to the foreground and background colors obtained from the user agent, or the underlying + markup and stylesheets, rather than the text as presented on screen.

    +

    Due to anti-aliasing, particularly thin or unusual fonts may be rendered by user agents with a much fainter + color than the actual text color defined in the underlying CSS. This can lead to situations where text has + a contrast ratio that nominally passes the Success Criterion, but has a much lower contrast in practice. + In these cases, best practice would be for authors to choose a font with stronger/thicker lines, + or to aim for a foreground/background color combination that exceeds the normative requirements + of this Success Criterion. +

    +
    + +

    The contrast requirements for text also apply to images of text + (text that has been rendered into pixels and then stored in an image format) - see + Success Criterion 1.4.5: Images of Text.

    This requirement applies to situations in which images of text were intended to be @@ -100,14 +107,15 @@

    Intent of Contrast (Minimum)

    -

    The minimum contrast success criterion (1.4.3) applies to text in the page, including +

    The minimum contrast Success Criterion (1.4.3) applies to text in the page, including placeholder text and text that is shown when a pointer is hovering over an object or when an object has keyboard focus. If any of these are used in a page, the text needs to provide sufficient contrast.

    -

    Although this Success Criterion only applies to text, similar issues occur for content presented in charts, graphs, diagrams, and other non-text-based information which is covered by - Success Criterion 1.4.11 Non-Text Contrast. +

    Although this Success Criterion only applies to text, similar issues occur for content presented + in charts, graphs, diagrams, and other non-text-based information, which is covered by + Success Criterion 1.4.11 Non-Text Contrast.

    See also @@ -118,38 +126,21 @@

    Intent of Contrast (Minimum)

    Rationale for the Ratios Chosen

    -

    Text that is larger and has wider character strokes is easier to read at lower contrast. - The contrast requirement for larger text is therefore lower. This allows authors to - use a wider range of color choices for large text, which is helpful for design of - pages, particularly titles. 18 point text or 14 point bold text is judged to be large - enough to require a lower contrast ratio. (See The American Printing House for the - Blind Guidelines for Large Printing and The Library of Congress Guidelines for Large - Print under - Resources). "18 point" and "bold" can both have different meanings in different fonts but, - except for very thin or unusual fonts, they should be sufficient. Since there are - so many different fonts, the general measures are used and a note regarding fancy - or thin fonts is included. +

    A contrast ratio of 3:1 is the minimum level recommended by [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] + for standard text and vision. The 4.5:1 ratio is used in this provision to account + for the loss in contrast that results from moderately low visual acuity, congenital + or acquired color deficiencies, or the loss of contrast sensitivity that typically + accompanies aging.

    -
    - -

    When evaluating this success criterion, the font size in points should be obtained - from the user agent or calculated on font metrics in the way that user agents do. - Point sizes are based on the CSS pt size as defined in - CSS3 Values. The ratio between sizes in points and CSS pixels is 1pt = 1.333px, therefore 14pt - and 18pt are equivalent to approximately 18.5px and 24px. -

    - -

    Because different image editing applications default to different pixel densities - (e.g. 72 PPI or 96 PPI), specifying point sizes for fonts from within an image editing - application can be unreliable when it comes to presenting text at a specific size. - When creating images of large-scale text, authors should ensure that the text in the - resulting image is roughly equivalent to 1.2 and 1.5 em or to 120% or 150% of the - default size for body text as rendered by the browser. -

    - -
    - +

    The rationale is based on a) adoption of the 3:1 contrast ratio for minimum acceptable + contrast for normal observers, in the ANSI standard, and b) the empirical finding + that in the population, visual acuity of 20/40 is associated with a contrast sensitivity + loss of roughly 1.5 [[ARDITI-FAYE]]. A user with 20/40 would thus require a contrast ratio of + 3 * 1.5 = 4.5 to 1. Following analogous empirical findings and the same logic, + the user with 20/80 visual acuity would require contrast of about 7:1. +

    +

    Hues are perceived differently by users with color vision deficiencies (both congenital and acquired) resulting in different colors and relative luminance contrasts than for normally sighted users. Because of this, effective contrast and readability are @@ -172,34 +163,17 @@

    Rationale for the Ratios Chosen

    Some people with cognitive disabilities require color combinations or hues that have low contrast, and therefore we allow and encourage authors to provide mechanisms to adjust the foreground and background colors of the content. Some of the combinations - that could be chosen may have contrast levels that will be lower than those found - in the Success Criteria. This is not a violation of this Success Criterion provided - there is a mechanism that will return to the default values set out in the Success - Criteria. - + that could be chosen may have contrast levels that will be lower than those those + specified here. This is not a violation of this Success Criterion, provided + there is a mechanism that will return to the required values set out here.

    -

    A contrast ratio of 3:1 is the minimum level recommended by [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] for standard text and vision. The 4.5:1 ratio is used in this provision to account - for the loss in contrast that results from moderately low visual acuity, congenital - or acquired color deficiencies, or the loss of contrast sensitivity that typically - accompanies aging. -

    - -

    The rationale is based on a) adoption of the 3:1 contrast ratio for minimum acceptable - contrast for normal observers, in the ANSI standard, and b) the empirical finding - that in the population, visual acuity of 20/40 is associated with a contrast sensitivity - loss of roughly 1.5 [[ARDITI-FAYE]]. A user with 20/40 would thus require a contrast ratio of 3 * 1.5 = 4.5 to 1. Following - analogous empirical findings and the same logic, the user with 20/80 visual acuity - would require contrast of about 7:1. -

    -

    The contrast ratio of 4.5:1 was chosen for level AA because it compensated for the loss in contrast sensitivity usually experienced by users with vision loss equivalent to approximately 20/40 vision. (20/40 calculates to approximately 4.5:1.) 20/40 is commonly reported as typical visual acuity of elders at roughly age 80. [[GITTINGS-FOZARD]] -

    The contrast ratio of 7:1 was chosen for level AAA because it compensated for the @@ -213,9 +187,8 @@

    Rationale for the Ratios Chosen

    - -

    Calculations in [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] are for body text. A relaxed contrast ratio is provided for text that is much larger.

    - +

    Calculations in [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] are for body text. A relaxed contrast + ratio is provided for text that is much larger.

    @@ -226,10 +199,10 @@

    Notes on formula

    Conversion from nonlinear to linear RGB values is based on IEC/4WD 61966-2-1 [[IEC-4WD]].

    -

    The formula (L1/L2) for contrast is based on [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] standards.

    +

    The formula (L1/L2) for contrast is based on [[ISO-9241-3]] and [[ANSI-HFES-100-1988]] standards.

    The ANSI/HFS 100-1988 standard calls for the contribution from ambient light to be - included in the calculation of L1 and L2. The .05 value used is based on Typical Viewing + included in the calculation of L1 and L2. The .05 value used is based on Typical Viewing Flare from [[IEC-4WD]].

    @@ -240,34 +213,32 @@

    Notes on formula

    -

    Refer to - related resources for a list of tools that utilize the contrast ratio to analyze the contrast of Web - content. - + related resources for a list of tools that utilize the contrast ratio + to analyze the contrast of Web content.

    -

    See also 2.4.7: Focus Visible for techniques for indicating keyboard focus.

    - -

    It is sometimes helpful for authors to not specify colors for certain sections of - a page in order to help users who need to view content with specific color combinations - to view the content in their preferred color scheme. Refer to - 1.4.5: Images of Text for more information. -

    -
    +
    +

    Inactive User Interface Components

    + +

    User Interface Components that are not available for user interaction (e.g., a disabled control in HTML) are not required to meet contrast requirements. An inactive user interface component is visible but not currently operable. An example would be a submit button at the bottom of a form that is visible but cannot be activated until all the required fields in the form are completed.

    +
    + Grey button with non-contrasting grey text. +
    An inactive button using default browser styles
    +
    +

    Benefits of Contrast (Minimum)

    -
    @@ -95,8 +93,6 @@

    Examples of Error Suggestion

    May, June, July, August, September, October, November, December." -
  • A description of the set of values, e.g., "Please provide the name of the month."
  • -
  • The conversion of the input data interpreted as a different month format, e.g., "Do you mean 'December'?"
  • @@ -132,40 +128,10 @@

    Techniques for Error Suggestion

    Sufficient Techniques for Error Suggestion

    - - -
    - -

    Situation A: If a mandatory field contains no information:

    - -
      - -
    1. - - Providing a text description that identifies the field as mandatory - -
    2. - -
    3. - - ARIA2: Identifying required fields with the "required" property - -
    4. - -
    5. - - - -
    6. - -
    - - -
    - +
    -

    Situation B: If information for a field is required to be in a specific data format:

    +

    Situation A: If information for a field is required to be in a specific data format:

      @@ -176,31 +142,19 @@

      Situation B: If information for a field is required to be in a specific data
    1. - + Providing a text description when user input falls outside the required format or values - +
    2. - + Providing suggested correction text - +
    3. - -
    4. - - SCR18: Providing client-side validation and alert - -
    5. - -
    6. - - Providing client-side validation and adding error text via the DOM - -
    7. - +
    8. @@ -213,7 +167,7 @@

      Situation B: If information for a field is required to be in a specific data
      -

      Situation C: Information provided by the user is required to be one of a limited set +

      Situation B: Information provided by the user is required to be one of a limited set of values:

      @@ -226,29 +180,17 @@

      Situation C: Information provided by the user is required to be one of a lim

    9. - + Providing a text description when the user provides information that is not in list of allowed values - +
    10. - + Providing suggested correction text - -
    11. - -
    12. - - SCR18: Providing client-side validation and alert - -
    13. - -
    14. - - Providing client-side validation and adding error text via the DOM - +
    15. @@ -270,15 +212,15 @@

      Additional Techniques (Advisory) for Error Suggestion

      @@ -290,11 +232,17 @@

      Client-Side Scripting Techniques (Advisory)

    diff --git a/understanding/20/focus-order.html b/understanding/20/focus-order.html index 103b02ea7f..14216280bc 100644 --- a/understanding/20/focus-order.html +++ b/understanding/20/focus-order.html @@ -127,7 +127,7 @@

    Examples of Focus Order

  • A Web page implements modal dialogs via scripting. When the trigger button is activated, - a dialog opens and focus is set to the first interactive element in the dialog. As + a dialog opens and focus is set within the dialog. As long as the dialog is open, focus is limited to the elements of the dialog. When the dialog is dismissed, focus returns to the button or the element following the button.
  • diff --git a/understanding/20/focus-visible.html b/understanding/20/focus-visible.html index 5195e6e91f..9ed093e650 100644 --- a/understanding/20/focus-visible.html +++ b/understanding/20/focus-visible.html @@ -19,7 +19,7 @@

    Intent of Focus Visible

    “Mode of operation” accounts for user agents which may not always show a focus indicator, or only show the focus indicator when the keyboard is used. User agents may optimise when the focus indicator is shown, such as only showing it when a keyboard is used. Authors are responsible for providing at least one mode of operation where the focus is visible. In most cases there is only one mode of operation so this success criterion applies. The focus indicator must not be time limited, when the keyboard focus is shown it must remain.

    -

    Note that a keyboard focus indicator can take different forms. This criterion does not specify what the form is, but Focus Appearance (Minimum) does define how visible the indicator should be. Passing Focus Appearance (Minimum) would pass this success criterion.

    +

    Note that a keyboard focus indicator can take different forms. This criterion does not specify what the form is, but Focus Appearance does define how visible the indicator should be. Passing Focus Appearance (Minimum) would pass this success criterion.

    diff --git a/understanding/20/info-and-relationships.html b/understanding/20/info-and-relationships.html index a3984757ed..1d6b84bcaf 100644 --- a/understanding/20/info-and-relationships.html +++ b/understanding/20/info-and-relationships.html @@ -251,53 +251,59 @@

    Situation A: The technology provides semantic structure to make information
  • - + + +
  • + +
  • + +
  • - +
  • - +
  • - +
  • - +
  • - +
  • - Using semantic elements to mark up structure + Using semantic elements to mark up structure AND - H49 Using semantic markup to mark emphasized or special text + H49 Using semantic markup to mark emphasized or special text
  • - Using text to convey information that is conveyed by variations in presentation of + Using text to convey information that is conveyed by variations in presentation of text @@ -305,12 +311,12 @@

    Situation A: The technology provides semantic structure to make information
  • - Separating information and structure from presentation to enable different presentations + Separating information and structure from presentation to enable different presentations
  • - Semantically identifying a font icon with role="img" + Semantically identifying a font icon with role="img"
  • @@ -324,43 +330,43 @@

    Situation A: The technology provides semantic structure to make information
  • - Using semantic markup whenever color cues are used + Using semantic markup whenever color cues are used
  • - Using table markup to present tabular information + Using table markup to present tabular information
  • - +
  • - +
  • - Using caption elements to associate data table captions with data tables + Using caption elements to associate data table captions with data tables
  • - Using the scope attribute to associate header cells and data cells in data tables + Using the scope attribute to associate header cells and data cells in data tables
  • - Using id and headers attributes to associate data cells with header cells in data + Using id and headers attributes to associate data cells with header cells in data tables @@ -368,13 +374,13 @@

    Situation A: The technology provides semantic structure to make information
  • - Using label elements to associate text labels with form controls + Using label elements to associate text labels with form controls
  • - Using the title attribute to identify form controls when the label element cannot + Using the title attribute to identify form controls when the label element cannot be used @@ -382,19 +388,19 @@

    Situation A: The technology provides semantic structure to make information
  • - +
  • - +
  • - Providing a label for groups of radio buttons or checkboxes using the fieldset and + Providing a label for groups of radio buttons or checkboxes using the fieldset and legend elements @@ -402,55 +408,55 @@

    Situation A: The technology provides semantic structure to make information
  • - Using OPTGROUP to group OPTION elements inside a SELECT + Using OPTGROUP to group OPTION elements inside a SELECT
  • - Using ol, ul and dl for lists + Using ol, ul and dl for lists
  • - Using h1-h6 to identify headings + Using h1-h6 to identify headings
  • - +
  • - Using functions of the Document Object Model (DOM) to add content to a page + Using functions of the Document Object Model (DOM) to add content to a page
  • - +
  • - +
  • - +
  • - +
  • @@ -472,7 +478,7 @@

    Situation B: The technology in use does NOT provide the semantic structure
  • - Using text to convey information that is conveyed by variations in presentation of + Using text to convey information that is conveyed by variations in presentation of text @@ -488,19 +494,19 @@

    Situation B: The technology in use does NOT provide the semantic structure
  • - Using standard text formatting conventions for paragraphs + Using standard text formatting conventions for paragraphs
  • - Using standard text formatting conventions for lists + Using standard text formatting conventions for lists
  • - Using standard text formatting conventions for headings + Using standard text formatting conventions for headings
  • @@ -522,19 +528,19 @@

    Additional Techniques (Advisory) for Info and Relationships

  • - Using CSS to control visual presentation of text + Using CSS to control visual presentation of text
  • - Positioning labels to maximize predictability of relationships + Positioning labels to maximize predictability of relationships
  • - ARIA1: Using Accessible Rich Internet Application describedby property to provide + ARIA1: Using Accessible Rich Internet Application describedby property to provide a descriptive, programmatically determined label @@ -542,7 +548,7 @@

    Additional Techniques (Advisory) for Info and Relationships

  • - Using Dynamic Web Content Accessibility to programmatically identify form fields as + Using Dynamic Web Content Accessibility to programmatically identify form fields as required @@ -550,7 +556,7 @@

    Additional Techniques (Advisory) for Info and Relationships

  • - G141 + G141
  • @@ -566,7 +572,7 @@

    Failures for Info and Relationships

  • - Failure due to using CSS to create variations in presentation of text that conveys + Failure due to using CSS to create variations in presentation of text that conveys information without also using the appropriate markup or text @@ -574,7 +580,7 @@

    Failures for Info and Relationships

  • - Failure due to using white space characters to create multiple columns in plain text + Failure due to using white space characters to create multiple columns in plain text content @@ -582,19 +588,19 @@

    Failures for Info and Relationships

  • - Failure due to using white space characters to format tables in plain text content + Failure due to using white space characters to format tables in plain text content
  • - Failure due to using scripting events to emulate links + Failure due to using scripting events to emulate links
  • - Failure due to using structural markup in a way that does not represent relationships + Failure due to using structural markup in a way that does not represent relationships in the content @@ -602,7 +608,7 @@

    Failures for Info and Relationships

  • - Failure due to using th elements, caption elements, or non-empty summary attributes + Failure due to using th elements, caption elements, or non-empty summary attributes in layout tables @@ -610,31 +616,31 @@

    Failures for Info and Relationships

  • - Failure due to using the pre element to markup tabular information + Failure due to using the pre element to markup tabular information
  • - +
  • - +
  • - +
  • - +
  • diff --git a/understanding/20/language-of-parts.html b/understanding/20/language-of-parts.html index 323c179299..437efff936 100644 --- a/understanding/20/language-of-parts.html +++ b/understanding/20/language-of-parts.html @@ -13,7 +13,7 @@

    Intent of Language of Parts

    The intent of this Success Criterion is to ensure that user agents can correctly present - content written in multiple languages. This makes it possible for user agents and + phrases, passages, and in some cases words written in multiple languages. This makes it possible for user agents and assistive technologies to present content according to the presentation and pronunciation rules for that language. This applies to graphical browsers as well as screen readers, braille displays, and other voice browsers. @@ -136,6 +136,13 @@

    Examples of Language of Parts

    An HTML Web page includes links to versions of the page in other languages (e.g., Deutsch, Français, Nederlands, Catalan, etc.). The text of each link is the name of the language, in that language. The language of each link is indicated via a lang attribute.

    +
    <ul>
    +  <li><a href="..." lang="de">Deutsch</a></li>
    +  <li><a href="..." lang="it">Italiano</a></li>
    +  <li><a href="..." lang="fr">Français</a></li>
    +  ...
    +  <li><a href="..." lang="zh-hant">繁體中文</a></li>
    +</ul>
  • diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index 979c161c6d..64d32e53df 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -15,7 +15,7 @@

    Intent of Parsing

    This criterion has been removed from WCAG 2.2.

    -

    The intent of this Success Criterion was to ensure that user-agents, including assistive technologies, could accurately interpret and parse content. Since WCAG 2.0 was published, the specifications (such as HTML) and browsers have improved their handling of parsing errors. It is also that case that assistive technology used to do their own parsing of markup, but now rely on the browser. For that reason this success criterion has been removed. Many issues that would have failed this criterion will fail Info and Relationships or Name, Role, Value. Other issues are excepted by the "except where the specification allow these features" part of the criterion.

    +

    The intent of this Success Criterion was to ensure that user-agents, including assistive technologies, can accurately interpret and parse content. Since WCAG 2.0 was published, the specifications (such as HTML) and browsers have improved their handling of parsing errors. It is also the case that assistive technology used to do their own parsing of markup, but now rely on the browser. For that reason this success criterion has been removed. Many issues that would have failed this criterion will fail Info and Relationships or Name, Role, Value. Other issues are excepted by the "except where the specification allow these features" part of the criterion.

    The following content is left for historical purposes to show the original intent.

    diff --git a/understanding/21/animation-from-interactions.html b/understanding/21/animation-from-interactions.html index 89a3c19e74..586a35444e 100644 --- a/understanding/21/animation-from-interactions.html +++ b/understanding/21/animation-from-interactions.html @@ -7,6 +7,16 @@

    Understanding Animation from Interactions

    + +
    +

    In brief

    +
    +
    Objective
    Users are not harmed or distracted by motion
    +
    Author task
    Support user preferences for motion, and eliminate unnecessary motion effects
    +
    + +
    +

    Intent

    diff --git a/understanding/21/character-key-shortcuts.html b/understanding/21/character-key-shortcuts.html index 69c95fd7b8..0e4bc00005 100644 --- a/understanding/21/character-key-shortcuts.html +++ b/understanding/21/character-key-shortcuts.html @@ -7,6 +7,16 @@

    Understanding Character Key Shortcuts

    + +
    +

    In brief

    +
    +
    Objective
    Reduce accidental activation of keyboard shortcuts
    +
    Author task
    Ensure character-only shortcut keys can be turned off or modified
    +
    + +
    +

    Intent

    The intent of this Success Crition is to reduce accidental activation of keyboard shortcuts. Character key shortcuts work well for many keyboard users, but are inappropriate and frustrating for speech input users — whose means of input is strings of letters — and for keyboard users who are prone to accidentally hit keys. diff --git a/understanding/21/concurrent-input-mechanisms.html b/understanding/21/concurrent-input-mechanisms.html index b6a168d730..c1a8a5b0b1 100644 --- a/understanding/21/concurrent-input-mechanisms.html +++ b/understanding/21/concurrent-input-mechanisms.html @@ -7,6 +7,16 @@

    Understanding Concurrent Input Mechanisms

    + +
    +

    In brief

    +
    +
    Objective
    Users can choose different ways of inputting content
    +
    Author task
    Do not prevent users from switching their mode of input
    +
    + +
    +

    Intent

    The intent of this Success Criterion is to ensure that people can use and switch between different modes of input when interacting with web content. Users may employ a variety of input mechanisms when interacting with web content. These may be a combination of mechanisms such as a keyboard or keyboard-like interfaces and pointer devices like a mouse, stylus or touchscreen.

    diff --git a/understanding/21/content-on-hover-or-focus.html b/understanding/21/content-on-hover-or-focus.html index cff83df5d1..8385ba19ff 100644 --- a/understanding/21/content-on-hover-or-focus.html +++ b/understanding/21/content-on-hover-or-focus.html @@ -7,6 +7,16 @@

    Understanding Content on Hover or Focus

    + +
    +

    In brief

    +
    +
    Objective
    More users can perceive and dismiss non-persistent content
    +
    Author task
    If hover or focus causes content changes, ensure interaction is predictable
    +
    + +
    +

    Intent

    Additional content that appears and disappears in coordination with keyboard focus or pointer hover often leads to accessibility issues. Reasons for such issues include:

    @@ -29,8 +39,6 @@

    Intent

  • persistent
  • Each of these is discussed in a separate section.

    -

    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 additional content beyond the trigger becoming visible) is not covered by the SC. -

    Dismissable

    diff --git a/understanding/21/identify-input-purpose.html b/understanding/21/identify-input-purpose.html index ed2da831e4..3cb551878e 100644 --- a/understanding/21/identify-input-purpose.html +++ b/understanding/21/identify-input-purpose.html @@ -7,6 +7,16 @@

    Understanding Identify Input Purpose

    + +
    +

    In brief

    +
    +
    Objective
    It is easier to fill out forms
    +
    Author task
    Indicate the purpose of common inputs, where technology allows
    +
    + +
    +

    Intent of this Success Criterion

    diff --git a/understanding/21/identify-purpose.html b/understanding/21/identify-purpose.html index 92e517a4e8..c0231b7d3b 100644 --- a/understanding/21/identify-purpose.html +++ b/understanding/21/identify-purpose.html @@ -7,6 +7,16 @@

    Understanding Identify Purpose

    + +
    +

    In brief

    +
    +
    Objective
    It is easier to operate and navigate content
    +
    Author task
    Indicate the meaning of all controls and other key information, where available
    +
    + +
    +

    Intent

    The intent of this Success Criterion is to ensure that the purpose of many elements on a page can be programmatically determined, so that user agents can extract and present that purpose to users using different modalities.

    diff --git a/understanding/21/input-modalities.html b/understanding/21/input-modalities.html index 1ec9c79016..e61e8d5d6a 100644 --- a/understanding/21/input-modalities.html +++ b/understanding/21/input-modalities.html @@ -16,7 +16,7 @@

    Intent of Guideline 2.5

    People operating pointer input devices may not be able to carry out timed or complex gestures. Examples are drag-and-drop gestures and on touch screens, swiping gestures, split taps, or long presses. This Guideline does not discourage the provision of complex and timed gestures by authors. However, where they are used, an alternative method of input should be provided to enable users with motor impairments to interact with content via single untimed pointer gestures.

    Often, people use devices that offer several input methods, for example, mouse input, touch input, keyboard input, and speech input. These should be supported concurrently as users may at any time swich preferred input methods due to situational circumstances, for example, the availability of a flat support for mouse operation, or situational impediments through motion or changes of ambient light.

    A common requirement for pointer interaction is the ability of users to position the pointer over the target. With touch input, the pointer (the finger) is larger and less precise than a mouse cursor. For people with motor impairments, a larger target makes it easier to successfully position the pointer and activate the target.

    -
    +

    Success Criteria for this Guideline

    diff --git a/understanding/21/label-in-name.html b/understanding/21/label-in-name.html index 2273526225..22edd20874 100644 --- a/understanding/21/label-in-name.html +++ b/understanding/21/label-in-name.html @@ -7,6 +7,16 @@

    Understanding Label in Name

    + +
    +

    In brief

    +
    +
    Objective
    The visual label for controls is a trigger for speech activation
    +
    Author task
    Where pratical, make the control’s text label and name match
    +
    + +
    +

    Intent

    The intent of this Success Criterion is to ensure that the words which visually label a component are also the words associated with the component programmatically. This helps ensure that people with disabilities can rely on visible labels as a means to interact with the components.

    diff --git a/understanding/21/motion-actuation.html b/understanding/21/motion-actuation.html index aadf8fb2f8..69e6390e64 100644 --- a/understanding/21/motion-actuation.html +++ b/understanding/21/motion-actuation.html @@ -10,6 +10,16 @@

    Motion Actuation
    Understanding SC 2.6.1

    + +
    +

    In brief

    +
    +
    Objective
    Content is not dependent on a user's ability to move a device
    +
    Author task
    Don't rely solely on device motion to control page content
    +
    + +
    +

    Intent of this Success Criterion

    The intent of this success criterion is to ensure that functions triggered by moving a device (for example, shaking or tilting) or by gesturing towards the device (so that sensors like a camera can pick up and interpret the gesturing), can also be operated by more conventional user interface components.

    diff --git a/understanding/21/non-text-contrast.html b/understanding/21/non-text-contrast.html index b235dbafd3..ad6d470bbc 100644 --- a/understanding/21/non-text-contrast.html +++ b/understanding/21/non-text-contrast.html @@ -7,6 +7,15 @@

    Understanding Non-text Contrast

    + +
    +

    In brief

    +
    +
    Objective
    Important visual information meets the same minimum contrast required for larger text
    +
    Author task
    Ensure meaningful visual cues achieve 3:1 against the background
    +
    + +

    Intent

    @@ -184,7 +193,7 @@

    Active User Interface Component Examples

    Default focus style - Links are required to have a focus indicator by 2.4.7 Focus Visible. Where the user agent's default appearance of interactive controls (such as links, form fields or buttons) is not adjusted, the default focus style is sufficient. + Links are required to have a visible focus indicator by 2.4.7 Focus Visible. Where the focus style of the user-agent is not adjusted on interactive controls (such as links, form fields or buttons) by the website (author), the default focus style is exempt from contrast requirements (but must still be visible). A browser-default styled link, with a black dotted outline around the link. @@ -268,12 +277,12 @@

    Active User Interface Component Examples

    Inactive User Interface Components

    -

    User Interface Components that are not available for user interaction (e.g., a disabled control in HTML) are not required to meet contrast requirements in WCAG 2.1. An inactive user interface component is visible but not currently operable. An example would be a submit button at the bottom of a form that is visible but cannot be activated until all the required fields in the form are completed.

    +

    User Interface Components that are not available for user interaction (e.g., a disabled control in HTML) are not required to meet contrast requirements. An inactive user interface component is visible but not currently operable. An example would be a submit button at the bottom of a form that is visible but cannot be activated until all the required fields in the form are completed.

    Grey button with non-contrasting grey text.
    An inactive button using default browser styles
    -

    Inactive components, such as disabled controls in HTML, are not available for user interaction. The decision to exempt inactive controls from the contrast requirements was based on a number of considerations. Although it would be benefitial to some people to discern inactive controls, a one-size-fits-all solution has been very difficult to establish. A method of varying the presentation of disabled controls, such as adding an icon for disabled controls, based on user preferences is anticipated as an advancement in the future.

    +

    Inactive components, such as disabled controls in HTML, are not available for user interaction. The decision to exempt inactive controls from the contrast requirements was based on a number of considerations. Although it would be beneficial to some people to discern inactive controls, a one-size-fits-all solution has been very difficult to establish. A method of varying the presentation of disabled controls, such as adding an icon for disabled controls, based on user preferences is anticipated as an advancement in the future.

    diff --git a/understanding/21/orientation.html b/understanding/21/orientation.html index 37dbbeb87b..c204a8645c 100644 --- a/understanding/21/orientation.html +++ b/understanding/21/orientation.html @@ -13,6 +13,16 @@

    SC 2.6.2

    + +
    +

    In brief

    +
    +
    Objective
    Devices can be used in any orientation
    +
    Author task
    Don't lock content to either portrait or landscape presentation
    +
    + +
    +

    Intent of this Success Criterion

    The intent of this Success Criterion is to ensure that content displays in the orientation (portrait or landscape) preferred by the user. Some websites and applications automatically set and restrict the screen to a particular display orientation and expect diff --git a/understanding/21/pointer-cancellation.html b/understanding/21/pointer-cancellation.html index a84ad6ccb6..bba6bc4e83 100644 --- a/understanding/21/pointer-cancellation.html +++ b/understanding/21/pointer-cancellation.html @@ -7,6 +7,15 @@

    Understanding Pointer Cancellation

    + +
    +

    In brief

    +
    +
    Objective
    Reduce accidental activation of controls
    +
    Author task
    Make pointer cancellation predictable and consistent
    +
    + +

    Intent

    The intent of this success criterion is to make it easier for users to prevent accidental or erroneous pointer input. People with various disabilities can inadvertently initiate touch or mouse events with unwanted results. Each of the following subsections roughly aligns with the bullets of this Success Criterion, and outlines a means of allowing users to cancel pointer operations.

    @@ -28,7 +37,7 @@

    Up-Event Abort or Undo

  • moved to a new location, while still being depressed, and
  • released (up-event) to conclude the drop action.
  • -

    In such a complex action, the need for an Abort or Undo function increases. Designers may elect to confirm the move through something like a confirmation dialog or an undo button, giving the user the ability to Undo the process just completed. Alternatively, the ability to Abort the action can be acheived if, before completing step 3, the user returns the selected item to its original location and concludes the process there. If other parts of the screen disallow a move, the user can conclude the drag and drop there, effectively nullifying the operation.

    +

    In such a complex action, the need for an Abort or Undo function increases. Designers may elect to confirm the move through something like a confirmation dialog or an undo button, giving the user the ability to Undo the process just completed. Alternatively, the ability to Abort the action can be achieved if, before completing step 3, the user returns the selected item to its original location and concludes the process there. If other parts of the screen disallow a move, the user can conclude the drag and drop there, effectively nullifying the operation.

    Up Reversal

    diff --git a/understanding/21/pointer-gestures.html b/understanding/21/pointer-gestures.html index 9a3404cbaf..5bec83ade8 100644 --- a/understanding/21/pointer-gestures.html +++ b/understanding/21/pointer-gestures.html @@ -7,6 +7,15 @@

    Pointer Gestures
    Understanding SC 2.5.1

    + +
    +

    In brief

    +
    +
    Objective
    Let users operate touchscreens with one finger and reduced gestures
    +
    Author task
    Provide single-point operation for all functions
    +
    + +

    Intent of this Success Criterion

    diff --git a/understanding/21/reflow.html b/understanding/21/reflow.html index da1bcaf91b..390a781d75 100644 --- a/understanding/21/reflow.html +++ b/understanding/21/reflow.html @@ -8,6 +8,15 @@

    Understanding Reflow

    + +
    +

    In brief

    +
    +
    Objective
    Content can be enlarged without requiring horizontal scrolling
    +
    Author task
    Make text reflow within the width of the viewport
    +
    + +

    Intent of this Success Criterion

    The intent of this Success Criterion is to support people with low vision who need to enlarge text and read it in a single column. When the browser zoom is used to scale content to 400%, it reflows - i.e., it is presented in one column so that scrolling in more than one direction is not necessary.

    @@ -35,9 +44,9 @@

    Visibility and availability of content

    Content exceptions for reflow

    -

    Content which requires two-dimensional layout for usage or meaning cannot reflow without losing meaning, and is therefore out of scope of this Success Criterion. For example, graphics and video are by their nature two-dimensional. Cutting up an image and stacking the blocks would render the content unusable so that is out of scope. It is acceptable to provide two-dimensional scrolling for such parts of the content. However, it is possible to have these elements stay within the bounds of viewport at zoom levels to 400% (see advisory techniques).

    -

    Complex data tables have a two-dimensional relationship between the headings and data cells. This relationship is essential to convey the content. This Success Criterion therefore does not apply to whole data tables, and it is acceptable to provide two-dimensional scrolling for them. However, cells within data tables should fit within the size requirement unless the cell contains types of content that also requires two-dimensional layout for usage or meaning.

    -

    Interfaces which provide toolbars to edit content need to show both the content and the toolbar in the viewport. Depending on the number of toolbar buttons, the toolbar may need to scroll in the direction of text (e.g., horizontally in a vertically scrolling page). This Success Criterion therefore does not apply to interfaces which provide toolbars.

    +

    Content which requires two-dimensional layout for usage or meaning cannot reflow without loss of meaning, and is therefore excepted from the need to be presented without two-dimensional scrolling. For example, graphics and video are by their nature two-dimensional. Cutting up an image and stacking the blocks would render the content unusable. However, it is possible to have these elements stay within the bounds of viewport even as other content zooms to 400% (see advisory techniques).

    +

    Data tables have a two-dimensional relationship between the headings and data cells. This relationship is essential to convey the content. This Success Criterion therefore exempts data tables from needing to display without scrolling in the direction of text (e.g., horizontally in a vertically scrolling page). However, cells within data tables are not excepted unless the cell contains types of content that also requires two-dimensional layout for usage or meaning.

    +

    Interfaces which provide toolbars to edit content need to show both the content and the toolbar in the viewport. Depending on the number of toolbar buttons, the toolbar may need to scroll in the direction of text.

    Responsive web design and other ways to meet this Success Criterion

    @@ -50,7 +59,7 @@

    Avoiding scrolling in horizontally and vertically written languages

    The relation of Reflow to the Success Criterion 1.4.4 Resize Text

    -

    The focus of the Reflow Success Criterion is to enable users to zoom in without having to scroll in two directions. Success Criterion 1.4.4 Resize Text also applies, so it should be possible to increase the size of all text to at least 200% while simultaneously meeting the reflow requirement. For most implementations, the text is expected to continue to enlarge as the magnification increases, so that users can magnify text up to (and beyond) 400%. In an implementation where text does not consistently increase its size as people zoom in (such as when it is tranformed based on a media query to adapt to small-screen usage), it must still be possible to get to 200% enlargement in order to satisfy the Resize Text criterion.

    +

    The focus of the Reflow Success Criterion is to enable users to zoom in without having to scroll in two directions. Success Criterion 1.4.4 Resize Text also applies, so it should be possible to increase the size of all text to at least 200% while simultaneously meeting the reflow requirement. For most implementations, the text is expected to continue to enlarge as the magnification increases, so that users can magnify text up to (and beyond) 400%. In an implementation where text does not consistently increase its size as people zoom in (such as when it is transformed based on a media query to adapt to small-screen usage), it must still be possible to get to 200% enlargement in order to satisfy the Resize Text criterion.

    For example, if at the default browser setting of 100% zoom, text is set at 20px when the window is 1280px wide, the same 20px at 200% zoom would mean a text size of 200%. At 400% zoom, the author may decide to set the text size to 10px: the text would now still be enlarged to 200% compared to the default browser setting of 100% zoom. It is not required to achieve 200% text enlargement at every breakpoint, but it should be possible to get 200% text enlargement in some way.

    diff --git a/understanding/21/status-messages.html b/understanding/21/status-messages.html index fafd4a879a..5bd6f1cea5 100644 --- a/understanding/21/status-messages.html +++ b/understanding/21/status-messages.html @@ -8,6 +8,16 @@

    Status Messages
    Understanding SC 3.2.6

    + +
    +

    In brief

    +
    +
    Objective
    Make users aware of important changes in content
    +
    Author task
    Let assistive technology notify users about status changes that don't take focus
    +
    + +
    +

    Intent of this Success Criterion

    The intent of this Success Criterion is to make users aware of important changes in content that are not given focus, and to do so in a way that doesn't unnecessarily interrupt their work.

    diff --git a/understanding/21/target-size-enhanced.html b/understanding/21/target-size-enhanced.html index f1ce7499f8..457ef71693 100644 --- a/understanding/21/target-size-enhanced.html +++ b/understanding/21/target-size-enhanced.html @@ -7,6 +7,16 @@

    Understanding SC 2.5.5 Target Size (Enhanced)

    + +
    +

    In brief

    +
    +
    Objective
    Controls can be operated more easily, especially on touch screens
    +
    Author task
    Make custom targets at least 44 by 44 pixels
    +
    + +
    +

    Intent

    The intent of this success criterion is to help users who may have trouble activating a small target because of hand tremors, limited dexterity or other reasons. If the target is too small, it may be difficult to aim at the target. Mice and similar pointing devices can be hard to use for these users, and a larger target will help them greatly in having positive outcomes on the web page.

    diff --git a/understanding/21/text-spacing.html b/understanding/21/text-spacing.html index d6eddb3972..573504aaa6 100644 --- a/understanding/21/text-spacing.html +++ b/understanding/21/text-spacing.html @@ -7,6 +7,15 @@

    Understanding Text Spacing

    + +
    +

    In brief

    +
    +
    Objective
    Users can adjust text spacing to make it easier to read
    +
    Author task
    Ensure content adapts to user-defined text settings
    +
    + +

    Intent

    The intent of this Success Criterion (SC) is to ensure that when people override author specified text spacing to improve their reading experience, content is still readable and operable. Each of the requirements stipulated in the SC's four bullets helps ensure text styling can be adapted by the user to suit their needs.

    @@ -24,8 +33,19 @@

    Applicability

  • Video captions embedded directly into the video frames and not provided as an associated caption file
  • Images of text
  • -

    For this SC, canvas implementations of text are considered to be images of text.

    +

    For this SC, canvas implementations of text are considered to be images of text.

    +
    +

    Use of ellipses

    +

    There may be regions of a page where text containers cannot expand due to design constraints (such as a maximum width for the left navigation or table column headers). A common convention if text exceeds its space is to replace truncated text with an ellipsis. Where ellipses appear as a result of modifying text style properties, the page can still meet the Text Spacing requirements, so long as the content is still available. For example:

    +
      +
    • a mechanism is provided to reveal the truncated text on the page (for instance, the text appears on focus or on activation)
    • +
    • where the ellipsis is part of a section of + content which includes a link, the truncated text is revealed on the linked page
    • +
    + +

    Where text is not truncated but it is when text is spaced, if there is no mechanism to show the truncated text, it fails this Success Criterion.

    +

    User Responsibility

    @@ -69,7 +89,7 @@

    Benefits

    Examples

    -

    When spacing is be overridden to the SC's metrics:

    +

    When spacing is being overridden to the SC's metrics:

    1. Text fits within the bounds of its containing box without being cut off.
    2. Text fits within the bounds of its containing box without overlapping other boxes.
    3. diff --git a/understanding/21/timeouts.html b/understanding/21/timeouts.html index 1f62a9131a..ad770d090f 100644 --- a/understanding/21/timeouts.html +++ b/understanding/21/timeouts.html @@ -7,15 +7,25 @@

      Understanding Timeouts

      + +
      +

      In brief

      +
      +
      Objective
      Users do not lose data due to unknown timeouts
      +
      Author task
      Tell users how long their session can be inactive before they may lose information
      +
      + +
      +

      Intent

      The intent of this Success Criterion is to ensure that when a timeout is used, users know what duration of inactivity will cause the page to time out and result in lost data. The use of timed events can present significant barriers for users with cognitive disabilities, as these users may require more time to read content or to perform functions, such as completing an online form.

      During the completion of an online process, such as to reserve a hotel room or purchase a plane ticket, a user with a cognitive impairment may become overwhelmed with lengthy instructions and data input required to complete the process. The user may not be able to complete the process in one sitting and may need to take a break. Users should be able to leave a process without losing their current place within the process, and without losing information that has already been entered. If users cannot take a break and check their work, many will often be unable to complete a task correctly.

      -

      This Success Criterion works in tandem with Success Criterion 2.2.1 Timing Adjustable, but is specifically focused on notification of timeouts related to user inactivity.

      -

      The best way to conform to this success criterion is to keep the user data for at least 20 hours. This enables the user with disabilities and the aging community to start and finish a task, taking breaks as needed. However, when it is not practical to save the user data the author must warn the user about the duration of inactivity which will result in a timeout. Timeouts should be displayed to the user once at the beginning of the related task or process and not at each step.

      -

      This success criterion only applies to timeouts that are within the content provider's knowledge or control. For example, if the user closes a web browser or device and loses content in an open page that has not yet been submitted, the success criterion has not been violated.

      - -
      +

      This Success Criterion works in tandem with Success Criterion 2.2.1 Timing Adjustable, but is specifically focused on notification of timeouts related to user inactivity.

      +

      The best way to conform to this success criterion is to keep the user data for at least 20 hours. This enables the user with disabilities and the aging community to start and finish a task, taking breaks as needed. However, when it is not practical to save the user data the author must warn the user about the duration of inactivity which will result in a timeout. Timeouts should be displayed to the user once at the beginning of the related task or process and not at each step.

      +

      This success criterion only applies to timeouts that are within the content provider's knowledge or control. For example, if the user closes a web browser or device and loses content in an open page that has not yet been submitted, the success criterion has not been violated.

      +

      Examples of privacy regulations mentioned in the Success Criterion note, and related compliance standards, are PCI DSS (Payment Card Industry Data Security Standard) and HIPAA (Health Insurance Portability and Accountability Act of 1996).

      +

    Benefits

    This Success Criterion helps users by ensuring they are notified about timeouts related to inactivity.

    diff --git a/xslt/base.xslt b/xslt/base.xslt index 5d50ab342b..fd9240585c 100644 --- a/xslt/base.xslt +++ b/xslt/base.xslt @@ -94,6 +94,7 @@ + @@ -374,18 +375,17 @@
    -

    Copyright © W3C ® (MIT, ERCIM, Keio, Beihang) Permission to Use WAI Material.

    +

    Copyright © World Wide Web Consortium (W3C®). See Permission to Use WAI Material.

    diff --git a/xslt/generate-structure-xml.xslt b/xslt/generate-structure-xml.xslt index f98f72c720..c65851faa1 100644 --- a/xslt/generate-structure-xml.xslt +++ b/xslt/generate-structure-xml.xslt @@ -23,7 +23,9 @@ - + + + diff --git a/xslt/generate-techniques.xslt b/xslt/generate-techniques.xslt index b468a1b730..933ea3f503 100644 --- a/xslt/generate-techniques.xslt +++ b/xslt/generate-techniques.xslt @@ -554,7 +554,7 @@

    Test Rules

    -

    The following are Test Rules related to this Technique. It is not necessary to use these particular Test Rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Test Rules, see Understanding Test Rules for WCAG Success Criteria.

    +

    The following are Test Rules related to this Technique. It is not necessary to use these particular Test Rules to check for conformance with WCAG, but they are defined and approved test methods. For information on using Test Rules, see Understanding Test Rules for WCAG Success Criteria.

    • diff --git a/xslt/generate-understanding.xslt b/xslt/generate-understanding.xslt index 4d1b094bce..9e31164a78 100644 --- a/xslt/generate-understanding.xslt +++ b/xslt/generate-understanding.xslt @@ -663,6 +663,11 @@ @@ -902,6 +910,7 @@
      + @@ -912,6 +921,7 @@ +
      @@ -978,6 +988,14 @@ + + + +

      In brief

      + +
      +
      + diff --git a/xslt/generic-xml-to-json.xslt b/xslt/generic-xml-to-json.xslt new file mode 100644 index 0000000000..11a6afdf08 --- /dev/null +++ b/xslt/generic-xml-to-json.xslt @@ -0,0 +1,439 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + () + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $ + + + + + + + + + + + + + + + + + $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + @xmlns + + + + + + + $ + + + + + + + + + + + + + + + + + + + + + + + + + { + + } + + + + + + + + + + + + + + "": + + + + + + + + + + + + "" + + + + + + + + null + + + + + + + + + + + + + [ + + ] + + From bca4948d8dea3b445821084196b638a02db5a4d4 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Thu, 13 Jul 2023 15:21:08 +0100 Subject: [PATCH 58/73] Initial draft --- understanding/20/parsing.html | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/understanding/20/parsing.html b/understanding/20/parsing.html index 64d32e53df..3a14581c9a 100644 --- a/understanding/20/parsing.html +++ b/understanding/20/parsing.html @@ -12,10 +12,8 @@

      Understanding Parsing

      Intent of Parsing

      -
      -

      This criterion has been removed from WCAG 2.2.

      - -

      The intent of this Success Criterion was to ensure that user-agents, including assistive technologies, can accurately interpret and parse content. Since WCAG 2.0 was published, the specifications (such as HTML) and browsers have improved their handling of parsing errors. It is also the case that assistive technology used to do their own parsing of markup, but now rely on the browser. For that reason this success criterion has been removed. Many issues that would have failed this criterion will fail Info and Relationships or Name, Role, Value. Other issues are excepted by the "except where the specification allow these features" part of the criterion.

      +
      +

      This criterion has been removed from WCAG 2.2. In WCAG 2.1 and 2.0 this Success Criterion should be considered as always satisfied for any content using HTML or XML.

      The following content is left for historical purposes to show the original intent.

      From 3920b2588f8f26ab03e99ff573d30b9f1fe47fa5 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 1 Aug 2023 12:26:47 +0100 Subject: [PATCH 59/73] Updating link to adapting symbols spec --- understanding/21/identify-input-purpose.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/identify-input-purpose.html b/understanding/21/identify-input-purpose.html index 3cb551878e..625eec2228 100644 --- a/understanding/21/identify-input-purpose.html +++ b/understanding/21/identify-input-purpose.html @@ -28,7 +28,7 @@

      Intent of this Success Criterion

      By adopting and repurposing this predefined taxonomy of definitions, user agents and assistive technologies can now present the purpose of the inputs to users in different modalities. For example, assistive technologies may display familiar icons next to input fields to help users who have difficulties reading. An icon of a birthday cake may be shown in front of an input field with autocomplete="bday", or the icon of a telephone in front of an input field with autocomplete="tel".

      In addition to repurposing this taxonomy, when the autocomplete attribute technique is used to meet this Success Criterion, browsers and other user agents can suggest and 'autofill' the right content by autocompleting these fields based on past user input stored in the browser. By defining more granular definitions of common input purposes, for example “Birthday” (autocomplete=”bday”), browsers can store personalized values for each of these fields (the user's birthday date). The user is relieved of having to type the information and can instead confirm or, if needed, change the value of the field, a significant benefit for users with memory issues, dyslexia, and other disabilities. Because the autocomplete values are independent of language, users that may not be familiar with the text used to visually identify user input fields (the label) can still have that purpose consistently identified to them due to the fixed taxonomy of terms.

      If an input field accepts two different types of input purpose (as in combined user name/user email fields) and the technology used does not allow multiple purpose values to be defined, it is valid to provide either one or the other value or leave out the designation of input purpose altogether.

      -

      When the user agent and assistive technology support for other metadata formats matures, metadata schemes like the Personalization Semantics Content Module may be used in addition or instead of the HTML autocomplete attribute to identify the purpose of input fields. They can also support automated adaptations that identify and match author-provided input labels to defined vocabularies or symbols that are used instead for labelling inputs.

      +

      When the user agent and assistive technology support for other metadata formats matures, metadata schemes like the Personalization Semantics Content Module may be used in addition or instead of the HTML autocomplete attribute to identify the purpose of input fields. They can also support automated adaptations that identify and match author-provided input labels to defined vocabularies or symbols that are used instead for labelling inputs.

      From a2522c2d868d8ad9bf9f4d9c2064a61f69096d53 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 1 Aug 2023 14:48:15 +0100 Subject: [PATCH 60/73] Updated link name --- understanding/21/identify-input-purpose.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/understanding/21/identify-input-purpose.html b/understanding/21/identify-input-purpose.html index 625eec2228..7209da9d5e 100644 --- a/understanding/21/identify-input-purpose.html +++ b/understanding/21/identify-input-purpose.html @@ -28,7 +28,7 @@

      Intent of this Success Criterion

      By adopting and repurposing this predefined taxonomy of definitions, user agents and assistive technologies can now present the purpose of the inputs to users in different modalities. For example, assistive technologies may display familiar icons next to input fields to help users who have difficulties reading. An icon of a birthday cake may be shown in front of an input field with autocomplete="bday", or the icon of a telephone in front of an input field with autocomplete="tel".

      In addition to repurposing this taxonomy, when the autocomplete attribute technique is used to meet this Success Criterion, browsers and other user agents can suggest and 'autofill' the right content by autocompleting these fields based on past user input stored in the browser. By defining more granular definitions of common input purposes, for example “Birthday” (autocomplete=”bday”), browsers can store personalized values for each of these fields (the user's birthday date). The user is relieved of having to type the information and can instead confirm or, if needed, change the value of the field, a significant benefit for users with memory issues, dyslexia, and other disabilities. Because the autocomplete values are independent of language, users that may not be familiar with the text used to visually identify user input fields (the label) can still have that purpose consistently identified to them due to the fixed taxonomy of terms.

      If an input field accepts two different types of input purpose (as in combined user name/user email fields) and the technology used does not allow multiple purpose values to be defined, it is valid to provide either one or the other value or leave out the designation of input purpose altogether.

      -

      When the user agent and assistive technology support for other metadata formats matures, metadata schemes like the Personalization Semantics Content Module may be used in addition or instead of the HTML autocomplete attribute to identify the purpose of input fields. They can also support automated adaptations that identify and match author-provided input labels to defined vocabularies or symbols that are used instead for labelling inputs.

      +

      When the user agent and assistive technology support for other metadata formats matures, metadata schemes like the WAI-Adapt: Symbols Module may be used in addition or instead of the HTML autocomplete attribute to identify the purpose of input fields. They can also support automated adaptations that identify and match author-provided input labels to defined vocabularies or symbols that are used instead for labelling inputs.

      From 75e776a0dc3caeaee1dd8bb0555fb2691a085e9f Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Mon, 7 Aug 2023 23:46:43 +0300 Subject: [PATCH 61/73] Updating the WCAG 2.2 reference --- guidelines/terms/20/general-flash-and-red-flash-thresholds.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html index 1713d8ab13..c5a231871f 100644 --- a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html +++ b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html @@ -44,7 +44,7 @@ of two opposing transitions.

      -

      The new working definition in the field for "pair of opposing transitions involving a saturated red" (from WCAG 2.2) is a pair of opposing transitions where, one transition is either to or from a state with a value R/(R + G + B) that is greater than or equal to 0.8, and the difference between states is more than 0.2 (unitless) in the CIE 1976 UCS chromaticity diagram. [[ISO_9241-391]]

      +

      The new working definition in the field for "pair of opposing transitions involving a saturated red" (as of 2022) is a pair of opposing transitions where, one transition is either to or from a state with a value R/(R + G + B) that is greater than or equal to 0.8, and the difference between states is more than 0.2 (unitless) in the CIE 1976 UCS chromaticity diagram. [[ISO_9241-391]]

      Tools are available that will carry out analysis from video screen capture. However, no tool is necessary to evaluate for this condition if flashing is less than or equal From ef80ec37bef2964bec5063292ef5f57e5460137d Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Wed, 16 Aug 2023 13:30:38 +0100 Subject: [PATCH 62/73] Update general-flash-and-red-flash-thresholds.html --- guidelines/terms/20/general-flash-and-red-flash-thresholds.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html index c5a231871f..4ebf29d3fd 100644 --- a/guidelines/terms/20/general-flash-and-red-flash-thresholds.html +++ b/guidelines/terms/20/general-flash-and-red-flash-thresholds.html @@ -44,7 +44,7 @@ of two opposing transitions.

      -

      The new working definition in the field for "pair of opposing transitions involving a saturated red" (as of 2022) is a pair of opposing transitions where, one transition is either to or from a state with a value R/(R + G + B) that is greater than or equal to 0.8, and the difference between states is more than 0.2 (unitless) in the CIE 1976 UCS chromaticity diagram. [[ISO_9241-391]]

      +

      The working definition (as of 2022) in the field for "pair of opposing transitions involving a saturated red" is a pair of opposing transitions where, one transition is either to or from a state with a value R/(R + G + B) that is greater than or equal to 0.8, and the difference between states is more than 0.2 (unitless) in the CIE 1976 UCS chromaticity diagram. [[ISO_9241-391]]

      Tools are available that will carry out analysis from video screen capture. However, no tool is necessary to evaluate for this condition if flashing is less than or equal From a393cb31ee3a6ebc9c2ab5d5fa27fc24a43d1b7b Mon Sep 17 00:00:00 2001 From: Kevin White Date: Tue, 19 Sep 2023 12:09:35 +0100 Subject: [PATCH 63/73] Fixes required for publication --- biblio.js | 7 +++++++ guidelines/index.html | 4 ++-- guidelines/respec-config.js | 23 +++++++++++++---------- requirements/index.html | 2 +- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/biblio.js b/biblio.js index 7c3a0057ea..4a35866972 100644 --- a/biblio.js +++ b/biblio.js @@ -30,6 +30,13 @@ respecConfig.localBiblio = { "title": "Ergonomics of human-system interaction -- Part 112: Principles for the presentation of information", "publisher": "International Standards Organization" }, + + "ISO_9241-391": { + "isoNumber": "9241-391", + "href": "https://www.iso.org/standard/56350.html", + "title": "Ergonomics of human-system interaction—Part 391: Requirements, analysis and compliance test methods for the reduction of photosensitive seizures", + "publisher": "International Standards Organization" + }, "UNESCO": { "date": "1997", diff --git a/guidelines/index.html b/guidelines/index.html index a5fcf829eb..1b25392716 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -4,7 +4,7 @@ Web Content Accessibility Guidelines (WCAG) 2.1 - + @@ -726,7 +726,7 @@

      Glossary

      Change Log

      -

      This section shows changes proposed for WCAG 2.1 since its publication as a W3C Recommendation. These changes are also recorded as errata.

      +

      This section shows changes proposed for WCAG 2.1 since its publication as a W3C Recommendation. These changes are also recorded as errata.

      The full commit history to WCAG 2.1 is available.

      No changes have been made to date.

      diff --git a/guidelines/respec-config.js b/guidelines/respec-config.js index fb2f829601..f034244246 100644 --- a/guidelines/respec-config.js +++ b/guidelines/respec-config.js @@ -8,40 +8,46 @@ var respecConfig = { permalinkHide: false, tocIntroductory: true, // specification status (e.g., WD, LC, NOTE, etc.). If in doubt use ED. - specStatus: "ED", + specStatus: "REC", //crEnd: "2012-04-30", //perEnd: "2013-07-23", //publishDate: "2013-08-22", diffTool: "http://www.aptest.com/standards/htmldiff/htmldiff.pl", // the specifications short name, as in https://www.w3.org/TR/short-name/ - shortName: "WCAG22", + shortName: "WCAG21", // if you wish the publication date to be other than today, set this - //publishDate: "2014-12-11", + publishDate: "2023-09-21", copyrightStart: "2020", license: "document", // if there is a previously published draft, uncomment this and set its YYYY-MM-DD date // and its maturity status - //previousPublishDate: "2014-06-12", - //previousMaturity: "WD", + previousPublishDate: "2018-06-05", + previousMaturity: "REC", prevRecURI: "https://www.w3.org/TR/WCAG/", //previousDiffURI: "https://www.w3.org/TR/2014/REC-wai-aria-20140320/", // if there a publicly available Editors Draft, this is the link edDraftURI: "https://w3c.github.io/wcag/guidelines/22/", + + // Implementation report + implementationReportURI: "https://www.w3.org/WAI/WCAG21/implementation-report/", // if this is a LCWD, uncomment and set the end of its review period // lcEnd: "2012-02-21", + + // Name of the WG + group: "ag", + github: "w3c/wcag", // editors, add as many as you like // only "name" is required editors: [ { name: "Chuck Adams", - url: "https://www.oracle.com/", mailto: "charles.adams@oracle.com", company: "Oracle", companyURI: "https://www.oracle.com/", @@ -49,7 +55,6 @@ var respecConfig = { }, { name: "Alastair Campbell", - url: "https://www.nomensa.com/", mailto: "acampbell@nomensa.com", company: "Nomensa", companyURI: "https://www.nomensa.com/", @@ -63,7 +68,6 @@ var respecConfig = { }, { name: "Michael Cooper", - url: 'https://www.w3.org', mailto: "cooper@w3.org", company: "W3C", companyURI: "https://www.w3.org", @@ -71,7 +75,6 @@ var respecConfig = { }, { name: "Andrew Kirkpatrick", - url: "http://www.adobe.com/", mailto: "akirkpat@adobe.com", company: "Adobe", companyURI: "http://www.adobe.com/", @@ -135,7 +138,7 @@ var respecConfig = { ], */ - // errata: 'https://www.w3.org/2010/02/rdfa/errata.html', + errata: 'https://www.w3.org/WAI/WCAG21/errata/', // name of the WG wg: "Accessibility Guidelines Working Group", diff --git a/requirements/index.html b/requirements/index.html index e9244c1ef5..563008ee5e 100644 --- a/requirements/index.html +++ b/requirements/index.html @@ -4,7 +4,7 @@ Requirements for Web Content Accessibility Guidelines 2.1 - + From 46854a6d0cd0bf6366f14700e6057d349bfad71d Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 19 Sep 2023 12:12:50 +0100 Subject: [PATCH 64/73] Adding informative link - HTML --- biblio.js | 6 ++++++ guidelines/sc/20/parsing.html | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/biblio.js b/biblio.js index 7c3a0057ea..48e569cd4c 100644 --- a/biblio.js +++ b/biblio.js @@ -30,6 +30,12 @@ respecConfig.localBiblio = { "title": "Ergonomics of human-system interaction -- Part 112: Principles for the presentation of information", "publisher": "International Standards Organization" }, + + "HTML-Living": { + "uri": "https://html.spec.whatwg.org/multipage/", + "title": "HTML Living Standard", + "publisher": "The Web Hypertext Application Technology Working Group (WHATWG)" + }, "UNESCO": { "date": "1997", diff --git a/guidelines/sc/20/parsing.html b/guidelines/sc/20/parsing.html index 4859b1d699..3a2589e01a 100644 --- a/guidelines/sc/20/parsing.html +++ b/guidelines/sc/20/parsing.html @@ -13,7 +13,7 @@

      Parsing

      This Success Criterion should be considered as always satisfied for any content using HTML or XML.

      -

      Since this criterion was written, the HTML Standard has adopted specific requirements governing how user agents must handle incomplete tags, incorrect element nesting, duplicate attributes, and non-unique IDs.

      +

      Since this criterion was written, the HTML Living Standard has adopted specific requirements governing how user agents must handle incomplete tags, incorrect element nesting, duplicate attributes, and non-unique IDs. [[HTML-Living]]

      Although the HTML Standard treats some of these cases as non-conforming for authors, it is considered to "allow these features" for the purposes of this Success Criterion because the specification requires that user agents support handling these cases consistently. In practice, this criterion no longer provides any benefit to people with disabilities in itself.

      From 11ba8d12d87e571b4266e2cbbdf24ada23ee7ee5 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 19 Sep 2023 12:24:20 +0100 Subject: [PATCH 65/73] Stray WCAG 2.2 reference --- guidelines/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guidelines/index.html b/guidelines/index.html index 1b25392716..7b08041cdb 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -49,7 +49,7 @@

      WCAG 2 Layers of Guidance

      Guidelines - Under the principles are guidelines. The 13 guidelines provide the basic goals that authors should work toward in order to make content more accessible to users with different disabilities. The guidelines are not testable, but provide the framework and overall objectives to help authors understand the success criteria and better implement the techniques.

    • -

      Success Criteria - For each guideline, testable success criteria are provided to allow WCAG 2.2 to be used where requirements and conformance testing are necessary such as in design specification, purchasing, regulation, and contractual agreements. In order to meet the needs of different groups and different situations, three levels of conformance are defined: A (lowest), AA, and AAA (highest). Additional information on WCAG levels can be found in Understanding Levels of Conformance.

      +

      Success Criteria - For each guideline, testable success criteria are provided to allow WCAG 2.1 to be used where requirements and conformance testing are necessary such as in design specification, purchasing, regulation, and contractual agreements. In order to meet the needs of different groups and different situations, three levels of conformance are defined: A (lowest), AA, and AAA (highest). Additional information on WCAG levels can be found in Understanding Levels of Conformance.

    • Sufficient and Advisory Techniques - For each of the guidelines and success criteria in the WCAG 2.1 document itself, the working group has also documented a wide variety of techniques. The techniques are informative and fall into two categories: those that are sufficient for meeting the success criteria and those that are advisory. The advisory techniques go beyond what is required by the individual success criteria and allow authors to better address the guidelines. Some advisory techniques address accessibility barriers that are not covered by the testable success criteria. Where common failures are known, these are also documented. See also Sufficient and Advisory Techniques in Understanding WCAG 2.1.

      From 1f17795de6b8e91e45bd969bd6c72a9df08c98c5 Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 19 Sep 2023 12:35:58 +0100 Subject: [PATCH 66/73] Keeping the editors section the same. --- guidelines/respec-config.js | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/guidelines/respec-config.js b/guidelines/respec-config.js index f034244246..b917419843 100644 --- a/guidelines/respec-config.js +++ b/guidelines/respec-config.js @@ -47,11 +47,18 @@ var respecConfig = { // only "name" is required editors: [ { - name: "Chuck Adams", - mailto: "charles.adams@oracle.com", - company: "Oracle", - companyURI: "https://www.oracle.com/", - w3cid: 104852 + name: "Andrew Kirkpatrick", + mailto: "akirkpat@adobe.com", + company: "Adobe", + companyURI: "http://www.adobe.com/", + w3cid: 39770 + }, + { + name: "Joshue O Connor", + mailto: "josh@interaccess.ie", + company: "Invited Expert, InterAccess", + companyURI: "https://interaccess.org/", + w3cid: 41218 }, { name: "Alastair Campbell", @@ -60,25 +67,12 @@ var respecConfig = { companyURI: "https://www.nomensa.com/", w3cid: 44689 }, - { - name: "Rachael Montgomery", - mailto: "rachael@accessiblecommunity.org", - company: "Invited Expert", - w3cid: 90310 - }, { name: "Michael Cooper", mailto: "cooper@w3.org", company: "W3C", companyURI: "https://www.w3.org", w3cid: 34017 - }, - { - name: "Andrew Kirkpatrick", - mailto: "akirkpat@adobe.com", - company: "Adobe", - companyURI: "http://www.adobe.com/", - w3cid: 39770 } ], /* From 3b601db9445342f102e3ec1c83fa8fbcdb4ff32c Mon Sep 17 00:00:00 2001 From: Alastair Campbell Date: Tue, 19 Sep 2023 13:49:41 +0100 Subject: [PATCH 67/73] Update biblio.js Removing the HTML one, as covered in SpecRef. --- biblio.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/biblio.js b/biblio.js index 48e569cd4c..7c3a0057ea 100644 --- a/biblio.js +++ b/biblio.js @@ -30,12 +30,6 @@ respecConfig.localBiblio = { "title": "Ergonomics of human-system interaction -- Part 112: Principles for the presentation of information", "publisher": "International Standards Organization" }, - - "HTML-Living": { - "uri": "https://html.spec.whatwg.org/multipage/", - "title": "HTML Living Standard", - "publisher": "The Web Hypertext Application Technology Working Group (WHATWG)" - }, "UNESCO": { "date": "1997", From 749927e80fa8a9b73bf9d7820104a70e2eaf9b97 Mon Sep 17 00:00:00 2001 From: Kevin White Date: Tue, 19 Sep 2023 14:11:26 +0100 Subject: [PATCH 68/73] Include SpecRef HTML reference --- guidelines/sc/20/parsing.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guidelines/sc/20/parsing.html b/guidelines/sc/20/parsing.html index 3a2589e01a..00114d4b39 100644 --- a/guidelines/sc/20/parsing.html +++ b/guidelines/sc/20/parsing.html @@ -13,7 +13,7 @@

      Parsing

      This Success Criterion should be considered as always satisfied for any content using HTML or XML.

      -

      Since this criterion was written, the HTML Living Standard has adopted specific requirements governing how user agents must handle incomplete tags, incorrect element nesting, duplicate attributes, and non-unique IDs. [[HTML-Living]]

      +

      Since this criterion was written, the HTML Living Standard has adopted specific requirements governing how user agents must handle incomplete tags, incorrect element nesting, duplicate attributes, and non-unique IDs. [[HTML]]

      Although the HTML Standard treats some of these cases as non-conforming for authors, it is considered to "allow these features" for the purposes of this Success Criterion because the specification requires that user agents support handling these cases consistently. In practice, this criterion no longer provides any benefit to people with disabilities in itself.

      From 70613db98f083c7753de12fb0906fc642e950575 Mon Sep 17 00:00:00 2001 From: Kevin White Date: Tue, 19 Sep 2023 16:18:34 +0100 Subject: [PATCH 69/73] Updating normative references in informative sections --- guidelines/index.html | 4 ++-- guidelines/terms/21/css-pixel.html | 2 +- guidelines/terms/21/pointer-input.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/guidelines/index.html b/guidelines/index.html index 7b08041cdb..80fd598967 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -15,7 +15,7 @@

      Web Content Accessibility Guidelines (WCAG) 2.1 covers a wide range of recommendations for making Web content more accessible. Following these guidelines will make content more accessible to a wider range of people with disabilities, including accommodations for blindness and low vision, deafness and hearing loss, limited movement, speech disabilities, photosensitivity, and combinations of these, and some accommodation for learning disabilities and cognitive limitations; but will not address every user need for people with these disabilities. These guidelines address accessibility of web content on desktops, laptops, tablets, and mobile devices. Following these guidelines will also often make Web content more usable to users in general.

      WCAG 2.1 success criteria are written as testable statements that are not technology-specific. Guidance about satisfying the success criteria in specific technologies, as well as general information about interpreting the success criteria, is provided in separate documents. See Web Content Accessibility Guidelines (WCAG) Overview for an introduction and links to WCAG technical and educational material.

      -

      WCAG 2.1 extends Web Content Accessibility Guidelines 2.0 [[!WCAG20]], which was published as a W3C Recommendation December 2008. Content that conforms to WCAG 2.1 also conforms to WCAG 2.0. The WG intends that for policies requiring conformance to WCAG 2.0, WCAG 2.1 can provide an alternate means of conformance. The publication of WCAG 2.1 does not deprecate or supersede WCAG 2.0. While WCAG 2.0 remains a W3C Recommendation, the W3C advises the use of WCAG 2.1 to maximize future applicability of accessibility efforts. The W3C also encourages use of the most current version of WCAG when developing or updating Web accessibility policies.

      +

      WCAG 2.1 extends Web Content Accessibility Guidelines 2.0 [[WCAG20]], which was published as a W3C Recommendation December 2008. Content that conforms to WCAG 2.1 also conforms to WCAG 2.0. The WG intends that for policies requiring conformance to WCAG 2.0, WCAG 2.1 can provide an alternate means of conformance. The publication of WCAG 2.1 does not deprecate or supersede WCAG 2.0. While WCAG 2.0 remains a W3C Recommendation, the W3C advises the use of WCAG 2.1 to maximize future applicability of accessibility efforts. The W3C also encourages use of the most current version of WCAG when developing or updating Web accessibility policies.

      This is an Editors' Draft of Web Content Accessibility Guidelines (WCAG) 2.1. WCAG 2.1 is a W3C Recommendation. This draft incorporates errata and are described in the change log. At some point these changes might be incorporated into a Edited or Amended Recommendation.

      @@ -26,7 +26,7 @@

      Introduction

      Background on WCAG 2

      Web Content Accessibility Guidelines (WCAG) 2.1 defines how to make Web content more accessible to people with disabilities. Accessibility involves a wide range of disabilities, including visual, auditory, physical, speech, cognitive, language, learning, and neurological disabilities. Although these guidelines cover a wide range of issues, they are not able to address the needs of people with all types, degrees, and combinations of disability. These guidelines also make Web content more usable by older individuals with changing abilities due to aging and often improve usability for users in general.

      -

      WCAG 2.1 is developed through the W3C process in cooperation with individuals and organizations around the world, with a goal of providing a shared standard for Web content accessibility that meets the needs of individuals, organizations, and governments internationally. WCAG 2.1 builds on WCAG 2.0 [[!WCAG20]], which in turn built on WCAG 1.0 [[WAI-WEBCONTENT]] and is designed to apply broadly to different Web technologies now and in the future, and to be testable with a combination of automated testing and human evaluation. For an introduction to WCAG, see the Web Content Accessibility Guidelines (WCAG) Overview.

      +

      WCAG 2.1 is developed through the W3C process in cooperation with individuals and organizations around the world, with a goal of providing a shared standard for Web content accessibility that meets the needs of individuals, organizations, and governments internationally. WCAG 2.1 builds on WCAG 2.0 [[WCAG20]], which in turn built on WCAG 1.0 [[WAI-WEBCONTENT]] and is designed to apply broadly to different Web technologies now and in the future, and to be testable with a combination of automated testing and human evaluation. For an introduction to WCAG, see the Web Content Accessibility Guidelines (WCAG) Overview.

      Significant challenges were encountered in defining additional criteria to address cognitive, language, and learning disabilities, including a short timeline for development as well as challenges in reaching consensus on testability, implementability, and international considerations of proposals. Work will carry on in this area in future versions of WCAG. We encourage authors to refer to our supplemental guidance on improving inclusion for people with disabilities, including learning and cognitive disabilities, people with low-vision, and more.

      diff --git a/guidelines/terms/21/css-pixel.html b/guidelines/terms/21/css-pixel.html index 38df6f3e00..053b6f6842 100644 --- a/guidelines/terms/21/css-pixel.html +++ b/guidelines/terms/21/css-pixel.html @@ -6,7 +6,7 @@

      A CSS pixel is the canonical unit of measure for all lengths and measurements in CSS. This unit is density-independent, and distinct from actual hardware pixels present in a display. User agents and operating systems should ensure that a CSS pixel is - set as closely as possible to the CSS Values and Units Module Level 3 reference pixel [[!css3-values]], which takes into account the physical dimensions of the display + set as closely as possible to the CSS Values and Units Module Level 3 reference pixel [[css3-values]], which takes into account the physical dimensions of the display and the assumed viewing distance (factors that cannot be determined by content authors).

      diff --git a/guidelines/terms/21/pointer-input.html b/guidelines/terms/21/pointer-input.html index c71065cb18..e79281c0f8 100644 --- a/guidelines/terms/21/pointer-input.html +++ b/guidelines/terms/21/pointer-input.html @@ -5,6 +5,6 @@ such as a mouse, pen, or touch contact

      See the Pointer Events - definition for "pointer" [[!pointerevents]].

      + definition for "pointer" [[pointerevents]].

      \ No newline at end of file From 3b643ab3b8752415c2eae81b4dd7b384cfddee2f Mon Sep 17 00:00:00 2001 From: Kevin White Date: Thu, 21 Sep 2023 12:26:21 +0100 Subject: [PATCH 70/73] Add Change Log information --- guidelines/index.html | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/guidelines/index.html b/guidelines/index.html index 80fd598967..86a164d15b 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -726,9 +726,26 @@

      Glossary

      Change Log

      -

      This section shows changes proposed for WCAG 2.1 since its publication as a W3C Recommendation. These changes are also recorded as errata.

      +

      This section shows changes for WCAG 2.1 since its publication as a W3C Recommendation. These changes are also recorded as errata.

      +

      Changes since the W3C Recommendation of 05 June 2018:

      +
        +
      • In the Status of This Document the paragraph beginning "This document has been reviewed by W3C Members..." appears twice. The first instance of this paragraph has been removed.
      • +
      • In the Introduction, several (but not all) references to "WCAG 2.0" has been changed to "WCAG 2.1".
      • +
      • In the 0.5.2 Numbering in WCAG 2.1, the words "critera" and "ccriteria" have been changed to "criteria".
      • +
      • In 1.4.10 Reflow, the first note had a supernumary "Note" indicator which has been removed.
      • +
      • In 1.4.13 Content on Hover or Focus, the word "dismissable" has been changed to "dismissible".
      • +
      • In 4. Robust, repetition of the word "by" has been removed.
      • +
      • In 5.2.2 Full pages, the third note began with "New" which has been removed.
      • +
      • In 5.3.1 Required Components of a Conformance Claim the editorial note "In WCAG 2.0 this was a dated URI, which may need to be adjusted when this becomes a Rec." has been removed.
      • +
      • In the definition for keyboard interface, the second (of three) note has been changed to be an example of the first note, leaving only two actual notes.
      • +
      • In the definition for technology, the third note has been changed to be an example.
      • +
      • In 7. Input Purposes for User Interface Components, the word "county" has been changed to "country".
      • +
      • In 1.3.4 Orientation, the note referencing "binary display orientation" has been clarified to read "content is not necessarily restricted to landscape or portrait display orientation".
      • +
      • In a note in the definition of accessibility supported, references to "Conformance Criterion" were changed to "Conformance Requirement".
      • +
      • In the definition of relative luminance, the red threshold was updated from 0.03928 to 0.04045.
      • +
      • In 4.1.1 Parsing one note was deleted, and two notes were added, including: "This Success Criterion should be considered as always satisfied for any content using HTML or XML."
      • +

      The full commit history to WCAG 2.1 is available.

      -

      No changes have been made to date.

      Acknowledgments

      From f031b5b0fc7eb883ef4fbbe77007138055ac9858 Mon Sep 17 00:00:00 2001 From: Kevin White Date: Tue, 26 Sep 2023 09:42:00 +0100 Subject: [PATCH 71/73] Fix links and SOTD --- guidelines/index.html | 6 +++--- guidelines/terms/20/relative-luminance.html | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/guidelines/index.html b/guidelines/index.html index 80fd598967..e83f5970d5 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -18,7 +18,7 @@

      WCAG 2.1 extends Web Content Accessibility Guidelines 2.0 [[WCAG20]], which was published as a W3C Recommendation December 2008. Content that conforms to WCAG 2.1 also conforms to WCAG 2.0. The WG intends that for policies requiring conformance to WCAG 2.0, WCAG 2.1 can provide an alternate means of conformance. The publication of WCAG 2.1 does not deprecate or supersede WCAG 2.0. While WCAG 2.0 remains a W3C Recommendation, the W3C advises the use of WCAG 2.1 to maximize future applicability of accessibility efforts. The W3C also encourages use of the most current version of WCAG when developing or updating Web accessibility policies.

      -

      This is an Editors' Draft of Web Content Accessibility Guidelines (WCAG) 2.1. WCAG 2.1 is a W3C Recommendation. This draft incorporates errata and are described in the change log. At some point these changes might be incorporated into a Edited or Amended Recommendation.

      +

      This is a Recommendation of WCAG 2.1 by the Accessibility Guidelines Working Group. This incorporates errata and are described in the change log. At some point additional changes might be incorporated into an Edited or Amended Recommendation.

      To comment, file an issue in the W3C WCAG GitHub repository. Although the proposed Success Criteria in this document reference issues tracking discussion, the Working Group requests that public comments be filed as new issues, one issue per discrete comment. It is free to create a GitHub account to file issues. If filing issues in GitHub is not feasible, send email to public-agwg-comments@w3.org (comment archive).

      @@ -79,7 +79,7 @@

      WCAG 2.1 Supporting Documents

      Requirements for WCAG 2.1

      -

      WCAG 2.1 meets a set of requirements for WCAG 2.1 which, in turn, inherit requirements from WCAG 2.0. Requirements structure the overall framework of guidelines and ensure backwards compatibility. The Working Group also used a less formal set of acceptance criteria for success criteria, to help ensure success criteria are similar in style and quality to those in WCAG 2.0. These requirements constrained what could be included in WCAG 2.1. This constraint was important to preserve its nature as a dot-release of WCAG 2.

      +

      WCAG 2.1 meets a set of requirements for WCAG 2.1 which, in turn, inherit requirements from WCAG 2.0. Requirements structure the overall framework of guidelines and ensure backwards compatibility. The Working Group also used a less formal set of acceptance criteria for success criteria, to help ensure success criteria are similar in style and quality to those in WCAG 2.0. These requirements constrained what could be included in WCAG 2.1. This constraint was important to preserve its nature as a dot-release of WCAG 2.

      Comparison with WCAG 2.0

      @@ -727,7 +727,7 @@

      Glossary

      Change Log

      This section shows changes proposed for WCAG 2.1 since its publication as a W3C Recommendation. These changes are also recorded as errata.

      -

      The full commit history to WCAG 2.1 is available.

      +

      The full commit history to WCAG 2.1 is available.

      No changes have been made to date.

      diff --git a/guidelines/terms/20/relative-luminance.html b/guidelines/terms/20/relative-luminance.html index 7f23a0f859..b5fae1f86c 100644 --- a/guidelines/terms/20/relative-luminance.html +++ b/guidelines/terms/20/relative-luminance.html @@ -45,7 +45,7 @@

      Almost all systems used today to view Web content assume sRGB encoding. Unless it is known that another color space will be used to process and display the content, - authors should evaluate using sRGB colorspace. If using other color spaces, see Understanding Success Criterion 1.4.3. + authors should evaluate using sRGB colorspace. If using other color spaces, see Understanding Success Criterion 1.4.3.

      If dithering occurs after delivery, then the source color value is used. For colors From 2c1fa209abbf49b2ebcae2fd31e9254adb93b396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20B=C3=A9tin?= Date: Thu, 29 Feb 2024 11:04:17 +0100 Subject: [PATCH 72/73] Translations - Use stable IDs in WCAG-2.1 branch (#3679) *** Preview | Diff --- acknowledgements/funders.html | 6 +- guidelines/index.html | 60 +++++++++---------- guidelines/respec-config.js | 2 +- guidelines/sc/20/abbreviations.html | 4 +- guidelines/sc/20/audio-control.html | 4 +- ...tion-or-media-alternative-prerecorded.html | 4 +- .../sc/20/audio-description-prerecorded.html | 4 +- ...audio-only-and-video-only-prerecorded.html | 4 +- guidelines/sc/20/audio-only-live.html | 4 +- guidelines/sc/20/bypass-blocks.html | 4 +- guidelines/sc/20/captions-live.html | 4 +- guidelines/sc/20/captions-prerecorded.html | 4 +- guidelines/sc/20/change-on-request.html | 4 +- .../sc/20/consistent-identification.html | 6 +- guidelines/sc/20/consistent-navigation.html | 4 +- guidelines/sc/20/contrast-enhanced.html | 4 +- guidelines/sc/20/contrast-minimum.html | 4 +- guidelines/sc/20/error-identification.html | 4 +- guidelines/sc/20/error-prevention-all.html | 2 +- ...error-prevention-legal-financial-data.html | 2 +- guidelines/sc/20/error-suggestion.html | 4 +- ...xtended-audio-description-prerecorded.html | 4 +- guidelines/sc/20/focus-order.html | 4 +- guidelines/sc/20/focus-visible.html | 4 +- guidelines/sc/20/headings-and-labels.html | 4 +- guidelines/sc/20/help.html | 4 +- .../sc/20/images-of-text-no-exception.html | 4 +- guidelines/sc/20/images-of-text.html | 4 +- guidelines/sc/20/info-and-relationships.html | 4 +- guidelines/sc/20/interruptions.html | 4 +- guidelines/sc/20/keyboard-no-exception.html | 4 +- guidelines/sc/20/keyboard.html | 4 +- guidelines/sc/20/labels-or-instructions.html | 4 +- guidelines/sc/20/language-of-page.html | 4 +- guidelines/sc/20/language-of-parts.html | 4 +- guidelines/sc/20/link-purpose-in-context.html | 4 +- guidelines/sc/20/link-purpose-link-only.html | 4 +- guidelines/sc/20/location.html | 4 +- .../sc/20/low-or-no-background-audio.html | 4 +- guidelines/sc/20/meaningful-sequence.html | 4 +- .../sc/20/media-alternative-prerecorded.html | 4 +- guidelines/sc/20/multiple-ways.html | 4 +- guidelines/sc/20/name-role-value.html | 4 +- guidelines/sc/20/no-keyboard-trap.html | 4 +- guidelines/sc/20/no-timing.html | 4 +- guidelines/sc/20/non-text-content.html | 4 +- guidelines/sc/20/on-focus.html | 4 +- guidelines/sc/20/on-input.html | 4 +- guidelines/sc/20/page-titled.html | 4 +- guidelines/sc/20/parsing.html | 6 +- guidelines/sc/20/pause-stop-hide.html | 4 +- guidelines/sc/20/pronunciation.html | 4 +- guidelines/sc/20/re-authenticating.html | 4 +- guidelines/sc/20/reading-level.html | 4 +- guidelines/sc/20/resize-text.html | 4 +- guidelines/sc/20/section-headings.html | 2 +- guidelines/sc/20/sensory-characteristics.html | 2 +- .../sc/20/sign-language-prerecorded.html | 4 +- .../20/three-flashes-or-below-threshold.html | 4 +- guidelines/sc/20/three-flashes.html | 4 +- guidelines/sc/20/timing-adjustable.html | 4 +- guidelines/sc/20/unusual-words.html | 4 +- guidelines/sc/20/use-of-color.html | 2 +- guidelines/sc/20/visual-presentation.html | 6 +- .../sc/21/animation-from-interactions.html | 2 +- guidelines/sc/21/change-of-content.html | 2 +- guidelines/sc/21/character-key-shortcuts.html | 2 +- .../sc/21/concurrent-input-mechanisms.html | 2 +- .../sc/21/content-on-hover-or-focus.html | 4 +- guidelines/sc/21/identify-input-purpose.html | 2 +- guidelines/sc/21/identify-purpose.html | 2 +- guidelines/sc/21/label-in-name.html | 2 +- guidelines/sc/21/motion-actuation.html | 2 +- guidelines/sc/21/non-text-contrast.html | 2 +- guidelines/sc/21/orientation.html | 2 +- guidelines/sc/21/pointer-cancellation.html | 2 +- guidelines/sc/21/pointer-gestures.html | 2 +- guidelines/sc/21/reflow.html | 2 +- guidelines/sc/21/status-messages.html | 2 +- guidelines/sc/21/target-size-enhanced.html | 2 +- guidelines/sc/21/target-size.html | 2 +- guidelines/sc/21/text-spacing.html | 4 +- guidelines/sc/21/timeouts.html | 2 +- guidelines/terms/20/abbreviation.html | 2 +- .../terms/20/accessibility-supported.html | 2 +- .../20/alternative-for-time-based-media.html | 2 +- .../20/ambiguous-to-users-in-general.html | 2 +- guidelines/terms/20/ascii-art.html | 2 +- guidelines/terms/20/assistive-technology.html | 2 +- guidelines/terms/20/audio-description.html | 2 +- guidelines/terms/20/audio-only.html | 4 +- guidelines/terms/20/audio.html | 2 +- guidelines/terms/20/blinking.html | 2 +- guidelines/terms/20/blocks-of-text.html | 4 +- guidelines/terms/20/captcha.html | 2 +- guidelines/terms/20/captions.html | 2 +- guidelines/terms/20/changes-of-context.html | 2 +- guidelines/terms/20/conformance.html | 4 +- .../20/conforming-alternate-version.html | 2 +- guidelines/terms/20/content.html | 4 +- .../terms/20/context-sensitive-help.html | 2 +- guidelines/terms/20/contrast-ratio.html | 2 +- .../terms/20/correct-reading-sequence.html | 4 +- guidelines/terms/20/emergency.html | 4 +- guidelines/terms/20/essential.html | 4 +- .../terms/20/extended-audio-description.html | 2 +- guidelines/terms/20/flash.html | 2 +- guidelines/terms/20/functionality.html | 4 +- ...eneral-flash-and-red-flash-thresholds.html | 2 +- guidelines/terms/20/human-language.html | 2 +- guidelines/terms/20/idiom.html | 2 +- guidelines/terms/20/image-of-text.html | 2 +- guidelines/terms/20/informative.html | 2 +- guidelines/terms/20/input-error.html | 2 +- guidelines/terms/20/jargon.html | 2 +- guidelines/terms/20/keyboard-interface.html | 2 +- guidelines/terms/20/label.html | 2 +- guidelines/terms/20/large-scale.html | 2 +- guidelines/terms/20/legal-commitments.html | 2 +- guidelines/terms/20/link-purpose.html | 4 +- guidelines/terms/20/live.html | 2 +- .../20/lower-secondary-education-level.html | 2 +- guidelines/terms/20/mechanism.html | 2 +- .../terms/20/media-alternative-for-text.html | 2 +- guidelines/terms/20/name.html | 2 +- .../terms/20/navigated-sequentially.html | 4 +- guidelines/terms/20/non-text-content.html | 2 +- guidelines/terms/20/normative.html | 2 +- .../terms/20/on-a-full-screen-window.html | 2 +- guidelines/terms/20/paused.html | 4 +- guidelines/terms/20/prerecorded.html | 4 +- guidelines/terms/20/presentation.html | 4 +- .../terms/20/primary-education-level.html | 2 +- guidelines/terms/20/process.html | 2 +- ...grammatically-determined-link-context.html | 2 +- .../terms/20/programmatically-determined.html | 2 +- guidelines/terms/20/programmatically-set.html | 4 +- guidelines/terms/20/pure-decoration.html | 2 +- guidelines/terms/20/real-time-event.html | 2 +- guidelines/terms/20/relationships.html | 4 +- guidelines/terms/20/relative-luminance.html | 2 +- guidelines/terms/20/relied-upon.html | 4 +- guidelines/terms/20/role.html | 2 +- guidelines/terms/20/same-functionality.html | 2 +- guidelines/terms/20/same-relative-order.html | 2 +- .../20/satisfies-a-success-criterion.html | 4 +- guidelines/terms/20/section.html | 2 +- guidelines/terms/20/set-of-web-pages.html | 2 +- .../20/sign-language-interpretation.html | 2 +- guidelines/terms/20/sign-language.html | 4 +- .../terms/20/specific-sensory-experience.html | 2 +- guidelines/terms/20/structure.html | 4 +- guidelines/terms/20/supplemental-content.html | 2 +- guidelines/terms/20/synchronized-media.html | 4 +- guidelines/terms/20/technology.html | 2 +- guidelines/terms/20/text-alternative.html | 2 +- guidelines/terms/20/text.html | 4 +- .../used-in-an-unusual-or-restricted-way.html | 2 +- guidelines/terms/20/user-agent.html | 2 +- guidelines/terms/20/user-controllable.html | 2 +- .../terms/20/user-interface-component.html | 2 +- guidelines/terms/20/video-only.html | 4 +- guidelines/terms/20/video.html | 2 +- guidelines/terms/20/viewport.html | 2 +- guidelines/terms/20/visually-customized.html | 4 +- guidelines/terms/20/web-page.html | 2 +- guidelines/terms/21/css-pixel.html | 2 +- guidelines/terms/21/down-event.html | 2 +- guidelines/terms/21/keyboard-shortcut.html | 2 +- guidelines/terms/21/motion-animation.html | 2 +- guidelines/terms/21/pointer-input.html | 4 +- guidelines/terms/21/region.html | 2 +- guidelines/terms/21/set-of-web-pages.html | 2 +- guidelines/terms/21/single-pointer.html | 2 +- guidelines/terms/21/state.html | 2 +- guidelines/terms/21/status-message.html | 2 +- guidelines/terms/21/style-property.html | 2 +- guidelines/terms/21/target.html | 2 +- guidelines/terms/21/up-event.html | 2 +- guidelines/terms/21/user-inactivity.html | 2 +- 180 files changed, 296 insertions(+), 296 deletions(-) diff --git a/acknowledgements/funders.html b/acknowledgements/funders.html index 77b78f87d7..cc6ccd68eb 100644 --- a/acknowledgements/funders.html +++ b/acknowledgements/funders.html @@ -1,4 +1,4 @@ -

      -

      Enabling funders

      +
      +

      Enabling funders

      This publication has been funded in part with U.S. Federal funds from the Health and Human Services, National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR), initially under contract number ED-OSE-10-C-0067 and now under contract number HHSP23301500054C. The content of this publication does not necessarily reflect the views or policies of the U.S. Department of Health and Human Services or the U.S. Department of Education, nor does mention of trade names, commercial products, or organizations imply endorsement by the U.S. Government.

      -
      \ No newline at end of file +
      diff --git a/guidelines/index.html b/guidelines/index.html index 1e49939b34..bb8e74cf2e 100644 --- a/guidelines/index.html +++ b/guidelines/index.html @@ -23,7 +23,7 @@

      Introduction

      -
      +

      Background on WCAG 2

      Web Content Accessibility Guidelines (WCAG) 2.1 defines how to make Web content more accessible to people with disabilities. Accessibility involves a wide range of disabilities, including visual, auditory, physical, speech, cognitive, language, learning, and neurological disabilities. Although these guidelines cover a wide range of issues, they are not able to address the needs of people with all types, degrees, and combinations of disability. These guidelines also make Web content more usable by older individuals with changing abilities due to aging and often improve usability for users in general.

      WCAG 2.1 is developed through the W3C process in cooperation with individuals and organizations around the world, with a goal of providing a shared standard for Web content accessibility that meets the needs of individuals, organizations, and governments internationally. WCAG 2.1 builds on WCAG 2.0 [[WCAG20]], which in turn built on WCAG 1.0 [[WAI-WEBCONTENT]] and is designed to apply broadly to different Web technologies now and in the future, and to be testable with a combination of automated testing and human evaluation. For an introduction to WCAG, see the Web Content Accessibility Guidelines (WCAG) Overview.

      @@ -38,7 +38,7 @@

      Background on WCAG 2

    Where this document refers to WCAG 2 it is intended to mean any and all versions of WCAG that start with 2.

    -
    +

    WCAG 2 Layers of Guidance

    The individuals and organizations that use WCAG vary widely and include Web designers and developers, policy makers, purchasing agents, teachers, and students. In order to meet the varying needs of this audience, several layers of guidance are provided including overall principles, general guidelines, testable success criteria and a rich collection of sufficient techniques, advisory techniques, and documented common failures with examples, resource links and code.

      @@ -58,8 +58,8 @@

      WCAG 2 Layers of Guidance

      All of these layers of guidance (principles, guidelines, success criteria, and sufficient and advisory techniques) work together to provide guidance on how to make content more accessible. Authors are encouraged to view and apply all layers that they are able to, including the advisory techniques, in order to best address the needs of the widest possible range of users.

      Note that even content that conforms at the highest level (AAA) will not be accessible to individuals with all types, degrees, or combinations of disability, particularly in the cognitive language and learning areas. Authors are encouraged to consider the full range of techniques, including the advisory techniques, as well as to seek relevant advice about current best practice to ensure that Web content is accessible, as far as possible, to this community. Metadata may assist users in finding content most suitable for their needs.

    -
    -

    WCAG 2.1 Supporting Documents

    +
    +

    WCAG 2.1 Supporting Documents

    The WCAG 2.1 document is designed to meet the needs of those who need a stable, referenceable technical standard. Other documents, called supporting documents, are based on the WCAG 2.1 document and address other important purposes, including the ability to be updated to describe how WCAG would be applied with new technologies. Supporting documents include:

    1. @@ -77,17 +77,17 @@

      WCAG 2.1 Supporting Documents

    See Web Content Accessibility Guidelines (WCAG) Overview for a description of the WCAG 2.1 supporting material, including education resources related to WCAG 2. Additional resources covering topics such as the business case for Web accessibility, planning implementation to improve the accessibility of Web sites, and accessibility policies are listed in WAI Resources.

    -
    -

    Requirements for WCAG 2.1

    +
    +

    Requirements for WCAG 2.1

    WCAG 2.1 meets a set of requirements for WCAG 2.1 which, in turn, inherit requirements from WCAG 2.0. Requirements structure the overall framework of guidelines and ensure backwards compatibility. The Working Group also used a less formal set of acceptance criteria for success criteria, to help ensure success criteria are similar in style and quality to those in WCAG 2.0. These requirements constrained what could be included in WCAG 2.1. This constraint was important to preserve its nature as a dot-release of WCAG 2.

    -
    -

    Comparison with WCAG 2.0

    +
    +

    Comparison with WCAG 2.0

    WCAG 2.1 was initiated with the goal to improve accessibility guidance for three major groups: users with cognitive or learning disabilities, users with low vision, and users with disabilities on mobile devices. Many ways to meet these needs were proposed and evaluated, and a set of these were refined by the Working Group. Structural requirements inherited from WCAG 2.0, clarity and impact of proposals, and timeline led to the final set of success criteria included in this version. The Working Group considers that WCAG 2.1 incrementally advances web content accessibility guidance for all these areas, but underscores that not all user needs are met by these guidelines.

    WCAG 2.1 builds on and is backwards compatible with WCAG 2.0, meaning web pages that conform to WCAG 2.1 also conform to WCAG 2.0. Authors that are required by policy to conform with WCAG 2.0 will be able to update content to WCAG 2.1 without losing conformance with WCAG 2.0. Authors following both sets of guidelines should be aware of the following differences:

    -
    -

    New Features in WCAG 2.1

    +
    +

    New Features in WCAG 2.1

    WCAG 2.1 extends WCAG 2.0 by adding new success criteria, definitions to support them, guidelines to organize the additions, and a couple additions to the conformance section. This additive approach helps to make it clear that sites which conform to WCAG 2.1 also conform to WCAG 2.0, thereby meeting conformance obligations that are specific to WCAG 2.0. The Accessibility Guidelines Working Group recommends that sites adopt WCAG 2.1 as their new conformance target, even if formal obligations mention WCAG 2.0, to provide improved accessibility and to anticipate future policy changes.

    The following Success Criteria are new in WCAG 2.1:

      @@ -112,17 +112,17 @@

      New Features in WCAG 2.1

      The new success criteria may reference new terms that have also been added to the glossary and form part of the normative requirements of the success criteria.

      In the Conformance section, a third note about page variants has been added to Full Pages, and an option for machine-readable metadata added to Optional Components of a Conformance Claim.

    -
    -

    Numbering in WCAG 2.1

    +
    +

    Numbering in WCAG 2.1

    In order to avoid confusion for implementers for whom backwards compatibility to WCAG 2.0 is important, new success criteria in WCAG 2.1 have been appended to the end of the set of success criteria within their guideline. This avoids the need to change the section number of success criteria from WCAG 2.0, which would be caused by inserting new success criteria between existing success criteria in the guideline, but it means success criteria in each guideline are no longer grouped by conformance level. The order of success criteria within each guideline does not imply information about conformance level; only the conformance level indicator (A / AA / AAA) on the success criterion itself indicates this. The WCAG 2.1 Quick Reference provides ways to view success criteria grouped by conformance level, along with many other filter and sort options.

    -
    -

    Conformance to WCAG 2.1

    +
    +

    Conformance to WCAG 2.1

    WCAG 2.1 uses the same conformance model as WCAG 2.0 with a couple additions, which is described in the Conformance section. It is intended that sites that conform to WCAG 2.1 also conform to WCAG 2.0, which means they meet the requirements of any policies that reference WCAG 2.0, while also better meeting the needs of users on the current Web.

    -
    -

    Later Versions of Accessibility Guidelines

    +
    +

    Later Versions of Accessibility Guidelines

    In parallel with WCAG 2.1, the Accessibility Guidelines Working Group is developing another major version of accessibility guidelines. The result of this work is expected to be a more substantial restructuring of web accessibility guidance than would be realistic for dot-releases of WCAG 2. The work follows a research-focused, user-centered design methodology to produce the most effective and flexible outcome, including the roles of content authoring, user agent support, and authoring tool support. This is a multi-year effort, so WCAG 2.1 is needed as an interim measure to provide updated web accessibility guidance to reflect changes on the web since the publication of WCAG 2.0. The Working Group might also develop additional interim versions, continuing with WCAG 2.2, on a similar short timeline to provide additional support while the major version is completed.

    @@ -130,14 +130,14 @@

    Later Versions of Accessibility Guidelines

    Perceivable

    Information and user interface components must be presentable to users in ways they can perceive.

    -
    +

    Text Alternatives

    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.

    -
    +

    Time-based Media

    Provide alternatives for time-based media.

    @@ -160,7 +160,7 @@

    Time-based Media

    -
    +

    Adaptable

    Create content that can be presented in different ways (for example simpler layout) without losing information or structure.

    @@ -178,7 +178,7 @@

    Adaptable

    -
    +

    Distinguishable

    Make it easier for users to see and hear content including separating foreground from background.

    @@ -215,7 +215,7 @@

    Distinguishable

    Operable

    User interface components and navigation must be operable.

    -
    +

    Keyboard Accessible

    Make all functionality available from a keyboard.

    @@ -229,7 +229,7 @@

    Keyboard Accessible

    -
    +

    Enough Time

    Provide users enough time to read and use content.

    @@ -247,7 +247,7 @@

    Enough Time

    -
    +

    Seizures and Physical Reactions

    Do not design content in a way that is known to cause seizures or physical reactions.

    @@ -259,7 +259,7 @@

    Seizures and Physical Reactions

    -
    + -
    +

    Input Modalities

    New

    Make it easier for users to operate functionality through various inputs beyond keyboard.

    @@ -309,7 +309,7 @@

    Input Modalities

    Understandable

    Information and the operation of the user interface must be understandable.

    -
    +

    Readable

    Make text content readable and understandable.

    @@ -327,7 +327,7 @@

    Readable

    -
    +

    Predictable

    Make Web pages appear and operate in predictable ways.

    @@ -343,7 +343,7 @@

    Predictable

    -
    +

    Input Assistance

    Help users avoid and correct mistakes.

    @@ -366,7 +366,7 @@

    Input Assistance

    Robust

    Content must be robust enough that it can be interpreted by a wide variety of user agents, including assistive technologies.

    -
    +

    Compatible

    Maximize compatibility with current and future user agents, including assistive technologies.

    @@ -384,7 +384,7 @@

    Conformance

    This section lists requirements for conformance to WCAG 2.1. It also gives information about how to make conformance claims, which are optional. Finally, it describes what it means to be accessibility supported, since only accessibility-supported ways of using technologies can be relied upon for conformance. Understanding Conformance includes further explanation of the accessibility-supported concept.

    -
    +

    Interpreting Normative Requirements

    The main content of WCAG 2.1 is normative and defines requirements that impact conformance claims. Introductory material, appendices, sections marked as "non-normative", diagrams, examples, and notes are informative (non-normative). Non-normative material provides advisory information to help interpret the guidelines but does not create requirements that impact a conformance claim.

    diff --git a/guidelines/respec-config.js b/guidelines/respec-config.js index b917419843..ad0b05237b 100644 --- a/guidelines/respec-config.js +++ b/guidelines/respec-config.js @@ -27,7 +27,7 @@ var respecConfig = { // and its maturity status previousPublishDate: "2018-06-05", previousMaturity: "REC", - prevRecURI: "https://www.w3.org/TR/WCAG/", + prevRecURI: "https://www.w3.org/TR/WCAG20/", //previousDiffURI: "https://www.w3.org/TR/2014/REC-wai-aria-20140320/", // if there a publicly available Editors Draft, this is the link diff --git a/guidelines/sc/20/abbreviations.html b/guidelines/sc/20/abbreviations.html index 69d85cf406..81f0d0be8b 100644 --- a/guidelines/sc/20/abbreviations.html +++ b/guidelines/sc/20/abbreviations.html @@ -1,4 +1,4 @@ -
    +

    Abbreviations

    @@ -7,4 +7,4 @@

    Abbreviations

    A mechanism for identifying the expanded form or meaning of abbreviations is available.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/audio-control.html b/guidelines/sc/20/audio-control.html index 7819ff6eef..aaccda2077 100644 --- a/guidelines/sc/20/audio-control.html +++ b/guidelines/sc/20/audio-control.html @@ -1,4 +1,4 @@ -
    +

    Audio Control

    @@ -13,4 +13,4 @@

    Audio Control

    to meet other success criteria) must meet this success criterion. See Conformance Requirement 5: Non-Interference.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/audio-description-or-media-alternative-prerecorded.html b/guidelines/sc/20/audio-description-or-media-alternative-prerecorded.html index fc1b009b9b..9198805452 100644 --- a/guidelines/sc/20/audio-description-or-media-alternative-prerecorded.html +++ b/guidelines/sc/20/audio-description-or-media-alternative-prerecorded.html @@ -1,4 +1,4 @@ -
    +

    Audio Description or Media Alternative (Prerecorded)

    @@ -8,4 +8,4 @@

    Audio Description or Media Alternative (Prerecorded)

    video content is provided for synchronized media, except when the media is a media alternative for text and is clearly labeled as such.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/audio-description-prerecorded.html b/guidelines/sc/20/audio-description-prerecorded.html index e69ba4569d..d745a2467c 100644 --- a/guidelines/sc/20/audio-description-prerecorded.html +++ b/guidelines/sc/20/audio-description-prerecorded.html @@ -1,4 +1,4 @@ -
    +

    Audio Description (Prerecorded)

    @@ -8,4 +8,4 @@

    Audio Description (Prerecorded)

    video content in synchronized media.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/audio-only-and-video-only-prerecorded.html b/guidelines/sc/20/audio-only-and-video-only-prerecorded.html index fea1d134f7..1d00f0b00f 100644 --- a/guidelines/sc/20/audio-only-and-video-only-prerecorded.html +++ b/guidelines/sc/20/audio-only-and-video-only-prerecorded.html @@ -1,4 +1,4 @@ -
    +

    Audio-only and Video-only (Prerecorded)

    @@ -31,4 +31,4 @@

    Audio-only and Video-only (Prerecorded)

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/audio-only-live.html b/guidelines/sc/20/audio-only-live.html index 4df1345cb4..f901051281 100644 --- a/guidelines/sc/20/audio-only-live.html +++ b/guidelines/sc/20/audio-only-live.html @@ -1,4 +1,4 @@ -
    +

    Audio-only (Live)

    @@ -8,4 +8,4 @@

    Audio-only (Live)

    audio-only content is provided.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/bypass-blocks.html b/guidelines/sc/20/bypass-blocks.html index 4bfedd4f72..5e33982b78 100644 --- a/guidelines/sc/20/bypass-blocks.html +++ b/guidelines/sc/20/bypass-blocks.html @@ -1,4 +1,4 @@ -
    +

    Bypass Blocks

    @@ -7,4 +7,4 @@

    Bypass Blocks

    A mechanism is available to bypass blocks of content that are repeated on multiple Web pages.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/captions-live.html b/guidelines/sc/20/captions-live.html index a46694ddc8..402d85f656 100644 --- a/guidelines/sc/20/captions-live.html +++ b/guidelines/sc/20/captions-live.html @@ -1,4 +1,4 @@ -
    +

    Captions (Live)

    @@ -8,4 +8,4 @@

    Captions (Live)

    audio content in synchronized media.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/captions-prerecorded.html b/guidelines/sc/20/captions-prerecorded.html index eb2f8a4349..0d9206873f 100644 --- a/guidelines/sc/20/captions-prerecorded.html +++ b/guidelines/sc/20/captions-prerecorded.html @@ -1,4 +1,4 @@ -
    +

    Captions (Prerecorded)

    @@ -8,4 +8,4 @@

    Captions (Prerecorded)

    audio content in synchronized media, except when the media is a media alternative for text and is clearly labeled as such.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/change-on-request.html b/guidelines/sc/20/change-on-request.html index bfb87593cc..f5d09acf56 100644 --- a/guidelines/sc/20/change-on-request.html +++ b/guidelines/sc/20/change-on-request.html @@ -1,4 +1,4 @@ -
    +

    Change on Request

    @@ -7,4 +7,4 @@

    Change on Request

    Changes of context are initiated only by user request or a mechanism is available to turn off such changes.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/consistent-identification.html b/guidelines/sc/20/consistent-identification.html index c1a5e5fcce..789b8d23f6 100644 --- a/guidelines/sc/20/consistent-identification.html +++ b/guidelines/sc/20/consistent-identification.html @@ -1,5 +1,5 @@ -
    - +
    +

    Consistent Identification

    AA

    @@ -7,4 +7,4 @@

    Consistent Identification

    Components that have the same functionality within a set of Web pages are identified consistently.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/consistent-navigation.html b/guidelines/sc/20/consistent-navigation.html index 7a811663da..a1df5d4e8a 100644 --- a/guidelines/sc/20/consistent-navigation.html +++ b/guidelines/sc/20/consistent-navigation.html @@ -1,4 +1,4 @@ -
    +

    Consistent Navigation

    @@ -7,4 +7,4 @@

    Consistent Navigation

    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.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/contrast-enhanced.html b/guidelines/sc/20/contrast-enhanced.html index d25475c349..ba07a2a4db 100644 --- a/guidelines/sc/20/contrast-enhanced.html +++ b/guidelines/sc/20/contrast-enhanced.html @@ -1,4 +1,4 @@ -
    +

    Contrast (Enhanced)

    @@ -38,4 +38,4 @@

    Contrast (Enhanced)

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/contrast-minimum.html b/guidelines/sc/20/contrast-minimum.html index 5c022a6e29..744d7f328e 100644 --- a/guidelines/sc/20/contrast-minimum.html +++ b/guidelines/sc/20/contrast-minimum.html @@ -1,4 +1,4 @@ -
    +

    Contrast (Minimum)

    @@ -38,4 +38,4 @@

    Contrast (Minimum)

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/error-identification.html b/guidelines/sc/20/error-identification.html index 2f82a6451d..b9549982e5 100644 --- a/guidelines/sc/20/error-identification.html +++ b/guidelines/sc/20/error-identification.html @@ -1,4 +1,4 @@ -
    +

    Error Identification

    @@ -8,4 +8,4 @@

    Error Identification

    is described to the user in text.

    -
    \ No newline at end of file +
    diff --git a/guidelines/sc/20/error-prevention-all.html b/guidelines/sc/20/error-prevention-all.html index 93729b2349..8fb05bb90e 100644 --- a/guidelines/sc/20/error-prevention-all.html +++ b/guidelines/sc/20/error-prevention-all.html @@ -1,4 +1,4 @@ -
    +

    Error Prevention (All)

    diff --git a/guidelines/sc/20/error-prevention-legal-financial-data.html b/guidelines/sc/20/error-prevention-legal-financial-data.html index 0089039f89..0059cff558 100644 --- a/guidelines/sc/20/error-prevention-legal-financial-data.html +++ b/guidelines/sc/20/error-prevention-legal-financial-data.html @@ -1,4 +1,4 @@ -
    +