All components

Content card for resources and digital products

A realistic card for lists of resources, tools, templates or articles: clear hierarchy, badge, meta, a primary button and a small secondary action whose state persists in the DOM.

Card demo

Three variants of the same pattern: resource, tool and template. The save button updates aria-pressed.

Meta CTA State
Guide

Web accessibility basics

An essential checklist for reviewing focus, alt text, contrast and keyboard navigation.

Time
18 min
Level
Beginner
Open resource
Tool

Palette generator

A card built to highlight practical input, immediate output and a clear destination.

Type
Tool
Output
Colors
Open tool
Template

Service landing page

Room for a pitch, a category, key details and a CTA without overloading the card.

Sections
6
Format
Static
View template

Component notes

When to use it

For content grids where title, description, category and action all have to stay readable at a glance.

What it solves

It avoids decorative cards with no hierarchy: every element has a role and the CTA stays predictable.

How to adapt it

Add an image, price, rating or status. The structure holds up well in filtered lists and dashboards too.

How to design accessible, interactive UI cards for the web

Cards are a cornerstone of contemporary web design, used to present information in self-contained, easily scannable blocks. Building cards that are both visually appealing and accessible to people using assistive technology (screen readers, for example) takes particular care. A well-designed card has to establish a clear visual hierarchy and be structured so keyboard focus follows a logical order, avoiding the common problem of fully clickable cards that get in the way of navigation.

This implementation uses a semantic structure built on the <article> tag to denote self-contained content. The main title uses a heading level consistent with the page, while the meta information (reading time or difficulty level, say) is formatted with a description list (<dl>), which is ideal for pairing keys and values semantically. The call to action is an explicit link acting as the card's primary destination.

Secondary interactivity, such as the button that saves or favourites the item, is handled accessibly through a <button> element with the aria-pressed attribute communicating the toggled or saved state (true or false). That ensures screen readers announce the button's state correctly, rather than relying purely on a change of color or icon, for an experience that includes everyone.

Quick FAQ about interactive cards

How does the save button work in the demo?

It uses JavaScript to catch the click and toggle the aria-pressed attribute between true and false. The state is updated dynamically in the DOM and held in the component's own state.

Why not just make the whole card clickable?

Turning the whole card into one large link hurts accessibility: it makes selecting the inner text difficult and confuses screen reader users, who hear the card's entire content read out as the link text. It's better to include a specific focusable link, or to use more advanced JavaScript patterns that handle the click while preserving the semantics.

Can I add images to this card layout?

Yes. Add an <img> tag or a figure element at the top of the <article>, taking care to set a descriptive alt attribute — or to leave it empty if the image is purely decorative.