33 Tailwind CSS Card Hover Effects

26 Pure Tailwind7 Tailwind + JSPublished

33 Tailwind CSS card hover effects for portfolio grids, product and pricing tiers, team profiles, and editorial covers — spanning 3D tilt and parallax, gradient and glass borders, image zoom and slide-up reveals, flip and book-open rotations, holographic foil, neon glows, glitch splits, and cursor spotlights. Scoped under .tch-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

Related30 CSS Hover Effects20 Tailwind CSS Image Hover Effects30 CSS Text Hover Effects

Premium upgradePartner: Untitled UI

Affiliate link

Building a whole Tailwind app, not just this component?

You just browsed 33 Tailwind card hover effects. 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 3D Tilt & Parallax Card with Depth Layers (opens in a new tab)

Published

Tailwind + JS
A featured-work card that rotates toward the cursor in real 3D while background, badge, title and copy ride separate Z planes and drift at different rates. The port's interesting cost: perspective, transform-style and translateZ have no utilities and stay arbitrary properties — but the whole child-layer contract collapses into one *: variant on the card.

02. Tailwind Glowing Gradient & Glassmorphic Border Card (opens in a new tab)

Published

Tailwind + JS
A dark staking-vault card on frosted glass: a teal-to-violet bloom rises behind the blur and a matching neon ring ignites on whichever edge the cursor is nearest. backdrop-blur-[14px] saturate-[1.3] is a clean utility win; the masked border ring is the part that has to stay arbitrary, and the class list says so honestly.

03. Tailwind Image Zoom Card with Slide-Up Content Reveal (opens in a new tab)

Published

Pure Tailwind
The dependable shop-grid workhorse: the image scales inside a clipped frame while a frosted detail sheet slides up from a peeking strip. This is the port where Tailwind is simply better — group-hover: and group-focus-within: replace four descendant selectors, and keyboard parity costs one extra variant instead of a new rule.
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 Animated Conic Gradient Border Card with @property (opens in a new tab)

PublishedUpdated

Pure Tailwind
A dark edge-compute card where a multi-colour conic gradient traces a live circuit around the border on hover. This is the port's honest limit: @property and @keyframes must stay in the stylesheet, but --animate-tch08-spin turns the result into one animate-tch08-spin utility, and the play-state gating happens in the class list.
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

20. Tailwind RGB Channel-Split Glitch Card (opens in a new tab)

PublishedUpdated

Pure Tailwind
Three stacked copies of one headline — red channel, cyan channel, clean white — desyncing into datamoshed slices on hover, with two drifting scan bars. The port keeps all three keyframe sets in CSS (they animate clip-path, which no utility can tween) and applies them from the markup.
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

FAQ

Frequently asked questions

