Navigation & Interaction

Keyboard access

  • All functionality must be accessible via keyboard
  • No keyboard trap - users must be able to navigate away from any element using keyboard alone
  • Provide keyboard shortcuts for common actions
  • Make sure Tab key order is logical and follows the visual order

Additional resources:

SC 2.1.1 Level A

Focus visible

  • Ensure keyboard focus is always visible
  • Do not remove the default outline style using CSS unless replacing it with another clear indicator
  • Focus indicator must have a contrast ratio of at least 3:1 against adjacent colors
  • The focus indicator area should be at least 3px

Additional resources:

SC 2.4.7 Level AA

Focus order

  • The focus order should match the visual reading order
  • Use HTML semantic structure to determine focus order
  • Avoid using positive tabindex values as it breaks the logical tab order
  • Test with keyboard navigation to ensure the tab order is logical
SC 2.4.3 Level A

Target size

  • Interactive elements should be at least 44 by 44 CSS pixels in size
  • This includes buttons, links, and form controls
  • Provides better usability for users with motor control difficulties and touch device users

Additional resources:

SC 2.5.5 Level AAA

Link purpose

  • The purpose of every link must be clear from the link text alone or from the surrounding context
  • Avoid generic link text like "click here" or "more"
  • Use descriptive link text that indicates where the link goes
  • For icon-only links, provide an aria-label

Additional resources:

SC 2.4.9 Level AAA

Gesture and motion

  • Do not rely solely on gestures for functionality
  • Provide alternatives to gesture-based controls
  • Ensure that device orientation is not required - provide both portrait and landscape modes
  • Avoid triggering actions on device tilt or shake
SC 2.5.1 Level A

Name, role, and state

  • All user interface components must have a name that describes their purpose
  • The role of each component must be clear (button, link, checkbox, etc.)
  • The state of interactive components must be programmatically determinable
  • Use semantic HTML and ARIA attributes to provide this information

Additional resources:

SC 4.1.2 Level A