Skip to content

Blob Background

Three soft organic blobs (sage, clay, sand) slowly morphing their border-radius and drifting behind content — a living, breathing backdrop. Pure CSS.

organic-soft/effect/blob-background
Open ↗

Source

import type { ReactNode } from "react";
import { cn } from "@/lib/utils";

export interface BlobBackgroundProps {
  children?: ReactNode;
  /** Seconds per morph cycle (0 = static). */
  speed?: number;
  className?: string;
}

/** Three soft organic blobs (sage, clay, sand) slowly morphing their border-radius and drifting behind content — a living, breathing backdrop. Pure CSS. */
export function BlobBackground({ children, speed = 16, className }: BlobBackgroundProps) {
  const style = (delay: number) => ({
    animationDuration: speed ? `${speed}s` : undefined,
    animationDelay: `${delay}s`,
    animationName: speed ? undefined : "none",
  });
  return (
    <div className={cn("relative isolate overflow-hidden bg-da-bg text-da-fg", className)}>
      <div aria-hidden className="absolute inset-0 -z-10">
        <span className="os-blob absolute -top-[10%] -left-[8%] size-[55%] max-h-[480px] max-w-[480px] min-h-56 min-w-56 bg-da-accent" style={style(0)} />
        <span className="os-blob absolute top-[30%] -right-[10%] size-[50%] max-h-[440px] max-w-[440px] min-h-52 min-w-52 bg-da-secondary" style={style(-5)} />
        <span className="os-blob absolute -bottom-[20%] left-[30%] size-[40%] max-h-[360px] max-w-[360px] min-h-44 min-w-44 bg-da-muted" style={style(-10)} />
      </div>
      {children}
      <style href="os-blob" precedence="default">{`
        @keyframes os-blob {
          0%, 100% { border-radius: 60% 40% 55% 45% / 50% 60% 40% 50%; translate: 0 0; rotate: 0deg }
          33% { border-radius: 45% 55% 40% 60% / 60% 45% 55% 40%; translate: 3% 4%; rotate: 8deg }
          66% { border-radius: 55% 45% 60% 40% / 40% 55% 45% 60%; translate: -3% 2%; rotate: -6deg }
        }
        .os-blob { border-radius: 60% 40% 55% 45% / 50% 60% 40% 50%; animation: os-blob 16s ease-in-out infinite }
        @media (prefers-reduced-motion: reduce) { .os-blob { animation: none } }
      `}</style>
    </div>
  );
}

export default BlobBackground;

modules/organic-soft/effect/blob-background/index.tsx

Props

PropTypeDefaultDescription
childrenReactNode—Content.
speednumber—Seconds per morph cycle (0 = static).
classNamestring—Extra classes on the root.

Other background variants in Organic Soft

Background in other art directions

Animated

Dots Background

Halftone dot field in the DA ink color that pans slowly on a diagonal, radially masked so dots fade toward the edges. Pure CSS, configurable gap, dot size and speed.

BrutalistBackground
Animated

Grid Background

Section background: a ruled grid drawn with the DA stroke color that drifts diagonally, solid color blocks that blink in hard steps, and an optional SVG grain layer. Wraps any content.

BrutalistBackground
Animated

Shapes Background

Scattered geometric SVG shapes (squares, circles, triangle, plus) in DA colors with ink outlines and hard shadows, bobbing and tilting in stepped (6-frame) motion behind content.

BrutalistBackground
Animated

Stripes Background

Diagonal hazard stripes (DA color + ink) marching sideways, either as a full background or as two ruled 'hazard tape' bands at top and bottom. Pure CSS, seamless loop.

BrutalistBackground
Animated

Blobs Background

Three large gradient blobs that continuously morph their border-radius, rotate and drift, optionally seen through a heavy frosted pane for a true glassmorphism backdrop. Pure CSS.

GlassBackground
Animated

Bubbles Background

Translucent glass bubbles with specular highlights and luminous rims rising and swaying at varied sizes and speeds behind the content. Pure CSS.

GlassBackground
Animated

Mesh Background

Living mesh gradient: four large SVG blobs (DA primary, accent + two hues) drifting slowly, merged by an SVG goo filter for a liquid feel, heavily blurred and grain-dithered. Wraps any content.

GlassBackground
Animated

Ribbons Background

Three wide, blurred SVG gradient ribbons (primary, accent, danger) flowing horizontally in slow sine waves, like silk behind frosted glass. Pure CSS animation.

GlassBackground
Animated

Aurora Background

Hero background with three heavily blurred color fields (indigo primary + cyan + violet) drifting slowly over a radially-masked hairline grid, fading into the page at the bottom.

MinimalBackground
Animated

Beams Background

Vertical hairline columns fading at top and bottom, with short primary-colored beams of light falling down some of them at staggered speeds. Pure CSS.

MinimalBackground
Animated

Dot Wave Background

Dot matrix, radially masked, across which a diagonal wave of slightly larger primary-colored dots ripples continuously like a heartbeat. CSS keyframes only.

MinimalBackground
Animated

Grid Glow Background

Hairline grid whose lines light up in the primary color inside a soft radial spotlight that follows the mouse (CSS variables updated on pointer move, no re-render), vignetted to the page color.

MinimalBackground
Animated

Crosshair Background

Measuring crosshair: full-width and full-height hairlines follow the pointer with live mono X/Y coordinates next to the intersection — a design-tool feel for hero areas. Mouse only; hidden otherwise.

Mono CleanBackground
Animated

Guides Background

Layout-grid backdrop: hairline column guides (like a design tool’s grid overlay) that draw in from top to bottom one after another, with tiny mono column numbers along the top. Pure CSS.

Mono CleanBackground
Animated

Halftone Background

Print-inspired halftone: a regular ink dot screen fading out across the section via a linear mask, like a newspaper gradient; static, pure CSS.

Mono CleanBackground
Animated

Word Background

A giant outlined word (hairline stroke, no fill) slowly drifting sideways behind content in an endless loop — typographic texture instead of imagery. Pure CSS.

Mono CleanBackground
Animated

Dot Matrix Background

Fine dot matrix in the border color; dots near the pointer light up in primary through a radial mask that follows the cursor (pointer devices only).

Neo CorporateBackground
Animated

Flow Lines Background

Horizontal “money flow” lines (smooth SVG curves in the border color) with small primary pulses travelling along them — evokes payment rails. SVG + CSS, static with reduced motion.

Neo CorporateBackground
Animated

Glow Background

Two large blurred primary/accent glows drifting slowly behind content, plus a thin horizon line — restrained corporate ambience. Pure CSS, static with reduced motion.

Neo CorporateBackground
Animated

Grid Background

Faint hairline grid in the border color, radially masked toward one edge, with a few cells softly pulsing in primary — the classic fintech hero backdrop. Pure CSS.

Neo CorporateBackground
Animated

Confetti Background

Festive background of flat pastel confetti (dots, pills, squares) drifting down slowly with a gentle spin — for success, onboarding-complete and celebration pages.

Soft FlatBackground
Animated

Polka Background

Soft polka-dot pattern (two offset grids) in a pastel tone, drifting diagonally, with an optional clear center so content stays readable. CSS only.

Soft FlatBackground
Animated

Shapes Background

Calm background of big flat pastel shapes (circles, pills, rounded squares) floating slowly up and down at different phases. Pure CSS.

Soft FlatBackground
Animated

Waves Background

Three layered flat pastel waves (lavender, mint, peach) along the bottom of a section, each drifting sideways at its own pace. SVG + CSS.

Soft FlatBackground