Accessibility Cheatsheet - JessicaOPRD/docs GitHub Wiki

Documentation has improved greatly in the past few years especially on MDN. As I review practices I will keep a list of shorthand notes.

🔗 MDN: HTML Content Categories

🔗 MDN: Using ARIA Roles, States, and Properties

General Tips

  • Use implicit roles over explicit ones whenever possible
  • Use landmarks and "skipnavs"

Content Tags

Generic

Tag Name Number Common Uses ARIA Role (implicit) Role Type Notes
<body> 1️⃣ generic

Sectioning

Tag Name Number Common Uses ARIA Role (implicit) Role Type Notes
<nav> ♾️ Menus, tables of content, indexes navigation Landmark ⚪ Primary navigational elements only, a footer index does not need it ⚪ Parent to ol/li navigational menus ⚪ Can be used around paragraph navigation ("Welcome to my page, where you can see my art, my photos...")
<article> ♾️ Independent potentially distributable/syndicated unit — Forum post, blog entry, item card, widget — can have child sections article Document structure ⚪ If self-contained and could be used similarly in more than one place, it is an article ⚪ Should have a heading tag ⚪ Should have time tag ⚪ Can be nested where relationships exist: 1️⃣ Blog Post ♾️ Blog Post Comments
<section> ♾️ Generic sectioning typically with a header region if given name Landmark Many potential uses, serves as a fallback sectioning element when a better one does not exist ⚪ Use div for style-only elements
<aside> ♾️ Sidebars, callouts complementary Landmark ⚪ Nothing in documentation specifies this is a good use for sidebar navigation? ⚪ Also flow content

Sectional Support

Tag Name Number Common Uses ARIA Role (implicit) Role Type Notes
<header> ♾️ Container for logo, nav, search, or nested in sectioning content (article) banner if not nested in sectioning content Landmark ⚪ Seen on first website
<footer> ♾️ Document footer, or nested in sectioning content (article) contentinfo Landmark ⚪ Use role="contentinfo" as bugfix for Safari 13

Flow

Tag Name Number Common Uses ARIA Role (implicit) Role Type Notes
<main> 1️⃣ Flow content such as article, aside, h1, table main Landmark ⚪ Do not include child elements that will repeat across pages, such as navigation — page-level content only
⚠️ **GitHub.com Fallback** ⚠️