20 Tailwind CSS Cards

20 Pure TailwindPublished

20 Tailwind CSS cards for e-commerce product grids, SaaS pricing tiers and feature tiles, real estate and hotel booking listings, blog and article feeds, testimonials, KPI stat dashboards, team and profile vCards, video shelves, and leaderboards — spanning recipe meta grids, glassmorphism aurora stages, 3D flip and pop-out lifts, rotating conic borders, and focus-within stacked cascades. Scoped under .twc-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

Related18 Tailwind CSS Product Cards36 Tailwind Stacked Cards23 Tailwind CSS Flip Cards15 Tailwind CSS 3D Tilt Hover Cards20 CSS Cards

Premium upgradePartner: Untitled UI

Affiliate link

Building a whole Tailwind app, not just this component?

You just browsed 20 Tailwind cards. Untitled UI Pro unlocks 5,000+ components and sections and 250+ page examples for React, styled with Tailwind CSS v4. One licence is a one-time $349 with lifetime updates; teams start at $999.

Get Untitled UI Pro

Untitled UI React. We may earn a commission, at no extra cost to you.

01. Tailwind E-Commerce Product Grid Card with Hover Quick-Add (opens in a new tab)

Published

Pure Tailwind
The reference-grade commerce tile: one hero product beside a stacked pair, with badges, a wishlist counter, a star-rating pill, colour swatches, a strikethrough price and a quick-add bar that rises on hover. The port's win is group/card — image zoom, quick-add reveal and CTA lift all read one named ancestor, so a small tile nested in the hero row can never capture the wrong parent.

02. Tailwind SaaS Pricing Tier Card Row with Popular Plan (opens in a new tab)

Published

Pure Tailwind
Three plans in a symmetric grid, with the middle tier lifted, ringed and glowing. The port's win is that the popular tier stops being a --pop modifier class and becomes a visible diff: the same class list as its neighbours plus six utilities, so you can read what “most popular” costs in styling without opening a stylesheet.

03. Tailwind Recipe Card with Cook-Time Meta Grid (opens in a new tab)

Published

Pure Tailwind
An editorial recipe index: one hero dish with a four-cell Total / Serves / Level / Calories meta grid, diet chips and a cook-mode bar that rises on hover, beside two stacked quick picks. The port's win is line-clamp-2 — the four-declaration -webkit-box ritual becomes one utility that cannot be half-written.
Newsletter

Enjoying these demos? Get new ones by email.

A short email when a new collection ships. Unsubscribe any time.

at

Almost there: check your inbox to confirm.Manage

08. Tailwind Testimonial Card with Sentiment Strip (opens in a new tab)

Published

Pure Tailwind
A customer quote with a star pill, a giant decorative quote mark, a sentiment strip, a verified-customer proof row and a helpful counter. The port's win is layer order made explicit: isolate on the card plus -z-10 / z-0 / relative z-1 on the three decorative planes, instead of a six-selector rule that lifted all the content at once.

09. Tailwind Video Preview Card with Glass Play Button (opens in a new tab)

Published

Pure Tailwind
A video shelf card: 16:9 thumbnail, glass play button with a breathing ring, LIVE and 4K pills, a watch-progress bar, and a creator row with subscriber delta. The port's win is that three infinite animations become three animate-* utilities minted from @theme, each carrying its own motion-reduce:animate-none beside it.

10. Tailwind Leaderboard Card with Gradient Medal Ranks (opens in a new tab)

Published

Pure Tailwind
A live top-contributors board: gradient medal digits for the podium, tinted row washes, a streak flame, per-row rank deltas and a highlighted “you” row. The port's win is the forced-colors: variant — the gradient-text ranks now survive Windows high-contrast mode instead of vanishing, and the fallback is one utility beside the gradient.

11. Tailwind Team Profile Card with Masked Grid Cover (opens in a new tab)

Published

Pure Tailwind
A profile tile: mesh-gradient cover with a masked 20px grid, an avatar overlapping it by half, a verified name, a semantic stat row and a social icon row. The port's win is the cover — a two-gradient grid plus a fade mask, expressed as three arbitrary properties on one element instead of a separate pattern class.

Published

Pure Tailwind
The smallest card in the collection and the most copy-pasted shape in SaaS: gradient icon tile, NEW chip, headline, one line of copy, and a Learn-more link whose arrow slides when you hover anywhere on the tile. The port's win is that the two-selector arrow rule becomes one group-hover/card: utility.

13. Tailwind Dark vCard with Iridescent Sheen (opens in a new tab)

Published

Pure Tailwind
A dark link-in-bio vCard: two gradient grounds, a rotated iridescent sheen, a blurred corner bloom, gradient-clipped name, skill chips and a light-on-dark Connect pill. The port's win is that the sheen and the bloom — the two effects that make the card — are readable as one class list each rather than two opaque modifier names.
Newsletter

Enjoying these demos? Get new ones by email.

