HomeResources
ResourcesThe Page MethodLevel 1

Elements

The Page Method: Level 1 — HTML Elements

In The Page Method, an Element is the smallest physical building block. In web development, these map directly to individual HTML tags in their natural state. Each preview shows the element in the site’s design system — toggle to Raw to see it with no CSS classes applied.

01

Interaction Elements

Buttons
  • <button>Standard action

    Use for any action that does not navigate to another location — submitting forms, opening dialogs, toggling state. Keyboard accessible by default. Never replace with a styled <div> or <span>.

  • <input type="submit">Form submission

    The default form submission trigger inside a <form>. Functionally identical to <button type="submit"> but the label is the value attribute, not inner content.

Links
  • <a>A clickable destination or anchor

    Use whenever the result of an interaction is navigating to a URL, a page anchor, or an external resource. The rule: if it takes you somewhere, use <a>. If it does something, use <button>.

Selection
  • <input type="checkbox">Multiple choice

    Allow independent on/off selection for each option. Each checkbox is a separate binary choice. Always pair with a <label> and group related checkboxes inside a <fieldset>.

  • <input type="radio">Single choice

    Enforce a single selection from a mutually exclusive set. All radios sharing the same name attribute form a group — selecting one deselects the others. Always group with <fieldset>.

Ranges
  • <input type="range">A physical slider for values

    Best when relative position matters more than a precise number — volume, brightness, budget sliders. Pair with a visible readout so the current value is always clear.

    065100
02

Text & Content Elements

Headings
  • <h1>Structural title — top level

    The primary heading of the page. One per page only. Describes the main topic and forms the root of the document outline. Screen readers and search engines give it the highest weight.

    Design principles that last

  • <h2>Structural title — second level

    The primary section heading. Use to divide the main page content into named regions. Multiple <h2>s on a page is correct and expected.

    Understanding the user

  • <h3>Structural title — third level

    A sub-section heading inside an <h2> section. Use to break a long section into scannable named subsections.

    Cognitive load in interfaces

  • <h4>Structural title — fourth level

    Rarely needed outside of deeply structured documents. If you reach h4 regularly, consider whether your content hierarchy is too deep.

    Attention and visual hierarchy

  • <h5>Structural title — fifth level

    Typically only found in deeply nested document structures like technical specs or legal documents. Prefer flatter structures in most UIs.

    Focus state requirements
  • <h6>Structural title — sixth level

    The smallest semantic heading. In practice, reaching h6 usually indicates the content should be restructured or split. Can work well styled as an uppercase label.

    Further reading
Body Text
  • <p>Paragraph

    The default block container for prose. Every standalone sentence or paragraph of body copy belongs in a <p>. Never simulate paragraphs with <br> pairs or naked <div>s.

    Good design is as much about what you leave out as what you put in. Clarity emerges from constraint, not addition.

  • <blockquote>A standalone quote

    A section of content quoted from another source. Should contain the quoted text (often in a <p>) and ideally a <cite> for attribution. Not valid for general callouts with no source.

    “The best interfaces are the ones you don’t notice.”

    The Design of Everyday Things
Specific Text
  • <span>A generic text string

    An inline container with no semantic meaning. Use it when you need to target a substring for styling or scripting and no other semantic element applies. Avoid overusing it — prefer meaningful tags.

    Reviewed by Jane Smith on March 10, 2026.

  • <strong>Bolded importance

    Marks content as having strong importance, urgency, or seriousness — content the user must not miss. Renders bold by default. Choose based on meaning, not appearance; use CSS font-weight if you just want visual bold.

    Save your work before closing. This action cannot be undone.

  • <em>Italicised emphasis

    Stress emphasis that changes the meaning of the sentence — the word you would stress if speaking aloud. Renders italic. If you want italic for stylistic reasons only, use CSS font-style.

    Anyone can make a button. Designing one correctly takes care.

  • <mark>Highlighted text

    Highlights text relevant to the user's current context — a search term match, an annotation, or a passage of active interest. Not for general emphasis; that's <strong> or <em>.

    Results for “contrast ratio”: ensure your contrast ratio meets WCAG AA.