How do the 3D tilt cards actually rotate toward the cursor — is that pure Tailwind?
The 3D tilt demos (01, 17) combine two layers. The static part is pure Tailwind: a wrapper with perspective-[1000px] sets the vanishing point and the inner card gets transform-style-preserve-3d so child layers keep their own depth. The actual lean toward the cursor is not pure CSS — a small pointer handler reads pointermove, converts the cursor's offset inside the card into two rotation values, and writes them to CSS custom properties the transform reads. Tailwind only animates on a fixed :hover state, so cursor-relative angles need that JS bridge. Depth layers like the badge and title float via translateZ through arbitrary values such as [transform:translateZ(40px)], sitting above the base at different distances — that separation is what sells the parallax rather than a flat lean.
How does the slide-up content reveal work with Tailwind group-hover?
Most reveal demos (03, 18, 25) lean on Tailwind's group and group-hover: variants. You mark the card as group, then any descendant reacts to the card being hovered: the detail sheet rests translated out of view with translate-y-full and gets group-hover:translate-y-0, while the image scales with group-hover:scale-110 inside an overflow-hidden frame so it never spills. The most common bug is forgetting the clip — without overflow-hidden on the frame, the zoomed image and the sliding panel both leak past the rounded corners. The second gotcha is easing: group-hover: only changes the end state, so nothing animates unless you also put transition and a duration- on the moving child itself, not on the group parent, which merely carries the hover signal.
How does the pricing grid dim every tier except the one I hover?
Demo 05 blurs, dims and shrinks every pricing tier except the hovered one using the has- variant plus sibling reach. The container carries logic like has-[.tier:hover]:..., so when any child is hovered the container enters a state and each tier defaults to de-emphasised unless it is the one under the pointer. In plain terms it is the CSS :has() relational selector exposed as a Tailwind variant, which is why one hover restyles its siblings with no JavaScript. The thing to watch is graceful degradation: older engines that don't support :has() ignore the whole rule, so make the resting state — every tier fully readable — the default, and keep the de-emphasis purely additive. Never hide a price or CTA behind the effect; a non-supporting browser, or a keyboard user who can't hover, must still see every tier clearly.
Why does my animated conic gradient border snap instead of rotating smoothly in Tailwind?
The animated conic border on demo 08, and the rotating aura on 21, need a registered custom property that Tailwind cannot declare on its own. You add a real @property rule in a global stylesheet typing an angle as <angle> with an initial value; only a registered angle can be interpolated, so a keyframe spinning it from 0deg to 360deg animates smoothly instead of snapping. The card then paints a conic-gradient from that variable and Tailwind handles the sizing, the inset inner panel and the blur. Skip the @property registration and the browser treats the angle as an unanimatable string, so the border just jumps between frames. Put the rule and its @keyframes in your CSS entry file — Tailwind arbitrary values can't emit an at-rule, so there's nowhere else for it to live.
Why does the back of my flip card show through mirror-reversed?
The flip cards (04 team profile, 19 credit card, 32 book cover) all rely on backface-visibility. The container gets perspective, the rotating inner element gets transform-style-preserve-3d, the two faces are absolutely stacked, the back is pre-rotated with rotate-y-180, and both faces carry backface-hidden. A back face showing through mirror-reversed, or both faces flashing mid-turn, means a missing backface-hidden on one face or a missing preserve-3d that lets the browser flatten the stack and ignore Z order. A second trap: put the transition on the rotating wrapper, not on the individual faces, or only half the card animates. Demo 32's book hinges from a left transform-origin instead of a centre spin, so set the origin explicitly or it swings from the middle like a normal flip.
How do I add the neon text-shadow glow when Tailwind has no text-shadow utility?
Tailwind ships no text-shadow utility, so the neon sign (13) and other layered glows use an arbitrary property: [text-shadow:0_0_8px_#f0f,0_0_20px_#f0f] stacks several coloured shadows into one soft halo. The flicker is a short @keyframes jittering opacity or the shadow blur, pulled in through Tailwind's animate-[name_duration] arbitrary syntax with the keyframes defined in your config or a global block. Two things bite: arbitrary values cannot contain literal spaces, so every space inside the shadow list must become an underscore, while the commas that separate stacked shadows stay as commas. And because the whole effect is a lit-up hover state, give the resting sign enough contrast on its own — a card that is nearly invisible until a pointer arrives fails every touch and keyboard visitor who never hovers it.
Are these hover effects accessible for keyboard and reduced-motion users?
Two duties run through the whole set. First, motion: the tilt, glitch (20), aurora (33) and typewriter (24) demos animate continuously or on entry, so honour prefers-reduced-motion — wrap the keyframes in a motion-reduce: variant or a media query that drops them to a static state. Second, hover is not the only input. Anything keyed to :hover or group-hover: is invisible to keyboard and touch users unless you expose it another way. If a card hides its title, price or link until hover (03, 18, 25), mirror that reveal on focus-within: and make the target a real link or <button> so it can actually take focus. Decorative layers — grain, scanlines, glow, the neon halo — should be marked aria-hidden so a screen reader skips straight to the real content.
When should I not use these card hover effects?
Skip the heavy demos when the context can't pay for them. The cursor-tracked cards (01, 15, 16, 17, 23, 29) each need a JavaScript pointermove handler, and on touch devices there is no hover and no cursor at all, so budget a solid resting state instead of shipping an effect nobody can trigger. Blur-heavy cards — the glassmorphic border (02), rotating aura (21), backdrop-blur frost (27) — are the most expensive to composite; twenty of them animating at once can drop frames on low-end hardware, so reserve those for a hero or a single featured item, not a dense catalogue. Where you can, animate only transform and opacity, which stay on the compositor; animating width, height or box-shadow forces layout and paint every frame. And never gate essential content or a purchase action behind an effect that only fires on hover.

Related collections

20 CSS Animated Buttons preview

20 CSS Animated Buttons

20 hand-coded CSS animated buttons — neon glow, ripple, 3D press, liquid fill, jelly bounce, shine sweep, animated border, moving gradient CTA, text flip, submit success state, add-to-cart progress, download icon, hamburger-to-close, toggle switch, loading spinner inside button, next/prev arrow nav, and ghost button background reveal. Half pure CSS, half lightweight JS for production interactions.

11 CSS animation-timeline Demos preview

11 CSS animation-timeline Demos

11 pure CSS animation-timeline demos built on the W3C scroll() and view() spec — reading progress bar, view-timeline fade & reveal, shrinking sticky header, stacking cards, horizontal scroll section, parallax hero, container shadow indicators, reverse-scroll columns, text scrim reveal, cover card to sticky header, and image zoom / clip-path wipe. Zero JS, off the main thread, Core Web Vitals safe. Copy-paste ready.

25 CSS Background Animations preview

25 CSS Background Animations

25 hand-coded CSS background animations for SaaS hero sections, developer tool documentation, agency portfolios, gaming and Web3 landing pages, seasonal e-commerce campaigns, and dark-mode dashboards. Covers full-screen gradient shifts, animated mesh gradients, aurora borealis glow, cursor spotlight follow, interactive water ripples, dot grid and diagonal stripe patterns, SVG grain and noise texture overlays, topographic contour lines, layered SVG waves, plasma and lava lamp fluids, bokeh light blur, particle constellation networks, matrix digital rain, synthwave 3D perspective grids, starfield warp speed, CRT scanline overlays, fog and mist drift, morphing organic blobs, floating glassmorphism orbs, halftone dot patterns, starry night skies, floating geometric shapes, rising bubbles, and falling snow. 20 are pure CSS with zero JavaScript; the 5 that need it use vanilla canvas or pointer tracking with no dependencies. Every background animates compositor-only properties so it never blocks the main thread, is scoped under a .bga-NN prefix for no-collision pasting, guards prefers-reduced-motion, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

Search CodeFronts

Loading…