A short email when a new collection ships. Unsubscribe any time.

at

Almost there: check your inbox to confirm.Manage

15. Tailwind Dark KPI Stat Card with SVG Sparkline (opens in a new tab)

Published

Pure Tailwind
A dark KPI tile: pulsing live dot, a 36px gradient-clipped currency value, a trend pill, a full-bleed SVG sparkline with gradient fill and stroke, a three-metric strip and a timeframe switcher. The port's win is that everything except the sparkline's geometry becomes utilities — and the sparkline stays SVG, because a data path is data.

16. Tailwind 3D Flip Business Card with Keyboard Reveal (opens in a new tab)

Published

Pure Tailwind
A gilt-on-navy calling card that turns on hover and focus-within, so the contact details on the back are reachable by keyboard. The port's win is the reduced-motion path: instead of cancelling the flip and hiding the back face forever, it becomes an opacity crossfade — same information, no spatial motion.

17. Tailwind Glassmorphism Card on Animated Aurora Stage (opens in a new tab)

Published

Pure Tailwind
The most layered demo in the set: three drifting aurora blobs, a film-grain overlay and a rotating caustic sweep behind a double-tinted glass panel with a chromatic edge and a champagne CTA. The port's win is that eleven decorative layers each state their own blur, blend mode and animation instead of hiding behind eleven class names.

18. Tailwind Rotating Conic-Border Card with Terminal Panel (opens in a new tab)

Published

Pure Tailwind
A dev-tool card wrapped in a laser edge that rotates: a registered --angle custom property drives a conic gradient around a 1.5px rim, over a terminal panel with a spinner, a tick and a blinking caret. The port's win is honest about its limit — @property and @keyframes cannot be utilities, so they stay CSS and everything else moves.
FAQ

Frequently asked questions

How does the rotating gradient border on the terminal card actually spin?
The laser edge on the conic-border card is driven by a registered custom property, not by animating a gradient directly. Declare it with @property --angle, giving it syntax:'<angle>', inherits:false and initial-value:0deg, then run a keyframe animation that moves --angle from 0deg to 360deg. The visible border is a conic-gradient(from var(--angle), ...) painted on a pseudo-element that sits behind the panel with a small negative inset and the same border-radius. The opaque terminal panel on top masks the centre, so only the rim shows. The registration is the whole trick: a plain --angle variable is a string and cannot be interpolated, so the gradient would jump between frames. Registering it as an <angle> type lets the browser tween it smoothly.
Why do my flip and pop-out cards look flat instead of 3D?
Three declarations have to line up. The parent that contains the tilting element needs perspective (roughly 800px to 1200px) — perspective set on the moving element itself does nothing. The element you rotate needs transform-style:preserve-3d so its children keep their own Z positions instead of being flattened into one plane; the flip card and the translateZ pop-out product card both depend on this. For the flip card specifically, the front and back faces each need backface-visibility:hidden, and the back face is pre-rotated rotateY(180deg) so it faces away until the container turns. The classic bug is putting perspective on the rotating card rather than its wrapper — you get a flat rotate with no depth. The second is forgetting preserve-3d, which collapses the two faces so the back bleeds through.
How do I make the hover flip and quick-add work for keyboard users?
Anything gated behind :hover alone is invisible to keyboard and most touch users. These demos pair every hover trigger with :focus-within. The flip business card turns on .card:hover, .card:focus-within, so tabbing to a link inside the back face reveals it. The stacked-card cascade fans out on :focus-within too, and the product tile shows its quick-add on the same combined selector. For that to fire, the card must contain a genuinely focusable element — a real <a> or <button>, not a <div> with a click handler. Add a visible :focus-visible outline so sighted keyboard users can see where they are, and don't hide the revealed controls with display:none when collapsed, or they drop out of the tab order entirely; use opacity and pointer-events instead so focus can still reach them.
How do I keep text readable on the glassmorphism card over the animated aurora?
The glass panel uses backdrop-filter:blur() plus a saturate boost over a semi-transparent white or dark fill — the blur is what turns the drifting aurora blobs behind it into a soft wash instead of distracting colour. Readability comes from three things working together: a background fill with real alpha (around 0.1 to 0.15) so the blur has something to tint, a hairline 1px border in rgba white to define the edge, and text kept at near-full opacity rather than tinted down. The common failures: forgetting the fill so the panel is pure blur and text loses contrast; and using backdrop-filter without a fallback — Firefox needed it behind a flag for a long time, so give the panel a solid-ish background as the base and treat the blur as enhancement. Test the worst case where a bright aurora blob passes directly under the smallest body text.
How is the SVG sparkline in the KPI card drawn without a chart library?
It is a hand-authored inline <svg> with a fixed viewBox, no dependency. The trend line is a single <path> or <polyline> whose points you compute by mapping each data value onto the viewBox height — larger value, smaller Y, because SVG Y grows downward. The soft area beneath it is the same point list closed down to the baseline and filled with a gradient defined in <defs>. Because it is inline SVG, the stroke inherits currentColor or a gradient clip, so it matches the card's accent for free. Two gotchas: set vector-effect:non-scaling-stroke if you let the SVG stretch responsively, otherwise the line thickens as the card widens; and mark it aria-hidden='true' since the exact number and trend pill already carry the meaning — a screen reader announcing raw path coordinates is noise.
How do I lift and highlight the popular plan in the pricing row?
The three plans sit in a symmetric grid, and the middle tier is raised with a small negative translateY plus a coloured ring and a soft glow shadow, so it reads as the recommended choice without breaking the row's alignment. Keep the lifted card the same width as its siblings — only the transform and the ring change, never the column size, or the grid looks broken. The glow is a large-radius, low-opacity box-shadow in the accent colour rather than a heavy dark shadow. A frequent bug is the raised card getting clipped by an overflow:hidden ancestor once you translate it upward; let the container overflow visibly or add matching top padding. If you animate the lift on hover, apply it to all three cards so hovering a side plan doesn't make the layout jump, and guard the motion with reduced-motion.
How does the masked grid cover on the team profile card work?
The mesh-gradient cover has a faint 20px grid drawn with a repeating linear-gradient background (two gradients, one per axis) sized to the grid step. The reason it fades toward the edges rather than tiling flat is a mask-image — usually a radial-gradient from opaque centre to transparent rim — applied to the grid layer, so the lines are strongest under the avatar and dissolve outward. The avatar itself overlaps the cover by half its height using a negative margin-top on the avatar sitting in the content block below, with the cover given no bottom clipping so the overlap shows. Watch two things: the parent must not be overflow:hidden or the overlapping avatar gets cut; and give the avatar a solid ring or border in the card background colour so it reads as lifted off the cover instead of pasted onto it.
When should I not reach for the heavily animated cards in this set?
The aurora glass card, the rotating conic border and the 3D flip and pop-out cards are showpieces — a hero unit, a single feature callout, a link-in-bio. Don't render twenty of them in a scrolling grid. The conic-border animation runs a continuous --angle keyframe and the aurora stacks blurred layers with drifting blobs; multiplied across a long list they burn battery and can drop frames on low-end devices, and backdrop-filter is one of the most expensive things to composite. For a dense feed reach for the flatter shapes instead — the horizontal article feed, the SaaS feature card, the plain product tile. Whatever you pick, wrap every continuous animation in @media (prefers-reduced-motion: reduce) and stop it, since spinning borders and flipping panels are exactly the vestibular triggers that setting exists to disable. Motion should be the exception on a page, not its texture.

