Course 12 · Craft

Accessibility
Everyone, or it does not work.

Semantics, names, keyboard, focus, contrast and ARIA — checked against the browser’s own accessibility tree, not against a linter’s opinion.

16Lessons
≈ 3hReading
16Playable now
SemanticsNamesKeyboardARIAContrastTesting

0 of 16 lessons finished — nothing yet

The syllabus

16 lessons,
in the order they build on each other.

Start lesson one ↗
01

Who this is for

The people, the numbers, the law — and why the fixes make the product better for everyone.

≈ 11 min
02

The right element

What a button gives you for free, and everything a div makes you rebuild.

≈ 12 min
03

Headings and landmarks

How somebody who cannot see the page finds their way round it in ten seconds.

≈ 12 min
04

The accessible name

The one string every control has, where it comes from, and the order the browser resolves it in.

≈ 13 min
05

Images, video and audio

Alt text that says the right thing, decorative images, captions and transcripts.

≈ 12 min
06

The keyboard

Tab order, what is reachable, what is a trap, and the shortcut that steals a letter.

≈ 13 min
07

Focus, and where it goes

Visible indicators, :focus-visible, and moving focus when the page changes under you.

≈ 12 min
08

Forms

Labels, grouping, required, and an error message somebody actually hears.

≈ 13 min
09

ARIA, and its five rules

What ARIA does, what it cannot do, and why the first rule is not to use it.

≈ 13 min
10

Custom widgets

Tabs, disclosure and combobox: the roles, the states and the keys each one owes.

≈ 14 min
11

Dialogs and focus traps

The modal done properly: focus in, background inert, escape out, focus back.

≈ 12 min
12

Announcing changes

status, alert and aria-live — telling somebody what happened without interrupting them.

≈ 12 min
13

Contrast and colour

The ratios, what counts as large, non-text contrast, and never colour alone.

≈ 12 min
14

Motion, zoom and targets

prefers-reduced-motion, 200% zoom, reflow at 320px, and a tap target you can hit.

≈ 12 min
15

Testing it

What automated tools catch, what they never will, and a ten-minute manual pass.

≈ 13 min
16

Practice: fix a component

One inaccessible menu, rebuilt until the accessibility tree is right.

≈ 15 min