Kelly Mears

Keyboard Navigation

Making every interactive affordance reachable and operable without a pointer.

Design & Interface2 min read206 words15 out · 33 in
also calledKeyboard access

Keyboard navigation is the requirement that everything doable with a pointer be doable from the keyboard. It serves people who cannot use a mouse, people using screen readers, and — not incidentally — anyone who prefers to keep their hands on the keys.

The baseline is that focus order follows a sensible reading order, every interactive element is reachable by Tab, the focused element is visibly focused, and standard keys do standard things: Enter and Space activate, Escape dismisses, arrow keys move within a composite widget like a menu or a radio group.

That last distinction is the one most often missed. Within a composite, Tab should move to the widget and arrow keys should move inside it — a menu with ten items should not require ten tab presses to pass. Getting this right is most of what Headless Component libraries provide.

Two design notes worth holding onto. A scrollable region containing nothing focusable is unreachable by keyboard and needs to be made focusable explicitly — a real failure that is invisible until something frames the region at a height that scrolls. And custom shortcuts should be discoverable and non-conflicting; single-letter accelerators are pleasant in a focused application and hostile anywhere text can be typed.

See also14

Focus Trap

Confining keyboard focus inside a modal surface so it cannot wander behind it.

Design & Interface13 connections

Focus Management

Deliberately controlling which element receives keyboard focus as an interface changes.

Design & Interface28 connections

Accessibility

Designing so that people with disabilities can use a thing, and the standards that make it checkable.

Design & Interface44 connections

Semantic HTML

Using elements for their meaning, so the document conveys structure without extra description.

Design & Interface24 connections

Terminal User Interface

An interface rendered as text in a terminal, and the design conventions that make command-line tools humane.

Graphics & Rendering16 connections

ARIA

Attributes that describe roles, states, and relationships to assistive technology when HTML cannot.

Design & Interface31 connections

Portal

Rendering an element into a different part of the document than its logical parent.

Web Platform18 connections

Document Object Model

The live tree of objects a browser builds from a document, and the surface every UI framework writes to.

Web Platform27 connections

Context Menu

A menu of actions for the thing under the pointer, opened by right-click or long press, which saves travel and narrows choices but is invisible until summoned, so it should never be the only route to an action.

Design & Interface12 connections

Direct Manipulation

Ben Shneiderman's 1983 name for interfaces where people act on visible objects with immediate, reversible feedback, such as dragging a file or resizing a shape, instead of typing commands that describe the change.

Design & Interface14 connections

Accordion

A stack of headings that each expand to reveal a section of content, saving space on long pages and small screens at the cost of hiding what readers might have needed to see.

Design & Interface12 connections

Tiling Window Manager

A window manager that arranges windows automatically into non-overlapping tiles and is driven mainly from the keyboard, trading freeform placement for zero layout effort.

Design & Interface11 connections

Data Table

Rows and columns of values designed for looking things up and comparing exact figures, which read best with right-aligned numbers, light rules, and headers that stay put, and remain one of the hardest components to make work on a phone.

Design & Interface11 connections

Carousel

A panel that rotates through several slides in one spot, popular on home pages as a way to give everyone's content top billing, and notorious for low engagement and accessibility problems.

Design & Interface10 connections

Linked from33