Files
maddiedreese_figma/references/accessibility-guidelines.md

12 KiB

Accessibility Guidelines for Figma Design

Comprehensive WCAG compliance guide and accessibility best practices for inclusive design.

WCAG 2.1 Compliance Levels

Level A (Minimum)

Basic web accessibility features that should be present in all designs.

Level AA (Standard)

Recommended level for most websites and applications. Removes major barriers to accessing content.

Level AAA (Enhanced)

Highest level, required for specialized contexts but not recommended as general policy.

Focus on AA compliance - this covers the vast majority of accessibility needs without excessive constraints.

Color and Visual Accessibility

Color Contrast Requirements

WCAG AA Standards

  • Normal text: 4.5:1 contrast ratio minimum
  • Large text (18pt+ or 14pt+ bold): 3:1 contrast ratio minimum
  • UI components: 3:1 contrast ratio for borders, icons, form controls
  • Graphics: 3:1 contrast ratio for meaningful graphics

WCAG AAA Standards (Enhanced)

  • Normal text: 7:1 contrast ratio
  • Large text: 4.5:1 contrast ratio

Testing Tools in Figma

  • Stark plugin: Real-time contrast checking
  • Color Oracle: Color blindness simulation
  • WebAIM contrast checker: External validation

Color Usage Guidelines

Don't Rely on Color Alone

❌ Bad: "Click the green button to continue"
✅ Good: "Click the 'Continue' button (green) to proceed"
  • Use icons, text labels, or patterns alongside color
  • Ensure information is conveyed through multiple visual cues
  • Test designs in grayscale to verify information accessibility

Color Blindness Considerations

  • Red-green color blindness affects ~8% of men, ~0.5% of women
  • Blue-yellow color blindness is less common but still significant
  • Use tools like Colorblinding or Stark to test your designs
  • Consider using shapes, patterns, or positions as additional indicators

Typography Accessibility

Font Size Guidelines

  • Minimum body text: 16px (12pt) for web
  • Minimum mobile text: 16px (prevents zoom on iOS)
  • Large text threshold: 18pt (24px) regular, 14pt (18.7px) bold
  • Line height: 1.5x font size minimum for body text
  • Paragraph spacing: At least 1.5x line height

Font Choice

  • Sans-serif fonts generally more readable on screens
  • Avoid decorative fonts for body text
  • System fonts ensure consistency and performance
  • Web-safe fonts for broader compatibility

Text Layout

  • Line length: 45-75 characters for optimal readability
  • Left alignment for left-to-right languages
  • Adequate spacing between letters, words, lines, paragraphs
  • Avoid justified text which can create awkward spacing

Interactive Element Accessibility

Touch and Click Targets

Size Requirements

  • Minimum size: 44x44px (iOS/Material Design standard)
  • Recommended size: 48x48px for better usability
  • Spacing: At least 8px between adjacent targets
  • Mobile considerations: Thumb-friendly zones, easy reach

Visual Feedback

  • Hover states: Clear indication of interactive elements
  • Active states: Immediate feedback on interaction
  • Disabled states: Clearly distinguish non-functional elements
  • Loading states: Show progress for time-consuming actions

Focus Management

Focus Indicators

  • Visible focus: Clear outline or background change
  • High contrast: Focus indicator must have 3:1 contrast ratio
  • Consistent style: Same focus treatment across the interface
  • Never remove focus indicators without providing alternative

Focus Order

  • Logical sequence: Follow visual layout and reading order
  • Tab navigation: All interactive elements reachable via keyboard
  • Skip links: Allow bypassing repetitive navigation
  • Focus traps: Keep focus within modals/dialogs when open

Form Accessibility

Label Requirements

  • All inputs must have labels: Use explicit labels, not just placeholders
  • Required field indicators: Clear marking of mandatory fields
  • Group related fields: Use fieldsets and legends for grouped inputs
  • Help text: Provide guidance when needed

Error Handling

❌ Bad: Red border with no explanation
✅ Good: "Email address is required" with clear visual indicator
  • Specific error messages: Explain what's wrong and how to fix it
  • Error summaries: List all errors at top of form for screen readers
  • Inline validation: Real-time feedback where helpful
  • Success confirmation: Confirm successful form submissions

Form Layout

  • Single column layouts: Easier to navigate and complete
  • Logical grouping: Related fields grouped together
  • Progress indicators: Show steps in multi-step forms
  • Clear submission: Make it obvious how to submit the form

Content Structure and Navigation

Heading Hierarchy

Proper Heading Structure

H1 - Page title (one per page)
├── H2 - Main sections
│   ├── H3 - Subsections
│   │   └── H4 - Sub-subsections
│   └── H3 - Another subsection
└── H2 - Another main section
  • Don't skip levels: H1 → H2 → H3, never H1 → H3
  • Use headings for structure: Not just for visual styling
  • One H1 per page: Primary page title only
❌ Bad: "Click here for more information"
✅ Good: "Read our complete accessibility guide"
  • Descriptive link text: Explains where the link leads
  • Context independence: Should make sense when read alone
  • Unique link text: Different destinations need different text
  • External link indicators: Show when links lead off-site

Navigation Patterns

  • Skip to main content: Bypass repetitive navigation
  • Skip to search: Quick access to search functionality
  • Keyboard users: Essential for efficient navigation
  • Hidden until focused: Don't clutter visual design

Breadcrumbs

  • Show location: Help users understand where they are
  • Provide navigation: Easy way to move up the hierarchy
  • Current page: Don't make current page a link
  • Separator clarity: Use > or / with proper ARIA labels

Images and Media

Image Accessibility

Alt Text Guidelines

  • Decorative images: Use empty alt attribute (alt="")
  • Informative images: Describe the information conveyed
  • Functional images: Describe the action/function
  • Complex images: Provide detailed description nearby

