Aurora Gradient Footer — Free HTML CSS Animated Background Footer

Aurora Gradient Footer · Footers · Plain HTML & CSS · Live preview

Share & Support

What's included

Features

Three independently timed, drifting radial-gradient blobs for an organic ambient glow
One shared blur() filter on the parent layer instead of filtering each blob separately
Content sits in its own z-index layer above the effect for guaranteed legibility
Centred CTA section above a conventional three-column link grid and bottom bar
Pure CSS animation — no canvas, no JavaScript, no external library
Responsive: link columns collapse to two per row below 640px

About this UI Snippet

Aurora Gradient Footer — A Living Background Behind a Static CTA

Screenshot of the Aurora Gradient Footer snippet rendered live

A footer's final CTA competes for attention with everything the user just scrolled past. This snippet borrows the ambient-glow trick from modern SaaS hero sections — three large, blurred, slowly drifting colour blobs — and puts it behind the footer's closing pitch instead, so the last thing on the page feels alive rather than like an afterthought bolted on once the content ran out.

Three blobs, three independent drift paths

.agf-aurora is an absolutely positioned layer holding three radial-gradient circles, each roughly 350–420px, positioned to overlap loosely across the top and bottom of the footer. Each blob runs its own @keyframesdrift1, drift2, drift3 — translating and scaling on a different duration (16s, 20s, 18s) and a different path. Giving each blob its own timing is what stops the animation from reading as one thing pulsing; three independent, slightly-out-of-sync motions is what makes it feel organic rather than mechanical, the same principle behind aurora background hero effects.

One `blur()` on the parent, not three

Rather than blurring each blob individually, filter: blur(60px) sits on the .agf-aurora wrapper and applies to all three children at once. This is both simpler to tune — one blur radius controls the whole effect's softness — and cheaper: the browser composites the blurred layer once rather than filtering three separate elements every frame. opacity: .55 on the same wrapper keeps the effect ambient rather than distracting from the text sitting above it.

Content sits in its own stacking layer

Everything the user actually reads — the CTA, the link columns, the bottom bar — lives inside .agf-inner at position: relative; z-index: 1, one paint layer above the aurora. This is the same content-above-effect separation used in the glare card: the ambient motion never has to fight for legibility because it is structurally behind the text, not blended with it.

A CTA that earns the space, then a real footer beneath it

The upper half is a single centred call to action — the loudest, simplest moment on the page. Below it, a conventional three-column link grid and a slim bottom bar handle the actual navigational duty, separated by a hairline border. Splitting the footer this way means the aurora effect only has to carry the emotional close of the page; it doesn't have to compete with a dense link directory sitting in the same visual field.

Build with AI

Build, Understand, Optimize, and Extend It With AI

Paste this snippet's HTML and CSS into an AI assistant like Claude and ask it to explain why each blob uses a different animation-duration rather than all three sharing one timing — and what the footer would look like (and why it would look worse) if all three moved in perfect sync. It's also a good candidate for a performance pass: ask the assistant to identify whether any properties beyond transform and opacity are being animated per-frame that could be moved to composited-only properties, and whether reducing blob count or blur radius would meaningfully help on low-end mobile GPUs. For extending it, ask for a prefers-reduced-motion variant that freezes the blobs while keeping their gradients visible, or for the blob colours to be driven by CSS custom properties so an entire theme swap is a single JavaScript-set variable rather than editing each gradient by hand.

Prompt to recreate it

Copy this into your AI assistant of choice to build the effect from scratch, or as a jumping-off point for your own variant:

text
Build an "aurora gradient" website footer in plain HTML and CSS only — no JavaScript, no canvas, no external library.