Technical Data
  • <time>Dates / Times

    Encodes a date, time, or duration in machine-readable form via the datetime attribute. The visible content can be any human-friendly format. Allows browsers, search engines, and assistive tech to interpret temporal data precisely.

    Published  · 4 min read

  • <code>Computer code

    Inline computer code, file paths, command-line input, or technical identifiers. Always use for any monospace technical content within prose. For multi-line code blocks, wrap in <pre><code>.

    Set display: flex on the parent, then add gap-4 for spacing.

  • <cite>A reference title

    Marks the title of a cited creative or intellectual work — a book, article, film, website. Not used for the author's name. Renders italic by default.

    As documented in Designing with the Mind in Mind by Jeff Johnson.

  • <sub>Subscript

    Typographic subscript — positioned below the baseline at a smaller size. Use for chemical formulas (H₂O), mathematical notation, and footnote markers.

    Water is H2O.  Carbon dioxide is CO2.

  • <sup>Superscript

    Typographic superscript — positioned above the baseline at a smaller size. Use for exponents (x²), footnote references, and ordinals (1ˢᵗ, 2ⁿᵈ).

    E = mc2 — mass–energy equivalence.

Visual Breaks
  • <hr>A horizontal dividing line

    A semantic thematic break — signals a shift in topic or scene within a section, not a decorative line. If the divider carries no structural meaning, use a CSS border. <hr> communicates to assistive tech that topics change.

    Section A content ends here.


    Section B content begins here.

  • <br>A physical line break

    A single line break within a block of text. Use only where the break is part of the content itself — addresses, verse, code samples. Never use <br> pairs to create spacing between elements; that's what margin is for.

    Jon Frelund
    Senior UX Engineer
    Copenhagen, Denmark
03

Form & Data Entry Elements

Input Fields
  • <input type="text">Plain text

    The baseline single-line text input. Always prefer a more specific type (email, tel, number) when the format is known — specific types give native keyboard optimisation and built-in validation.

  • <input type="email">Email address

    Validates the presence of an @ sign on submit and triggers the email keyboard on mobile. Use whenever collecting an email address.

  • <input type="password">Hidden characters

    Masks characters as the user types. Browsers may offer a built-in password manager prompt automatically. Support autocomplete="current-password" or autocomplete="new-password" to help password managers.

  • <input type="number">Numeric value

    A numeric input with increment/decrement stepper controls. Best for short integers like quantities or ages. For credit card numbers, postal codes, or phone numbers, use type="text" with inputmode="numeric" to preserve formatting.

    Quantity
  • <input type="tel">Telephone number

    Does not validate phone format (formats vary globally), but activates the telephone keypad on mobile. Use autocomplete="tel" for autofill support. Display a pattern hint via placeholder.

  • <input type="date">Date picker

    Renders the browser's native date picker. The datetime value is standardised to YYYY-MM-DD regardless of locale. Browser implementations vary significantly in appearance — consider a custom component for cross-platform consistency.

Large Text
  • <textarea>A multi-line box for long text

    Use whenever a user might need more than one sentence — messages, descriptions, feedback. Resizable by default; control with CSS resize property. Set rows to hint at expected length.

Selection
  • <select>The dropdown container

    A native dropdown of predefined choices. Best for 5–15 options. Fewer choices suit radio buttons; larger sets benefit from a searchable combobox pattern. Avoid when options are unknown until runtime.

  • <option>The individual choice within a list

    A single selectable item inside a <select> or <datalist>. The value attribute is what gets submitted with the form; the inner text is what the user sees. Can be grouped with <optgroup>.

    Shown as items inside <select> above.

Labels
  • <label>The text that identifies an input

    Associates visible text with a form control via for/id pairing, or by wrapping the control directly. Clicking the label activates the input. Never omit — it is a hard accessibility requirement.

