Card

Cards contain content and actions about a single subject.

Maturity level - ready for production

View the React component implementation details and all variants in Storybook.


About this component

A card is often a subset or summary of a larger idea. It acts as an entry point to more detailed information. This summary can contain a variety of content types, such as text, images and multimedia, or buttons and links. An individual card is typically a member of a collection of similar cards, not a single card in isolation. A card is distinguished from others in its collection by its content, and cards are distinguished from the broader page context in form — usually with a border or a shadow. Finally, a card is modular, which means you can vary the order of cards in a collection without destroying any individual card’s meaning.


Component examples

Default


Guidance

When to use the card component

  • Collections of related content. Cards help present a collection of related groups of content, like articles or sections of a website.

When to consider something else

  • Tabular data. Don’t use a card as a substitute for a table row.
  • Simple calls to action. Use a button instead.
  • Standalone content. Consider an aside or another standalone element.
  • Sequential, continuous text. Cards should be self-contained and modular. If the reader is meant to read from card to card, consider a list or simple body text and headings.

Usability guidance

  • Make cards actionable.Since cards are used as a summary of more detailed information, any individual card should link out to that information.
  • Don’t use the card component only for decoration. Use the card component for cards, not for any type of content that’s designed to have a border around it.
  • Include non-redundant content. Don’t repeat images or content common to all or most cards in a collection. Repeated information (like using the same image for each card in a collection) makes it more difficult to distinguish cards from one another.
  • Make sure images are properly sized. Cards often change size depending on the device. Make sure you use an image that works well on any device at any size.
  • Use simple styling. Avoid distracting skeumorphism. Don’t include any card styling that calls too much attention to the metaphor of a paper card, like folds, bent edges, or paper texture.

Accessibility

  • Use unordered lists and list items. Use a ul for a card group and an li for each card. This formatting allows screen readers to enumerate the items in the card group and allows shortcuts between list items.
  • Use the appropriate heading level for your page. Update heading level based on the content of your page to make sure card headings are in the correct, logical outline order.</li>
  • Use CSS to order the media element. Logically, the media element should follow the header element. Don’t re-organize the markup to reverse their order.

Using the card component

  • Control card size and layout with grid utilities. The usa-card-group block is functionally a wrap-able grid-row, and each individual usa-card is a grid-col. This circumstance means you can use a grid utility like tablet:grid-col-4 to set a four-column size on a card at tablet width. You can also set custom grid gaps on a usa-card-group using grid-gap utilities. Since the Design System grid is based on flexbox, you can use flex positioning utilities on the card group. The default alignment is stretch (stretch aligns the top and bottom of each card in a row), but the flex-align-start utility can set the alignment to the top of the row.
  • Control image aspect ratio with the add-aspect utility. Add aspect ratio utility classes to usa-card__img or usa-card__media elements to control the aspect ratio on card images. Alternatively, control aspect ratio in your Sass files via the add-aspect() mixin.
  • Style cards with utilities. Style the usa-card__container element with utilities to achieve custom effects, such as changing the border or background color or adding a drop shadow.

Card variants

Variant Description

.usa-card--flag

Display in a horizontal (“flag”) orientation at a specified width.

.usa-card--header-first

Displays the header element before the media element.

.usa-card--media-right

In combination with '.usa-card--flag', sets the media element on the right. (Flag cards display media on the left by default.)

.usa-card__media--inset

Indents the media element so it doesn’t extend to the edge of the card.

.usa-card__media--exdent

Extends the media element out over the card border. Useful for light-bordered cards.

.usa-card__body--exdent

Extends the body element out over the card border. Useful for light-bordered cards.

.usa-card__footer--exdent

Extends the footer element out over the card border. Useful for light-bordered cards.


External References

For the immediate future, please use the react or web components provided by the VA Design System.

For usage and accessibility guidelines please refer to the USWDS.