Requirements:
- A dark footer container with an absolutely positioned background layer holding three large radial-gradient circular blobs (roughly 350-420px each), each in a different accent colour (e.g. indigo, pink, cyan), fading to transparent at their edges.
- Give each blob its own @keyframes animation with a distinct duration (in the 16-20 second range) and a distinct translate/scale drift path, so the three blobs move independently and never synchronize — this is essential to the effect reading as organic rather than mechanical.
- Apply a single shared blur filter (around 60px) and a reduced opacity to the parent background layer rather than blurring each blob individually, for both simplicity and performance.
- Above the aurora layer, in its own stacked z-index context, place real footer content: a centred call-to-action section (headline, subtext, a white pill button with an arrow that shifts right on hover), followed by a three-column link grid separated by a hairline border, and a slim bottom bar with a brand mark and copyright.
- Make it fully responsive: the link columns should collapse from three to two per row below 640px, and the bottom bar should stack on narrow screens.
- Keep all animation restricted to transform and opacity so it stays smooth and GPU-composited.

Want to tighten it up first? Run this prompt through the AI Prompt Studio to score it across 8 quality dimensions, catch anti-patterns, and tune the wording for Claude, ChatGPT, or Gemini before you paste it in.

Step by step

How to Use

  1. 1
    Paste HTML and CSSThe aurora blobs start drifting immediately on load — no JavaScript is used.
  2. 2
    Adjust the blob coloursEach .agf-blob's radial-gradient starts with a hex colour — change b1/b2/b3 to match your brand palette.
  3. 3
    Tune the drift speed and blurEdit the animation-duration on each keyframe for faster or slower movement, and blur(60px) on .agf-aurora for a sharper or softer glow.
  4. 4
    Update the CTA and link columnsReplace the headline, subtext, button text, and the three link columns with your own content.
  5. 5
    Check performance on a low-end deviceThe blur is GPU-composited but still worth testing — if it stutters on older hardware, reduce blob size or blur radius rather than removing the animation entirely.
  6. 6
    Export in your formatClick HTML, JSX, or Tailwind to download the version you need.

Real-world uses

Common Use Cases

SaaS and AI product marketing sites
A footer that visually echoes an aurora hero section elsewhere on the page, so the final CTA feels like part of the same designed experience rather than a generic close-out.
Product launch and landing pages
Give the last conversion opportunity on the page the same visual weight and motion as the hero, instead of letting energy drop off toward the bottom of the scroll.
Portfolio and agency closing sections
An ambient, premium-feeling background for a "let's talk" closing CTA without needing a video or WebGL background.
Dark-themed developer tool sites
Fits naturally alongside a dark, gradient-forward design system — pair it with a matching aurora or spotlight hero for visual consistency top to bottom.
Studying layered CSS animation
A clean reference for staggering multiple independent keyframe animations and separating an ambient effect from foreground content with z-index.
A/B testing footer engagement
Compare click-through on the closing CTA against a static-background footer to see whether ambient motion measurably affects conversion at the bottom of the page.

Got questions?

Frequently Asked Questions

It should be lightweight on any reasonably modern device — the blobs animate transform and the blur is applied once to a parent wrapper rather than per element, so the browser compositor handles most of the work off the main thread. If you notice stutter on low-end hardware, reduce blob size or blur radius before removing the animation, and consider gating it behind prefers-reduced-motion.

Filtering three separate elements individually is more expensive than filtering one shared parent layer once. It also means a single blur(60px) value controls the softness of the entire effect, rather than needing to keep three blur values in sync.

It already cannot — the aurora layer is position: absolute with no z-index, and all real content lives inside .agf-inner at position: relative; z-index: 1, placing it in a higher paint layer. The effect is structurally behind the content, not blended with it.

Yes. Each blob is an independent span with its own keyframe animation, so you can add a fourth with a new drift path and duration, or remove one — just keep each blob's timing distinct from the others so the motion continues to read as organic rather than synchronized.

Not out of the box — add a @media (prefers-reduced-motion: reduce) block that sets animation: none on each .agf-blob to freeze the blobs in place for users who have that OS setting enabled, while keeping the static gradient colours visible.

Click JSX, Vue, or Angular to download the converted component. The animation is pure CSS keyframes, so no lifecycle code is needed — the conversion is a direct markup and class-name translation.