Alt Text Examples

❌ Bad: alt="image"
❌ Bad: alt="photo.jpg"  
✅ Good: alt="Bar chart showing 40% increase in sales"
✅ Good: alt="Submit form" (for submit button image)
✅ Good: alt="" (for purely decorative images)

Video and Audio

Video Accessibility

  • Captions: For all spoken content
  • Audio descriptions: For visual content not described in audio
  • Transcript: Full text version of audio content
  • Player controls: Accessible play/pause/volume controls

Audio Accessibility

  • Transcripts: For all audio content
  • Auto-play restrictions: Avoid auto-playing audio
  • Volume controls: User control over audio levels
  • Visual indicators: Show when audio is playing

Mobile Accessibility

Touch Interface Guidelines

Gesture Support

  • Single-tap primary: Main interaction method
  • Alternative access: Provide alternatives to complex gestures
  • Gesture hints: Teach users about available gestures
  • Gesture conflicts: Avoid conflicts with system gestures

Mobile-Specific Considerations

  • Orientation support: Work in both portrait and landscape
  • Zoom support: Allow pinch-to-zoom for text content
  • Motion sensitivity: Respect reduced motion preferences
  • One-handed use: Design for thumb navigation

Screen Reader Support

iOS VoiceOver

  • Element labeling: Provide clear, descriptive labels
  • Navigation order: Logical focus sequence
  • Custom actions: Define available actions for elements
  • Notifications: Use announcements for dynamic changes

Android TalkBack

  • Content descriptions: Equivalent to alt text for UI elements
  • Clickable indicators: Mark interactive elements properly
  • Live regions: Announce dynamic content changes
  • Semantic markup: Use proper HTML/accessibility semantics

Testing and Validation

Automated Testing Tools

Figma Plugins

  • Stark: Comprehensive accessibility checker
  • Color Blind Web Page Filter: Color blindness simulation
  • Able: Color contrast and font size checker
  • A11y - Color Contrast Checker: Quick contrast validation

External Tools

  • WebAIM WAVE: Web accessibility evaluation
  • axe DevTools: Automated accessibility testing
  • Lighthouse: Google's accessibility auditing
  • Pa11y: Command-line accessibility testing

Manual Testing Methods

Keyboard Testing

  1. Tab navigation: Can you reach all interactive elements?
  2. Enter/Space activation: Do buttons and links work?
  3. Arrow key navigation: Works in menus and lists?
  4. Escape key: Closes modals and menus?

Screen Reader Testing

  1. VoiceOver (Mac): System Preferences → Accessibility → VoiceOver
  2. NVDA (Windows): Free screen reader for testing
  3. JAWS (Windows): Professional screen reader
  4. TalkBack (Android): Built-in Android screen reader

Visual Testing

  1. Zoom to 200%: Content should remain usable
  2. Grayscale mode: Information still accessible?
  3. High contrast mode: Text and UI still visible?
  4. Color blindness simulation: Information still clear?

User Testing

Include Users with Disabilities

  • Recruit diverse participants: Different disabilities and assistive technologies
  • Test with real users: Automated tools can't catch everything
  • Observe natural usage: Don't guide too much during testing
  • Iterate based on feedback: Accessibility is an ongoing process

Testing Scenarios

  • First-time usage: Can new users complete key tasks?
  • Error recovery: What happens when things go wrong?
  • Complex workflows: Multi-step processes accessible?
  • Different contexts: Various devices, environments, capabilities

Implementation Guidelines

Designer Handoff

Accessibility Annotations

  • Alt text specifications: Document all image alt text
  • Focus order notes: Specify tab sequence where non-obvious
  • Heading levels: Mark proper heading hierarchy
  • Color contrast values: Include specific contrast ratios
  • Interactive states: Document all hover/focus/active states

Component Documentation

  • Accessibility features: Built-in accessibility considerations
  • Usage guidelines: When and how to use accessibly
  • ARIA patterns: Required ARIA attributes and roles
  • Keyboard interactions: Expected keyboard behavior

Design System Integration

Accessible Components

  • Design once, use everywhere: Build accessibility into components
  • Default accessibility: Make accessible the easy choice
  • Clear documentation: Accessibility requirements in design system
  • Regular audits: Review and update component accessibility

Style Guidelines

  • Color palettes: Pre-tested for contrast ratios
  • Typography scales: Meet minimum size requirements
  • Spacing systems: Ensure adequate touch targets
  • Icon libraries: Include alt text recommendations

Relevant Laws and Standards

United States

  • ADA (Americans with Disabilities Act): Civil rights law
  • Section 508: Federal agency accessibility requirements
  • WCAG 2.1: Technical standard referenced by many laws

International

  • EN 301 549 (European Union): European accessibility standard
  • AODA (Ontario): Accessibility for Ontarians with Disabilities Act
  • DDA (Australia): Disability Discrimination Act

Risk Mitigation

  • Legal compliance: Following WCAG AA reduces legal risk
  • Documentation: Keep records of accessibility efforts
  • Regular audits: Ongoing compliance checking
  • User feedback: Channels for reporting accessibility issues

Resources and Tools

Essential Resources

  • WCAG 2.1 Guidelines: Official W3C accessibility standard
  • WebAIM: Practical accessibility guidance and tools
  • A11y Project: Community-driven accessibility resources
  • Inclusive Design Principles: Microsoft's inclusive design guide

Figma-Specific Resources

  • Figma Accessibility Guide: Official Figma accessibility documentation
  • Accessible Design Systems: Examples of accessible component libraries
  • Plugin Directory: Accessibility-focused Figma plugins
  • Community Resources: Accessibility templates and examples