20 CSS Cards
20 CSS cards for e-commerce product tiles, SaaS pricing and feature panels, real-estate and hotel listings, blog and article previews, testimonials, team and business cards, analytics stat widgets, and portfolios — spanning glassmorphism, gradient-border glow, 3D flip, tilt pop-out, and stacked-cascade patterns. Scoped under .card-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.
Related33 CSS Card Hover Effects36 CSS Stacked Cards18 CSS Product Cards20 Tailwind CSS Cards
Course pickPartner: Zero to Mastery
Affiliate linkWant to build production-ready CSS layouts, animations and UI from scratch?
You just browsed 20 cards. Learn the Flexbox, Grid and animation thinking behind them, so the next component starts in your head, not in a copy-paste.
Every ZTM course in one membership: $25/month, paid yearly at $299 · 30‑day money-back guarantee
The CSS Bootcamp. We may earn a commission, at no extra cost to you.
02. Pricing Tier Card (opens in a new tab)
03. Recipe Food Card (opens in a new tab)
04. Real Estate Property Card (opens in a new tab)
05. Hotel Travel Booking Card (opens in a new tab)
06. Blog Post Preview Card (opens in a new tab)
07. Horizontal Article Card (opens in a new tab)
08. Testimonial Review Card (opens in a new tab)
09. Video Playback Preview Card (opens in a new tab)
10. Leaderboard Ranking Widget (opens in a new tab)
11. Team Member Profile Card (opens in a new tab)
12. SaaS Feature Highlight Card (opens in a new tab)
13. Interactive Digital Business Card (opens in a new tab)
14. Portfolio Project Card (opens in a new tab)
15. Analytics Dashboard Stat Card (opens in a new tab)
16. 3D Flip Business Card (opens in a new tab)
17. Glassmorphism SaaS Card (opens in a new tab)
18. Gradient Border Glow Card (opens in a new tab)
19. 3D Pop-Out Character Card (opens in a new tab)
20. Stacked Card Cascade (opens in a new tab)
Build your own
Tweak the exact look in our visual generators — no signup, instant copy-paste.
Frequently asked questions
What is a CSS card component?
How do I pick the right CSS card for my use case (e-commerce, SaaS, blog, real estate, hotel, dashboard, portfolio, or a visual-effect card)?
How do I make a CSS card responsive and accessible without breaking on mobile?
clamp() for scale-sensitive properties and min-height: 100vh; width: 100%; display: block on the demo root so the themed background paints edge-to-edge in the /try/ playground iframe (a bug that ships in most legacy CSS gallery sites). Nested card interiors use max-width: 320-380px for readability with margin-left: auto; margin-right: auto for horizontal centering. Grid layouts (Demo 02 Pricing three-column, Demo 07 Horizontal Article two-column) collapse to single column at max-width: 640px — one breakpoint, not five. For iOS Safari specifically, 100vh jumps 60-80px mid-scroll when the address bar collapses (a Core Web Vitals CLS event); use min-height: 100svh (small viewport height) instead — supported in every browser since 2022. All interactive controls hit WCAG 2.5.5 44×44px minimum touch targets: add-to-cart buttons, save-heart icons on property and hotel cards, play buttons on video cards, RSVP buttons, follow buttons, download buttons. Every continuous animation is guarded by @media (prefers-reduced-motion: reduce) — the conic-gradient rotation on Demo 18 Gradient Border, the 3D flip on Demo 16, the pop-out scale on Demo 19, the cascade fan on Demo 20 all respect the pref. WCAG 2.3.3 (Animation from Interactions) is non-negotiable; ship the guard on every keyframe-driven demo. All text contrast pairs meet WCAG 1.4.3 AA (4.5:1 for normal text, 3:1 for large 18px+ or 14px bold) — the muted-support text on some demos sits right at the AA edge, so bump one shade darker if your compliance target is AAA (procurement checkbox on enterprise SaaS). Every SVG icon carries aria-hidden="true" (decorative — the text next to it carries meaning), except star ratings where the container has role="img" aria-label="Rated 4.8 out of 5 by 127 reviewers" so screen readers announce the semantic rating. Every button is a real button type='button' element (not a div with a click handler), every link is a real anchor with href — WCAG 4.1.2 name/role/value satisfied by default without extra ARIA.Should CSS cards use CSS Grid or Flexbox for the layout inside the card?
display: grid; grid-template-columns: repeat(3, 1fr) because it needs equal-width columns AND equal-height rows for the dt/dd pairs. Demo 07 Horizontal Article Card uses grid-template-columns: 200px 1fr for the image-plus-text split, then flips to grid-template-columns: 1fr under 640px for mobile stacking — Grid handles this without changing the DOM order or reflow-shifting. Demo 15 Analytics Dashboard Stat Card uses grid for the 7D/30D/90D timeframe tab row. Use Flexbox when the card is a one-dimensional stack or row — Demo 01 Product Grid Card's body is a vertical flex column so the CTA button sinks to the bottom regardless of feature-list length. Demo 08 Testimonial Review Card's cite row uses display: flex; align-items: center; gap: 12px to align avatar and author-meta. Demo 20 Stacked Card Cascade's meta row uses flex for overlapping avatars. Rule of thumb: grid for tables and split layouts, flex for stacks and rows. Both are supported in every browser since IE11 (Grid since 2017), so there's no compatibility trade-off. For the card grid layout AROUND these cards on your own page (product listings, blog archives), use CSS Grid with grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 24px — the browser handles wrap points automatically as viewport width changes.Are these CSS cards free to use, and do they work in React, Vue, Svelte, or Next.js?
:focus-within for keyboard accessibility which works out of the box in React and Vue. The pricing card (Demo 02), video card (Demo 09), and vote card (Demo 20) use only CSS pseudo-classes for state, so React state hooks and Vue refs aren't needed. Frameworks with strict CSP (Content-Security-Policy script-src 'self' without 'unsafe-inline') will block inline onclick — none of these demos use inline handlers, so CSP is satisfied by default. React StrictMode double-mount doesn't affect any of the CSS-only demos. Next.js App Router streaming SSR renders these cards on the server without hydration flash — verified across the 20 demos. Vue 3 v-model bindings for form-like cards (Demo 15's timeframe tabs, if you make them stateful) should bind class instead of value to avoid fighting the CSS state. See each demo's gotchas notes for framework-specific edge cases.Related collections
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
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
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.



















