Interfaces everyone can use.
WHAT TO START FROM
Native elements, which provide behaviour and semantics already.
WHY
A button built from a generic container requires you to reimplement keyboard handling, focus and announcement, and most implementations are incomplete.
WHAT EVERY INTERACTIVE ELEMENT NEEDS
Keyboard operability A visible focus indicator An accessible name A conveyed role and state
WHAT TO NEVER DO
Remove the focus indicator.
WHAT TO DO INSTEAD
Replace it with something better.
WHAT TO ANNOUNCE
Content that changes without a page load: errors, confirmations, updated results.
WHY
Otherwise a non-visual user has no indication anything happened.
WHAT MANAGING FOCUS MEANS
Moving focus deliberately when the interface changes: into a dialog on opening, back on closing.
WHAT TO TEST
Navigating the whole interface by keyboard alone Listening to a page with a screen reader Increasing text size substantially Viewing in greyscale
WHAT AUTOMATED TOOLS FIND
Missing names, contrast failures, structural problems.
WHAT THEY DO NOT
Whether it is actually usable.