07 / 33
All 33 in 33 Tailwind CSS Card Hover Effects
- 01Tailwind 3D Tilt & Parallax Card with Depth Layers
- 02Tailwind Glowing Gradient & Glassmorphic Border Card
- 03Tailwind Image Zoom Card with Slide-Up Content Reveal
- 04Tailwind 3D Flip Card (Front to Back) with backface-visibility
- 05Tailwind Sibling De-emphasis Pricing Grid with has-hover
- 06Tailwind Minimalist Elevation Card with Layered Dynamic Shadows
- 07Tailwind Elastic Lift Card with Spring Cubic-Bezier
- 08Tailwind Animated Conic Gradient Border Card with @property
- 09Tailwind Stacked Layer Reveal Card (Fanned Risograph Deck)
- 10Tailwind Holographic Foil Shimmer Card with mix-blend-mode
- 11Tailwind Curtain Reveal Card (Parting Velvet Halves)
- 12Tailwind Corner Peel Card with clip-path Triangles
- 13Tailwind Neon Sign Card with Layered Text-Shadow Glow
- 14Tailwind CRT Scanline Terminal Card with Sweeping Beam
- 15Tailwind Depth Parallax Landscape Card with Layer Multipliers
- 16Tailwind Cursor Spotlight Card with Masked Border Highlight
- 17Tailwind 3D Tilt Product Card with Specular Glare
- 18Tailwind Slide-Up Panel Card with Peek Header Swap
- 19Tailwind Credit Card Flip with Magnetic Strip & CVV
- 20Tailwind RGB Channel-Split Glitch Card
- 21Tailwind Rotating Conic Aura Card with Blurred Gradient Bloom
- 22Tailwind Blob-to-Rectangle Border Morph Card
- 23Tailwind Magnetic Float Orb Card with Pointer Attraction
- 24Tailwind Typewriter Reveal Card with Steps Animation & Caret
- 25Tailwind Magazine Overlay Slide Card (Full-Face Panel Takeover)
- 26Tailwind Breathing Film Grain Card with SVG Turbulence Noise
- 27Tailwind Frosted Glass Intensify Card with Deepening Backdrop Blur
- 28Tailwind Blueprint Reveal Card with Circular clip-path Wipe
- 29Tailwind Cursor-Anchored Shockwave Ripple Card
- 30Tailwind Color-Burn Ignition Card with Grayscale-to-Fire Hover
- 31Tailwind Prismatic Light Sweep Card with Screen Blend Bar
- 32Tailwind Book Cover Open Card with Hinged 3D Rotation
- 33Tailwind Drifting Aurora Ribbons Card with Blurred Gradient Bands
Tailwind Elastic Lift Card with Spring Cubic-Bezier
A coffee card that springs up and overshoots on hover, with an ember glow rising from below. One value carries the whole effect, so it earns a @theme entry: --ease-tch07-bounce mints ease-tch07-bounce and three elements share the same spring.
Untitled UI Pro: 5,000+ React + Tailwind CSS v4 components · from $349 one-time
Untitled UI React · Affiliate link
The code
<section class="tch-07 w-full min-h-svh grid place-items-center bg-tch07-bg bg-[radial-gradient(circle_at_20%_20%,#ffe7c2_0%,transparent_45%),radial-gradient(circle_at_80%_80%,#ffc9d4_0%,transparent_45%)] font-tch07-mono p-8">
<article tabindex="0" class="group relative w-[320px] h-[420px] rounded-[28px] overflow-hidden cursor-pointer origin-bottom bg-[linear-gradient(160deg,#1c1410_0%,#3a2618_100%)] text-tch07-ink shadow-[0_10px_25px_rgb(60_30_10/0.25)] transition-[translate,scale,box-shadow] duration-550 ease-tch07-bounce hover:-translate-y-6 hover:scale-104 hover:shadow-[0_40px_60px_rgb(60_30_10/0.4)] focus-visible:-translate-y-6 focus-visible:scale-104 outline-none focus-visible:outline-3 focus-visible:outline-tch07-ember focus-visible:outline-offset-4 motion-reduce:ease-out motion-reduce:hover:scale-100 before:content-[''] before:absolute before:inset-0 before:opacity-0 before:transition-opacity before:duration-500 before:bg-[radial-gradient(circle_at_50%_120%,var(--color-tch07-ember)_0%,transparent_60%)] group-hover:before:opacity-55 group-focus-visible:before:opacity-55">
<div class="relative z-2 h-full px-8 py-9 flex flex-col justify-between">
<span class="text-[0.72rem] tracking-[0.32em] uppercase text-tch07-tag">Seasonal Roast</span>
<div class="font-tch07-display font-black text-[5.5rem] leading-[0.85] transition-transform duration-550 ease-tch07-bounce group-hover:-translate-y-1.5 motion-reduce:transition-none">04</div>
<div>
<h2 class="font-tch07-display font-semibold text-[1.9rem] leading-[1.1]">Ember Drip<br>Coffee Co.</h2>
<p class="text-[0.85rem] leading-[1.6] text-tch07-body max-w-[90%] mt-2">Slow-roasted single origin beans with notes of burnt caramel and stone fruit.</p>
</div>
</div>
<span class="absolute bottom-7 right-7 z-3 size-3.5 rounded-full bg-tch07-ember shadow-[0_0_0_0_rgb(255_138_60/0.6)] transition-[box-shadow] duration-500 group-hover:shadow-[0_0_0_10px_rgb(255_138_60/0)]"></span>
</article>
</section><section class="tch-07 w-full min-h-svh grid place-items-center bg-tch07-bg bg-[radial-gradient(circle_at_20%_20%,#ffe7c2_0%,transparent_45%),radial-gradient(circle_at_80%_80%,#ffc9d4_0%,transparent_45%)] font-tch07-mono p-8">
<article tabindex="0" class="group relative w-[320px] h-[420px] rounded-[28px] overflow-hidden cursor-pointer origin-bottom bg-[linear-gradient(160deg,#1c1410_0%,#3a2618_100%)] text-tch07-ink shadow-[0_10px_25px_rgb(60_30_10/0.25)] transition-[translate,scale,box-shadow] duration-550 ease-tch07-bounce hover:-translate-y-6 hover:scale-104 hover:shadow-[0_40px_60px_rgb(60_30_10/0.4)] focus-visible:-translate-y-6 focus-visible:scale-104 outline-none focus-visible:outline-3 focus-visible:outline-tch07-ember focus-visible:outline-offset-4 motion-reduce:ease-out motion-reduce:hover:scale-100 before:content-[''] before:absolute before:inset-0 before:opacity-0 before:transition-opacity before:duration-500 before:bg-[radial-gradient(circle_at_50%_120%,var(--color-tch07-ember)_0%,transparent_60%)] group-hover:before:opacity-55 group-focus-visible:before:opacity-55">
<div class="relative z-2 h-full px-8 py-9 flex flex-col justify-between">
<span class="text-[0.72rem] tracking-[0.32em] uppercase text-tch07-tag">Seasonal Roast</span>
<div class="font-tch07-display font-black text-[5.5rem] leading-[0.85] transition-transform duration-550 ease-tch07-bounce group-hover:-translate-y-1.5 motion-reduce:transition-none">04</div>
<div>
<h2 class="font-tch07-display font-semibold text-[1.9rem] leading-[1.1]">Ember Drip<br>Coffee Co.</h2>
<p class="text-[0.85rem] leading-[1.6] text-tch07-body max-w-[90%] mt-2">Slow-roasted single origin beans with notes of burnt caramel and stone fruit.</p>
</div>
</div>
<span class="absolute bottom-7 right-7 z-3 size-3.5 rounded-full bg-tch07-ember shadow-[0_0_0_0_rgb(255_138_60/0.6)] transition-[box-shadow] duration-500 group-hover:shadow-[0_0_0_10px_rgb(255_138_60/0)]"></span>
</article>
</section>@import "tailwindcss";
@theme {
--color-tch07-bg: #f4ede4;
--color-tch07-bg: oklch(0.94 0.014 70);
--color-tch07-ink: #f4ede4;
--color-tch07-ink: oklch(0.94 0.014 70);
--color-tch07-body: #cdb9a6;
--color-tch07-body: oklch(0.79 0.03 65);
--color-tch07-tag: #ffb27a;
--color-tch07-tag: oklch(0.82 0.11 55);
--color-tch07-ember: #ff8a3c;
--color-tch07-ember: oklch(0.74 0.17 48);
--font-tch07-mono: 'Spline Sans Mono', ui-monospace, monospace;
--font-tch07-display: 'Fraunces', Georgia, serif;
--ease-tch07-bounce: cubic-bezier(0.34, 1.8, 0.4, 1);
}
.tch-07 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tch07-bg: #f4ede4;
--color-tch07-bg: oklch(0.94 0.014 70);
--color-tch07-ink: #f4ede4;
--color-tch07-ink: oklch(0.94 0.014 70);
--color-tch07-body: #cdb9a6;
--color-tch07-body: oklch(0.79 0.03 65);
--color-tch07-tag: #ffb27a;
--color-tch07-tag: oklch(0.82 0.11 55);
--color-tch07-ember: #ff8a3c;
--color-tch07-ember: oklch(0.74 0.17 48);
--font-tch07-mono: 'Spline Sans Mono', ui-monospace, monospace;
--font-tch07-display: 'Fraunces', Georgia, serif;
--ease-tch07-bounce: cubic-bezier(0.34, 1.8, 0.4, 1);
}
.tch-07 {
width: 100%;
min-height: 100svh;
}Setup — do this once per project
Skip this if your project already runs Tailwind v4.
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>Compiles in the browser — perfect for a CodePen or a quick test, not for production.
npm install tailwindcss @tailwindcss/vite
npm install tailwindcss @tailwindcss/vite// vite.config.js ("type": "module" in package.json)
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})// vite.config.js ("type": "module" in package.json)
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [tailwindcss()],
})Any v4 setup works — Vite, PostCSS or the CLI. Nothing in this demo is bundler-specific.
@import "tailwindcss";
@theme {
--color-tch07-bg: #f4ede4;
--color-tch07-bg: oklch(0.94 0.014 70);
--color-tch07-ink: #f4ede4;
--color-tch07-ink: oklch(0.94 0.014 70);
--color-tch07-body: #cdb9a6;
--color-tch07-body: oklch(0.79 0.03 65);
--color-tch07-tag: #ffb27a;
--color-tch07-tag: oklch(0.82 0.11 55);
--color-tch07-ember: #ff8a3c;
--color-tch07-ember: oklch(0.74 0.17 48);
--font-tch07-mono: 'Spline Sans Mono', ui-monospace, monospace;
--font-tch07-display: 'Fraunces', Georgia, serif;
--ease-tch07-bounce: cubic-bezier(0.34, 1.8, 0.4, 1);
}
.tch-07 {
width: 100%;
min-height: 100svh;
}@import "tailwindcss";
@theme {
--color-tch07-bg: #f4ede4;
--color-tch07-bg: oklch(0.94 0.014 70);
--color-tch07-ink: #f4ede4;
--color-tch07-ink: oklch(0.94 0.014 70);
--color-tch07-body: #cdb9a6;
--color-tch07-body: oklch(0.79 0.03 65);
--color-tch07-tag: #ffb27a;
--color-tch07-tag: oklch(0.82 0.11 55);
--color-tch07-ember: #ff8a3c;
--color-tch07-ember: oklch(0.74 0.17 48);
--font-tch07-mono: 'Spline Sans Mono', ui-monospace, monospace;
--font-tch07-display: 'Fraunces', Georgia, serif;
--ease-tch07-bounce: cubic-bezier(0.34, 1.8, 0.4, 1);
}
.tch-07 {
width: 100%;
min-height: 100svh;
}<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,900&family=Spline+Sans+Mono:wght@400;500&display=swap">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600;9..144,900&family=Spline+Sans+Mono:wght@400;500&display=swap">What changed in the port
Which parts became utilities, which stayed CSS, and why.
- A curve used by more than one element is a design token, not an arbitrary value —
--ease-tch07-bouncein@themeis the difference between one source of truth and two copies drifting apart. transition-[translate,scale,box-shadow]rather thantransition-transform, because v4 splitstranslateandscaleinto separate properties you can name individually.- UI change from the CSS original: the card is focusable with a real ring and the ember glow responds to
group-focus-visible:, so the effect is not pointer-only.
Here's a working CSS demo from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Tailwind Elastic Lift Card with Spring Cubic-Bezier
Source: https://codefronts.com/motion/tailwind-css-card-hover-effects/tailwind-elastic-lift-card-hover-effect/
A coffee card that springs up and overshoots on hover, with an ember glow rising from below. One value carries the whole effect, so it earns a @theme entry: --ease-tch07-bounce mints ease-tch07-bounce and three elements share the same spring.
## HTML
```html
<section class="tch-07 w-full min-h-svh grid place-items-center bg-tch07-bg bg-[radial-gradient(circle_at_20%_20%,#ffe7c2_0%,transparent_45%),radial-gradient(circle_at_80%_80%,#ffc9d4_0%,transparent_45%)] font-tch07-mono p-8">
<article tabindex="0" class="group relative w-[320px] h-[420px] rounded-[28px] overflow-hidden cursor-pointer origin-bottom bg-[linear-gradient(160deg,#1c1410_0%,#3a2618_100%)] text-tch07-ink shadow-[0_10px_25px_rgb(60_30_10/0.25)] transition-[translate,scale,box-shadow] duration-550 ease-tch07-bounce hover:-translate-y-6 hover:scale-104 hover:shadow-[0_40px_60px_rgb(60_30_10/0.4)] focus-visible:-translate-y-6 focus-visible:scale-104 outline-none focus-visible:outline-3 focus-visible:outline-tch07-ember focus-visible:outline-offset-4 motion-reduce:ease-out motion-reduce:hover:scale-100 before:content-[''] before:absolute before:inset-0 before:opacity-0 before:transition-opacity before:duration-500 before:bg-[radial-gradient(circle_at_50%_120%,var(--color-tch07-ember)_0%,transparent_60%)] group-hover:before:opacity-55 group-focus-visible:before:opacity-55">
<div class="relative z-2 h-full px-8 py-9 flex flex-col justify-between">
<span class="text-[0.72rem] tracking-[0.32em] uppercase text-tch07-tag">Seasonal Roast</span>
<div class="font-tch07-display font-black text-[5.5rem] leading-[0.85] transition-transform duration-550 ease-tch07-bounce group-hover:-translate-y-1.5 motion-reduce:transition-none">04</div>
<div>
<h2 class="font-tch07-display font-semibold text-[1.9rem] leading-[1.1]">Ember Drip<br>Coffee Co.</h2>
<p class="text-[0.85rem] leading-[1.6] text-tch07-body max-w-[90%] mt-2">Slow-roasted single origin beans with notes of burnt caramel and stone fruit.</p>
</div>
</div>
<span class="absolute bottom-7 right-7 z-3 size-3.5 rounded-full bg-tch07-ember shadow-[0_0_0_0_rgb(255_138_60/0.6)] transition-[box-shadow] duration-500 group-hover:shadow-[0_0_0_10px_rgb(255_138_60/0)]"></span>
</article>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tch07-bg: #f4ede4;
--color-tch07-bg: oklch(0.94 0.014 70);
--color-tch07-ink: #f4ede4;
--color-tch07-ink: oklch(0.94 0.014 70);
--color-tch07-body: #cdb9a6;
--color-tch07-body: oklch(0.79 0.03 65);
--color-tch07-tag: #ffb27a;
--color-tch07-tag: oklch(0.82 0.11 55);
--color-tch07-ember: #ff8a3c;
--color-tch07-ember: oklch(0.74 0.17 48);
--font-tch07-mono: 'Spline Sans Mono', ui-monospace, monospace;
--font-tch07-display: 'Fraunces', Georgia, serif;
--ease-tch07-bounce: cubic-bezier(0.34, 1.8, 0.4, 1);
}
.tch-07 {
width: 100%;
min-height: 100svh;
}
```Here's a working CSS demo from CodeFronts. Use it as-is or adapt to your framework. All classes are scoped under a unique prefix so the code won't collide with your existing styles. MIT licensed.
Demo: Tailwind Elastic Lift Card with Spring Cubic-Bezier
Source: https://codefronts.com/motion/tailwind-css-card-hover-effects/tailwind-elastic-lift-card-hover-effect/
A coffee card that springs up and overshoots on hover, with an ember glow rising from below. One value carries the whole effect, so it earns a @theme entry: --ease-tch07-bounce mints ease-tch07-bounce and three elements share the same spring.
## HTML
```html
<section class="tch-07 w-full min-h-svh grid place-items-center bg-tch07-bg bg-[radial-gradient(circle_at_20%_20%,#ffe7c2_0%,transparent_45%),radial-gradient(circle_at_80%_80%,#ffc9d4_0%,transparent_45%)] font-tch07-mono p-8">
<article tabindex="0" class="group relative w-[320px] h-[420px] rounded-[28px] overflow-hidden cursor-pointer origin-bottom bg-[linear-gradient(160deg,#1c1410_0%,#3a2618_100%)] text-tch07-ink shadow-[0_10px_25px_rgb(60_30_10/0.25)] transition-[translate,scale,box-shadow] duration-550 ease-tch07-bounce hover:-translate-y-6 hover:scale-104 hover:shadow-[0_40px_60px_rgb(60_30_10/0.4)] focus-visible:-translate-y-6 focus-visible:scale-104 outline-none focus-visible:outline-3 focus-visible:outline-tch07-ember focus-visible:outline-offset-4 motion-reduce:ease-out motion-reduce:hover:scale-100 before:content-[''] before:absolute before:inset-0 before:opacity-0 before:transition-opacity before:duration-500 before:bg-[radial-gradient(circle_at_50%_120%,var(--color-tch07-ember)_0%,transparent_60%)] group-hover:before:opacity-55 group-focus-visible:before:opacity-55">
<div class="relative z-2 h-full px-8 py-9 flex flex-col justify-between">
<span class="text-[0.72rem] tracking-[0.32em] uppercase text-tch07-tag">Seasonal Roast</span>
<div class="font-tch07-display font-black text-[5.5rem] leading-[0.85] transition-transform duration-550 ease-tch07-bounce group-hover:-translate-y-1.5 motion-reduce:transition-none">04</div>
<div>
<h2 class="font-tch07-display font-semibold text-[1.9rem] leading-[1.1]">Ember Drip<br>Coffee Co.</h2>
<p class="text-[0.85rem] leading-[1.6] text-tch07-body max-w-[90%] mt-2">Slow-roasted single origin beans with notes of burnt caramel and stone fruit.</p>
</div>
</div>
<span class="absolute bottom-7 right-7 z-3 size-3.5 rounded-full bg-tch07-ember shadow-[0_0_0_0_rgb(255_138_60/0.6)] transition-[box-shadow] duration-500 group-hover:shadow-[0_0_0_10px_rgb(255_138_60/0)]"></span>
</article>
</section>
```
## CSS
```css
@import "tailwindcss";
@theme {
--color-tch07-bg: #f4ede4;
--color-tch07-bg: oklch(0.94 0.014 70);
--color-tch07-ink: #f4ede4;
--color-tch07-ink: oklch(0.94 0.014 70);
--color-tch07-body: #cdb9a6;
--color-tch07-body: oklch(0.79 0.03 65);
--color-tch07-tag: #ffb27a;
--color-tch07-tag: oklch(0.82 0.11 55);
--color-tch07-ember: #ff8a3c;
--color-tch07-ember: oklch(0.74 0.17 48);
--font-tch07-mono: 'Spline Sans Mono', ui-monospace, monospace;
--font-tch07-display: 'Fraunces', Georgia, serif;
--ease-tch07-bounce: cubic-bezier(0.34, 1.8, 0.4, 1);
}
.tch-07 {
width: 100%;
min-height: 100svh;
}
```How this works
The spring is the design token. cubic-bezier(0.34,1.8,0.4,1) overshoots past its endpoint and settles back; that single curve is the effect. Declared once in @theme, it becomes ease-tch07-bounce and every element that should feel the same spring can say so by name.
Transform-origin does real work. origin-bottom means the scale grows upward from the card's base, which is what makes the motion read as a lift rather than a zoom.
The glow is a pseudo-element, not a fourth div. before:bg-[radial-gradient(circle_at_50%_120%,…)] sits below the content and only its opacity animates, so the glow costs nothing on the compositor.
Make it yours
- Bounce: the third bezier parameter.
1.8is springy,1.2subtle,1a plain ease-out. - Lift distance pairs with duration —
-translate-y-6at 550ms; shorten both together or the overshoot stops reading. - Glow hue comes from
--color-tch07-ember, shared by the pulsing dot.
Gotchas — read before shipping
- Overshoot above
1.7in the Y parameters can glitch in Safari — this demo sits at1.8on purpose and is the one place to test first when retheming. - Under 400ms the eye cannot catch the overshoot; the curve reads as a plain ease and the token stops earning its keep.
- One elastic element per card. Card lift plus badge wobble plus button bounce is three springs fighting.
motion-reduce:must swap the curve, not remove the transition — an instant 26px jump is worse than a smooth one.
Browser support
| Chrome | Safari | Firefox | Edge |
|---|---|---|---|
| 111+ | 16.4+ | 128+ | 111+ |
cubic-bezier transitions are universally supported and render identically everywhere; the floor is Tailwind v4's generated sheet.