Back to Dictionary
Waiting & Loading
●●○Customize
Context dependent

Blur Fade-in

Content fades in while simultaneously transitioning from blurred to sharp focus, creating a cinematic reveal effect. More sophisticated than a simple fade.

Use

Hero images or headline text on page load

Avoid

Frequent, repetitive content updates (can feel heavy)

Safer Alternative

No safer default listed.

Risk Level

Low risk

Live Demo

Content Revealed

Fading in from blur to sharp focus

What It Is

Content fades in while simultaneously transitioning from blurred to sharp focus, creating a cinematic reveal effect. More sophisticated than a simple fade.

When to Use

  • Hero images or headline text on page load
  • Card content after skeleton screen completes
  • Gallery images loading progressively
  • When you want a premium, polished feel for content reveals

When NOT to Use

  • Frequent, repetitive content updates (can feel heavy)
  • Accessibility contexts where blur might cause readability issues
  • Performance-constrained environments (blur is GPU-intensive)

Configuration Tips

  • 01Adjust blur intensity (filter: blur(8px-12px)) - higher values create more drama but may hurt readability mid-transition
  • 02Combine with scale or translateY for added depth (e.g., initial scale: 0.95)
  • 03Set duration to 0.4-0.6s - shorter feels snappy, longer feels luxurious
  • 04Add will-change: filter, opacity to hint browser for GPU optimization

You've Seen It In

LinearVercelApple Marketing PagesStripe

AI Implementation Prompts

Move from a fast scaffold to production details, then tune timing and edge states.

Make my content fade in from blurred to sharp focus when it loads. Create a cinematic reveal effect for hero sections.

Code Example (Tailwind CSS)

A focused implementation sketch you can adapt to your product state.

'use client';
import { motion } from 'framer-motion';

export function BlurFadeIn({ 
  children, 
  delay = 0 
}: { 
  children: React.ReactNode; 
  delay?: number;
}) {
  return (
    <motion.div
      initial={{ opacity: 0, filter: 'blur(10px)' }}
      animate={{ opacity: 1, filter: 'blur(0px)' }}
      transition={{ 
        duration: 0.5, 
        delay,
        ease: 'easeOut' 
      }}
    >
      {children}
    </motion.div>
  );
}