Status Indicators
  • <progress>A visual bar

    Represents task completion. A value attribute between 0 and max renders a filled bar. Omitting value creates an indeterminate state — an animated loading indicator. Use for uploads, multi-step flows, or loading.

    Uploaded65%
  • <meter>A gauge for a range

    A scalar measurement within a known range — disk usage, battery level, a score. Unlike <progress>, it represents a current state, not a task. The low, high, and optimum attributes drive colour changes in supporting browsers.

    Disk usage0.65 / 1.0
Grouping
  • <fieldset>A physical box around a group

    Groups related form controls under a shared context. Required when grouping radio buttons or checkboxes — screen readers announce the legend before each control inside the group, providing essential context.

    Notification preferences
  • <legend>The title for that box

    The visible caption for a <fieldset>. Must be its first child. Screen readers announce the legend before each individual control inside the group, making it a critical accessibility anchor.

    Shown as the caption inside <fieldset> above.

04

Visual & Media Elements

Graphics
  • <img>A picture

    Embeds a raster image. The alt attribute is required — describe the image content for screen readers, or use alt="" for purely decorative images. Use width and height to prevent layout shift during load.

    Requires src
    <img src="…" alt="Description" />
  • <svg>A vector graphic

    Inline scalable vector graphics. Resolution-independent and CSS-styleable. Add aria-label or an inner <title> for accessibility. Preferred over <img> for icons, logos, and illustrations that need theming or animation.

Multimedia
  • <video>A moving picture

    Embeds a video player. Use multiple <source> children for format fallbacks (mp4, webm). Add controls for native UI. Include a <track kind="captions"> for accessibility. Set muted autoplay loop for ambient/background video.

    Requires a video source
  • <audio>Sound player

    Embeds an audio player. The controls attribute reveals the browser's native playback UI. Use <source> for multiple format fallbacks. Without controls and autoplay it is completely invisible.

    1:24
  • <canvas>A drawing area

    A pixel-based scriptable drawing surface. Draws nothing without JavaScript. Use for dynamic charts, game rendering, image manipulation, and real-time data visualisation. Not accessible by default — add a text fallback inside the opening/closing tags.

    Populated via JS
Embedded Content
  • <iframe>An external page inside yours

    Embeds a completely separate HTML document in a frame. Used for maps, payment forms, and third-party widgets. Always set a restrictive sandbox attribute to reduce XSS risk. Consider content security policy headers alongside.

    Embeds an external URL
Media Wrappers
  • <figure>The container for an asset

    A self-contained content block — an image, chart, code snippet, or table — referenced from the surrounding text. Semantically separates the asset from the flow without breaking meaning. Can be moved in the doc without breaking context.

    Fig. 1 — A caption describing the image above
  • <figcaption>The text description for an asset

    The visible caption for a <figure>. Must be either the first or last child. Supplements, does not duplicate, the alt text of any image inside — alt is for screen readers, figcaption is for all users.

    Shown as the caption inside <figure> above.

05

List & Table Elements

Lists
  • <li>A single item in a list

    Must be a direct child of <ul> (unordered), <ol> (ordered), or <menu>. The parent element determines the visual marker and semantic meaning — bullets vs. numbers vs. interactive commands.

    Unordered <ul>

    • Understand context before designing
    • Prototype early and often
    • Test with real users

    Ordered <ol>

    1. 1Define the problem
    2. 2Explore the solution space
    3. 3Validate with data
Tables
  • <td>A single cell of data

    A standard data cell in a table row. Can span multiple columns or rows via colspan and rowspan. Pair with <th> headers so screen readers can announce the column and row context for each cell.

    AccessibilityWCAG 2.2 AAPass
    PerformanceCore Web VitalsReview
  • <th>A cell containing a header

    A header cell for a column or row. The scope attribute (col, row, colgroup, rowgroup) tells assistive technology which data cells this header labels. Required for accessible data tables — screen readers announce the header before each cell.

    ComponentStatusOwner
    ButtonStableDesign Systems
    ModalReviewInteraction
    TableDraftDesign Systems

The Rule: If you delete one part of an Element — like the text inside a button or the source of an image — it stops working or loses all meaning.