Related collections

15 CSS 3D Tilt Hover Cards preview

15 CSS 3D Tilt Hover Cards

15 mouse-aware 3D tilt hover cards — e-commerce product spotlight, glassmorphism parallax team card, interactive pricing tier, holographic NFT collectible, pop-out mascot, dark tech grid with border glow, media player album art, blog article preview, cyberpunk neon glow, dashboard KPI widget, minimalist real estate, flip-to-back tilt, mobile app showcase, course learning card, and a Pure CSS touch-friendly tilt. Vanilla JS writes --rx/--ry/--mx/--my; all rendering stays in CSS on the GPU.

24 CSS Animated Cards preview

24 CSS Animated Cards

24 hand-coded CSS animated card patterns organised by what triggers the motion, not by card style. Scroll and entrance triggers: staggered grid reveals, @starting-style mount-in, scroll-driven scale and fade on animation-timeline: view(), View Transitions API card-to-detail morphs, blur-to-sharp lazy image loading, and FLIP re-layout when a filter changes. State-change triggers: add-to-cart success morph, like and save particle burst, expand and collapse to intrinsic height with calc-size(), swipe-to-dismiss on Pointer Events, and skeleton-to-loaded crossfade. Data-driven triggers: count-up KPI metrics, SVG sparkline draw-on-enter, and progress ring fill on load. Ambient idle loops: breathing glow, floating drift, animated gradient mesh backgrounds, conic rotating borders, auto-cycling testimonial decks, and live status pulses. Plus four hover patterns where the effect is the topic itself: cursor spotlight, holographic foil glare, corner ribbon slide, and horizontal accordion expand. Every card is scoped under a .ac-NN prefix for no-collision pasting, guards prefers-reduced-motion, animates compositor-only properties, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

22 CSS Avatars preview

22 CSS Avatars

22 hand-coded CSS avatars for chat apps, team dashboards, comment threads, account menus, and social profiles. Covers circular and squircle shapes, gradient and conic story rings, hexagon clip-path crops, online status dots, notification count badges, verified checkmarks, stacked facepiles with plus-N overflow, initials fallbacks for users without photos, broken-image recovery, avatar pickers, and a size scale system where the ring, badge, and status dot all scale from a single custom property.

Search CodeFronts

Loading…