Home

Awesome

Learning Web Accessibility (a11y)

Just one of the things I'm learning. https://github.com/hchiam/learning

This repo's link is easier to remember/type. It serves as a redirect to find this repo faster:

https://github.com/hchiam/web-accessibility-course-notes

Start with the above link. Extra notes may be added to this repo too.

Deque prep course for IAAP WAS: https://dequeuniversity.com/curriculum/packages/iaap-was

Key things

  1. Automate what you can: WAVE or axe DevTools for Firefox or lighthouse or axe DevTools for Chrome or axe-linter VSCode extension.
  2. Test realistically: screen readers + keyboard. Besides mouse and touch. And mobile.
  3. Tab. Shift+Tab. Enter. (And screen reader + arrow keys.)
  4. Resize page zoom to look for text reflow/overflow bugs.
  5. Checklist/report generator: WCAG-EM
  6. WCAG checklist: https://www.a11yproject.com/checklist or https://www.w3.org/WAI/WCAG22/quickref/?versions=2.1 although you might just want to use the WCAG-EM instead anyways for reporting

P.O.U.R.

My summary:

Some a11y-related GitHub repos

Some GitHub projects I updated to be more accessible

Some a11y-related CodePens

COGA (Cognitive Accessibility) guidance

The 8 topics are:

  1. Help users understand what things are and how to use them.
  2. Help users find what they need.
  3. Use clear content (text, images and media).
  4. Help users avoid mistakes.
  5. Help users focus.
  6. Ensure processes do not rely on memory.
  7. Provide help and support.
  8. Support adaptation and personalization.

More notes:

<details> <summary>More notes (click to expand)</summary>

Random note

Creating instances of elements in JS instead of hidden in HTML will work for getting HTML5 elements to work in IE <= 8 (need instance created first for some reason).

Literally paste the following Internet Explorer conditional comment:

<!--[if lt IE 9]>
  <script>
    var e = (
      "abbr,article,aside,audio,bdi,canvas,datalist,details,dialog," +
      "figcaption,figure,footer,header,keygen,mark,menu,meter,main,nav,output," +
      "progress,rp,ruby,rt,section,source,summary,time,track,video,wbr"
    ).split(",");
    for (var i = 0; i < e.length; i++) {
      document.createElement(e[i]);
    }
  </script>
<![endif]-->

Caption file formats

Basic

Advanced

Media Accessibility Decision Matrix (WCAG Level AA "Must"s)

Reference: https://codepen.io/cerovac/full/MWKVVYj

Consider: https://ableplayer.github.io/ableplayer/

MediaCaptionsTranscriptAudio DescriptionsSign Language
Pre-recorded MultimediaMust (C)Must (AD)
Pre-recorded Video-onlyMust (AD)
Pre-recorded Audio-onlyMust (T)
Live MultimediaMust (C)
Live Video-only
Live Audio-only

"CAST": C = Captions. AD = Audio Descriptions. T = Transcript. S = Sign Language.

Mnemonic, version 1: Just what's AA "Must":

Mnemonic, version 2: Just letters:

Mnemonic, version 3: Semantic overlap:

Mnemonic, version 4: Semantic overlap, reworked: "Pre-recorded + Multi, Video then AD, Audio then C".

Note: It's better to always include a transcript to give access to people who are deafblind, but it also helps with text searches, or if prefer reading quickly over watching.

Note: Some people understand a sign language better than captions or transcripts.

Notes on parallax

Notes on mouse input

Notes on focus

Notes on touch input

Notes on forms

Notes on screen readers

Notes on new content or SPAs (Single-Page Apps)

Notes on accessible name calculation algorithm

Basically

  1. aria-labelledby (Note: this is NOT aria-labelledby.)
  2. aria-label
  3. text <-- (but for implementation, go for this option first)
  4. (title but only kinda works for some users)

Fun facts

Note on visual disabilities

Note on physical impairments

Notes on screen magnification

Note on page titles (browser tab title)

Note on disabled buttons and inputs

Notes on ARIA roles

Deque ARIA patterns

  1. Alert
  2. Current page: Button
  3. Button (Toggle)
  4. Carousel (based on a tabpanel)
  5. Checkbox
  6. Checkbox (Tri-State)
  7. Dialog (Simple Dialog)
  8. Dialog (Simple Alert Dialog)
  9. Dialog (Message Dialog)
  10. Dialog (Message Alert Dialog)
  11. Expand/Collapse
  12. Expand/Collapse (based on Details/Summary)
  13. Link
  14. Navigation (Hierarchical) with Expand/Collapse
  15. Predictive Text
  16. Progress Bar (Bounded)
  17. Progress Bar (Unbounded)
  18. Radio and Radio Group
  19. Slider
  20. Slider (Multirange)
  21. Tabpanel
  22. Table (Responsive, Collapsible)
  23. Table (Sortable)
  24. Tooltip
  25. Tooltip Dialog
  26. Tree View

Deque ARIA patterns - Imports

Deque ARIA patterns - Examples

Analogy for Accessibility Tree element properties

WCAG notes

WCAG-EM notes

Various terms to know

Test yourself:

<details> <summary>Answers</summary> </details>

Policy examples and templates for your company

Accessibility statement generator

</details>