Team Member Card Grid — Free HTML CSS Responsive About Page Snippet

Team Member Card Grid · Cards · Plain HTML, CSS & JS · Live preview

Share & Support

What's included

Features

Colored initials avatars need zero image assets — perfect for prototypes or placeholder content
Responsive grid via auto-fit and minmax handles any screen size with no media queries
Drop-in upgrade path from initials avatar to a real photo with no layout changes
Inline SVG social icons for LinkedIn, Twitter, GitHub, and Dribbble — no icon font needed
Hover lift and shadow on each card adds tactile, interactive-feeling polish
aria-label on every icon-only social link keeps them accessible to screen readers
Each card's accent color is set independently, giving the grid visual variety
Works with any number of team members — the grid reflows automatically
Easy to template from a CMS or API by generating the same markup structure per member
No framework, no avatar/image library, no build step required

About this UI Snippet

Team Member Card Grid — HTML & CSS About Page Snippet

Screenshot of the Team Member Card Grid snippet rendered live

Every "About" or "Team" page needs a way to show who's behind the company, but real headshot photography isn't always available at build time — especially for placeholders, prototypes, or early-stage products. A colored circular avatar with the person's initials is a clean, widely-used substitute that requires zero image assets.

This snippet builds a fully responsive team grid in plain HTML and CSS, with no JavaScript needed for the static version.

How the initials avatar works

Each .avatar div is just a fixed-size circle (border-radius: 50%) with flexbox centering its text content — the person's two initials, set directly in the HTML. The background color is set inline per card via style="background: #6366f1" (or any hex value), giving each team member a distinct, recognizable color without needing a photo. Swapping in a real <img> later is a drop-in replacement: just replace the avatar div's content and background with an image tag sized to the same 64px circle.

How the responsive grid works

The grid container uses grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)). auto-fit tells the grid to fit as many 180px-or-wider columns as will comfortably fit in the available width, and 1fr lets those columns stretch to fill any remaining space evenly. This single line handles every screen size — four columns on a wide desktop, two on a tablet, one on a narrow phone — with no media queries needed at all.

The hover lift effect

Each card lifts slightly (translateY(-4px)) and gains a deeper shadow on :hover, a small bit of tactile feedback that also subtly implies the card is interactive (useful if you later make the card link to a full bio page).

The social icon row

Each card ends with a row of small circular icon links using inline SVG logos (LinkedIn, Twitter, GitHub, Dribbble) — no icon font or external request. Hovering an icon fills its circle with the brand accent color, and every link carries an aria-label describing which platform it goes to, since the icon alone isn't machine-readable text.

Build with AI

Build, Understand, Optimize, and Extend It With AI

Give this snippet's HTML and CSS to an AI coding assistant like Claude and ask it to explain exactly how repeat(auto-fit, minmax(180px, 1fr)) decides how many columns to render at a given viewport width, and how that differs from the similar-looking auto-fill keyword, since the choice between the two matters once you have fewer team members than would fill a row. It's also worth asking the assistant to help you template this card structure from your actual data source — describe your CMS schema or API response shape for team members and ask it to generate the JavaScript template function that maps your real data onto this exact markup, including a sensible way to pick each avatar's background color deterministically from the person's name.

Prompt to recreate it

Copy this into your AI assistant of choice to build the effect from scratch, or as a jumping-off point for your own variant:

text
Build a responsive grid of team member cards in plain HTML and CSS — no JavaScript required for the static version, no external avatar image service.

Requirements:
- A CSS grid container using repeat(auto-fit, minmax(<min-width>, 1fr)) for grid-template-columns so the layout reflows from multiple columns on desktop down to a single column on mobile with no media queries at all.
- Each card contains a circular colored avatar showing the person's initials as text (no image file), a name, a role/title, and a row of small circular social icon links using inline SVG logos (at least two different platforms across the set of cards).
- Each avatar's background color must be set independently per card so the grid has visual variety even though every card shares the same layout structure.
- Every icon-only social link must have a descriptive aria-label since the SVG icon alone conveys no accessible text.
- Add a hover state on each card that lifts it slightly and deepens its shadow, to suggest the card could be interactive (e.g. link to a full bio).
- The markup structure for one card must be simple and repeatable enough that it could be trivially generated from a CMS collection or API response by a small template function.

Want to tighten it up first? Run this prompt through the AI Prompt Studio to score it across 8 quality dimensions, catch anti-patterns, and tune the wording for Claude, ChatGPT, or Gemini before you paste it in.

Step by step

How to Use

  1. 1
    Load the snippetClick "Team Member Card Grid" in the sidebar Library tab to see four team cards laid out in a responsive grid.
  2. 2
    Resize the previewSwitch between Desktop, Tablet, and Mobile device previews to see the grid reflow from four columns down to one with no extra CSS.
  3. 3
    Add a team memberIn the HTML panel, copy an existing .member-card block, update the initials, name, role, and background color, and add or remove social links.
  4. 4
    Swap in real photosReplace an .avatar div's text content and background with an <img> tag sized to fill the same 64px circle for a real headshot.
  5. 5
    Adjust the grid densityIn the CSS panel, change the minmax(180px, 1fr) value to control the minimum card width before the grid wraps to fewer columns.
  6. 6
    Export in your formatClick "HTML" for a standalone file, "JSX" for React, or "Tailwind" for React + Tailwind CSS.

Real-world uses

Common Use Cases

TEAM
About and team pages
Showcase your team on a company website without needing professional headshots ready at launch time.
Learn auto-fit responsive grids
Study how repeat(auto-fit, minmax()) creates a fully responsive card grid without writing a single media query.
Prototype a hiring or careers page
Drop this into a careers page prototype to represent hiring managers or team leads before final photography is available.
Match your brand color palette
Assign each avatar a color from your brand palette to keep the grid cohesive while still visually distinguishing each person.
Keep social links screen-reader friendly
The aria-label pattern on each icon-only link is a good reference for any other icon-based navigation elsewhere on your site.
Generate cards from a CMS or API
Template the same card markup from a headless CMS's team collection or a JSON API response instead of hardcoding each member.

Got questions?

Frequently Asked Questions

Each avatar is a plain div styled as a circle with flexbox centering, displaying the person's initials as text, with a background color set per card. No image file, canvas, or generation library is involved.

The grid-template-columns value is repeat(auto-fit, minmax(180px, 1fr)) — this tells the browser to fit as many columns of at least 180px as the available width allows, stretching them evenly to fill any leftover space, automatically producing fewer columns on narrower screens.

Replace the avatar div's text content and remove its background color, then add an img tag inside it sized to fill the same width and height (64px by default) with object-fit: cover and the same border-radius: 50% to keep it circular.

Yes. Add another anchor tag inside the .socials div with its own inline SVG icon and a descriptive aria-label — the flex layout accommodates any number of icons per card.

Adjust the minmax(180px, 1fr) minimum width value — a larger minimum (e.g. 220px) results in fewer, wider columns fitting per row; a smaller minimum allows more columns to fit.

The structure uses semantic headings for names and paragraph text for roles, and every icon-only social link has an aria-label describing its destination platform, so screen readers announce meaningful information rather than just "link."

Yes. Wrap the card's content in an anchor tag (keeping the nested social links as separate, stoppable click targets using event.stopPropagation() in JavaScript if needed) or make the name itself a link to the bio page.

Write a small template function that takes a member object (name, role, initials, color, social links) and returns the same card markup structure, then map it over your CMS collection or API response to render the full grid dynamically.