← a11y-elements

Elements

Every accessibility component, live. Each one enhances real markup authored in this page's template; use the keyboard and a screen reader to see what they add.

<a11y-anchor>

Enhances a real <a href>. New-tab links get rel="noopener noreferrer" and "(opens in new tab)" in their accessible name. Same-page links smooth-scroll, move focus to the target, and announce the jump.

<a11y-avatar>

An avatar image with an initials fallback, shown when there is no src or when the image fails to load. Circle by default, or square.

<a11y-checkbox>

Wraps a real <input type="checkbox"> in a label with a visible label span. Adds an indeterminate state and an onChange callback.

<a11y-focusable>

The escape hatch for an element that can't be a real <button>: role="button", keyboard-focusable, and Enter/Space trigger a real click.

Activate meActivations: 0

<a11y-picture>

Wraps a real <picture>. It hides the image from assistive tech automatically when the image is decorative (empty alt and no caption), as with the second image.

Nutin logo
An informative image with a caption

<a11y-progress>

A progress bar named by its visible label through aria-labelledby.

<a11y-radio-group>

Wraps real radio inputs sharing a name in a fieldset with a legend. The native same-name grouping keeps them mutually exclusive.

<a11y-select>

Wraps a real <select> in a label with a visible label span. The browser's own picker and keyboard handling stay untouched.

<a11y-skeleton>

A loading placeholder shape, with no JavaScript required: circle, text lines, or rect.

<a11y-spinner>

A loading spinner with an accessible label. The last one is scoped to a different color with an inline --a11y-spinner-color custom property.

<a11y-switch>

A real checkbox exposed as role="switch", with the same label wrapping as the checkbox.

<a11y-visually-hidden>

Content present for assistive tech but visually hidden. The icon-only button below is announced as "Delete item".

a11y-elements on GitHub