← All criteria
2.1.1Level AWCAG 2.0Auto-fix: Partial

Keyboard

All page functionality must be operable through a keyboard interface, without requiring specific timings for individual keystrokes.

What it requires

Every interactive element on the page — links, buttons, dropdowns, modals, sliders, tabs, accordions — must be reachable and operable using only the keyboard. The required interaction model is platform-conventional: Tab to move focus, Shift+Tab to move backwards, Enter to activate links, Enter or Space to activate buttons, Arrow keys for radios and tabs, Escape to close modals.

The most common failure is interactive elements built from `<div>` or `<span>` without `tabindex="0"` and without a keyboard event handler. The element looks clickable but cannot receive focus.

Common Shopify failure

Image carousels with custom previous/next arrows implemented as `<div>` with `onclick` handlers — keyboard users cannot reach them. Variant pickers built from styled `<div>` swatches without role or tabindex.

How to fix it

Replace `<div onclick>` patterns with `<button type="button">`. For custom widgets that genuinely need a non-button host, add `role="button" tabindex="0"` and a keyboard event handler that responds to Enter and Space.

Merchant QA checklist

  • Scan the storefront page where this pattern appears: product pages, collection pages, cart drawer, customer-account pages, and any landing page built with theme sections.
  • Confirm the issue is fixed in the rendered browser output, not only in the Liquid file. Shopify section settings, app blocks, and third-party scripts can reintroduce the same 2.1.1 failure after a theme edit.
  • Re-test the affected component with keyboard navigation and a screen-reader accessibility tree before publishing the theme, especially when the fix changes markup or ARIA attributes.

How AccessComply handles it

AccessComply treats WCAG 2.1.1 as a rendered-storefront issue first. The scanner checks the live DOM and computed styles, maps the finding back to the Shopify theme file that produced it, then classifies the fix as a guided partial fix. When automation is safe, the app writes the smallest theme-code change needed and keeps the original theme backup available. When merchant judgment is required, the issue is surfaced for manual review instead of pretending the page is fixed.

Primary source: W3C — WCAG 2.0 Understanding 2.1.1