HomeResources
ResourcesThe Page MethodLevel 2

Features

The Page Method: Level 2 — Features

A Feature is what happens when two or more Level 1 Elements are bonded together to achieve a single purpose. Remove any one element and the feature either breaks or loses meaning — that inseparability is what makes it a Feature and not a collection of parts.

01

Form Features

Form features are the most fundamental — they are the primary mechanism by which users give information to a system. Every one requires a label to be functional and accessible.

Text Inputs
  • Input FieldA labelled single-line text entry
    <label>+<input>

    The atomic form unit. The label announces the field's purpose to all users; the input captures the value. Without the label, a sighted user guesses from context — a screen reader user gets nothing. The pair is indivisible.

  • Textarea FieldA labelled multi-line text entry
    <label>+<textarea>

    Use when a user may need more than one sentence. The label remains essential. Add a character counter (a separate <span> updated via JS) when there is a hard limit — never surprise the user with a truncation.

  • Search InputA text field paired with a submit trigger
    <input>+<button>

    A specialised input + button pair where the action is always search or filter. Use type="search" for native clear behaviour and correct assistive-tech semantics. Wrap in a <form role="search"> for screen reader landmarks.

Choice Inputs
  • Dropdown SelectorA labelled list of predefined options
    <label>+<select>+<option>

    The label identifies the decision being made; the select + options supply the choices. Use for 5–15 mutually exclusive options. Fewer than 5 — prefer radio buttons so all options are visible at once.

  • Radio GroupMutually exclusive options with a shared context label
    <fieldset>+<legend>+<input type='radio'>+<label>

    When the user must pick exactly one option and all options should be visible simultaneously. The fieldset + legend provide the group's name to assistive tech — the legend is announced before each individual radio. Never skip it.

    Billing cycle
  • Checkbox GroupIndependent multi-select options with a shared context label
    <fieldset>+<legend>+<input type='checkbox'>+<label>

    When multiple options can be selected simultaneously and independently. Each checkbox is its own binary choice. The fieldset + legend provide the shared question or context that makes each individual label meaningful.

    Notify me about
02

Action Features

Action features are the bonded units that initiate something — navigation, submission, or a command. The semantic element choice (button vs. anchor) changes how browsers, assistive tech, and search engines understand the action.

Buttons
  • Icon ButtonA button whose intent is clarified by a graphic
    <button>+<svg>

    An icon alone lacks text — it is ambiguous to everyone. Bonding it with a button element that carries an aria-label (for icon-only) or a visible text label ensures the action is understood by all users, including those who cannot see the icon.

  • Confirm / Cancel PairA primary action paired with a destructive escape
    <button>+<button>

    Two buttons bonded by shared context: one confirms the consequence, one cancels it. The pair only makes sense together — showing just the confirm button creates a trap, showing just cancel is meaningless. The distinction in visual weight (primary vs. secondary) communicates relative severity.

Links
  • Icon LinkA navigational anchor with a directional or categorical graphic
    <a>+<svg>

    Pairs an anchor with an icon to communicate direction or destination type (external link, download, back). The icon is decorative — aria-hidden="true" prevents screen readers announcing it twice. The text inside the <a> is the accessible name.

  • BreadcrumbA hierarchical trail of navigation links
    <nav>+<ol>+<li>+<a>

    Tells the user where they are within a hierarchy and gives them one-click access to any ancestor. The <nav aria-label="Breadcrumb"> provides a named landmark. <ol> is correct (not ul) because order is meaningful — it represents a path. The current page is a <span>, not a link.

03

Content Features

Content features bond text, media, and semantics into self-contained units of meaning. Each combination creates something the individual elements alone cannot communicate.

Quotes & References
  • Attributed QuoteA quote bonded with its source
    <blockquote>+<p>+<footer>+<cite>

    A <blockquote> alone conveys that text is quoted — but not from where. The <footer> + <cite> inside it completes the feature: source, author, title, or publication. The <cite> carries the title of the work, not the person's name (names are plain text).

    “A person who does not observe others does not know their own needs either.”

    Don Norman, The Design of Everyday Things
Code
  • Code BlockPreformatted, monospace multi-line code
    <pre>+<code>

    Inline <code> handles single tokens in prose. For multi-line code, wrap in <pre> to preserve whitespace and line breaks. The <pre> is the block container; <code> provides the semantic type. Swap in a syntax-highlighting library without changing the element structure.

    TypeScript
    type Post = {
      slug: string;
      title: string;
      date: string;
    };
Media
  • Captioned ImageAn image bonded with a visible description
    <figure>+<img>+<figcaption>

    The <figure> declares 'this is a self-contained asset'; the <img> provides the visual; the <figcaption> provides context for all users. The figcaption and alt text serve different roles — alt describes what is in the image, figcaption explains why it matters here.

    Image
    Fig. 1 — The information architecture of a typical e-commerce checkout flow, showing four distinct steps.
Timestamps
  • Published TimestampA machine-readable date with human-readable context
    <time>+<span>

    The <time> element encodes the date precisely via datetime; the <span> provides the surrounding label. Together they give screen readers, search engines, and RSS parsers the exact date, while the user sees a friendly format.

    Published·4 min read
04

Feedback Features

Feedback features communicate system state back to the user. Without these, interface actions happen in silence — the user cannot tell if something worked, is working, or failed.

Progress
  • Labelled Progress BarA visual completion indicator with a status label
    <progress>+<label>+<output>

    A <progress> bar alone is unidentified — the label names the task and the <output> shows the current value in text. This trio gives sighted users the visual bar, the context label, and the precise number, while assistive tech can announce all three.

    65%
  • GaugeA scalar measurement within a named range
    <meter>+<label>+<span>

    A <meter> represents current state within a bounded range (unlike progress, which represents completion). The label names what is being measured; the span provides the human-readable value description. The low, high, and optimum attributes drive colour feedback in supporting browsers.

    Disk usage65 GB / 100 GB

    Within normal range — high watermark at 80 GB.

05

Structure Features

Structure features are the scaffolding of data — they make relationships between pieces of information legible. A list or table element on its own holds one cell; these features create the full context needed to understand it.

Lists
  • Descriptive ListTerms paired with their definitions
    <dl>+<dt>+<dd>

    The description list is the correct semantic structure for key–value data — metadata panels, glossary entries, specification tables, FAQ pages. <dt> is the term; <dd> is its value. One <dt> can have multiple <dd> children.

    Category
    Interaction Design
    Read time
    4 min
    Published
    March 10, 2026
    Level
    Intermediate
Tables
  • Data TableRows and columns with labelled headers
    <table>+<thead>+<tbody>+<th scope='col'>+<tr>+<td>

    Tables convey two-dimensional relationships — every data cell has both a row and a column identity. Without <th scope> headers, a screen reader reaches a cell and has no idea what it means. thead + tbody is required for correct reading order and print formatting.

    ComponentStatusVersionOwner
    ButtonStable3.2.0Design Systems
    ModalReview2.1.0Interaction
    DataTableDraft0.9.0Design Systems
    ToastStable1.4.0Engineering