Skip to content

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.

brutalist/effect/dots-background
Open ↗

Source

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

export interface DotsBackgroundProps {
  children?: ReactNode;
  /** Distance between dots in px. */
  gap?: number;
  /** Dot radius in px. */
  size?: number;
  /** Seconds for one pan cycle (0 = static). */
  speed?: number;
  /** Fade dots toward the edges (halftone look). */
  halftone?: boolean;
  className?: string;
}

/** Halftone dot field in the DA ink color, slowly panning diagonally. Pure CSS. */
export function DotsBackground({ children, gap = 22, size = 2, speed = 20, halftone = true, className }: DotsBackgroundProps) {
  return (
    <div className={cn("relative isolate overflow-hidden bg-da-bg text-da-fg", className)}>
      <div
        aria-hidden
        className={cn(
          "brutalist-dots absolute -inset-[50px] -z-10 opacity-40",
          halftone && "[mask-image:radial-gradient(ellipse_at_center,black_20%,transparent_75%)]",
        )}
        style={
          {
            backgroundImage: `radial-gradient(var(--da-border) ${size}px, transparent ${size + 0.5}px)`,
            backgroundSize: `${gap}px ${gap}px`,
            "--dots-gap": `${gap}px`,
            animationDuration: speed ? `${speed}s` : undefined,
            animationName: speed ? undefined : "none",
          } as CSSProperties
        }
      />
      {children}
      <style href="brutalist-dots" precedence="default">{`
        @keyframes brutalist-dots { to { translate: var(--dots-gap) var(--dots-gap) } }
        .brutalist-dots { animation: brutalist-dots 20s linear infinite }
        @media (prefers-reduced-motion: reduce) { .brutalist-dots { animation: none } }
      `}</style>
    </div>
  );
}

export default DotsBackground;

modules/brutalist/effect/dots-background/index.tsx

Props

PropTypeDefaultDescription
childrenReactNode—Foreground content.
gap / sizenumber22 / 2Spacing and dot radius in px.
speednumber20Seconds per pan cycle (0 = static).
halftonebooleantrueRadial fade mask.
classNamestring—Classes on the wrapper (height/padding).

Other background variants in Brutalist

Background in other art directions

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

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 SoftBackground
Animated

Hills Background

Layered rolling hills along the bottom in three sage tones, each layer drifting sideways at a different pace (gentle parallax), with an optional clay sun rising slowly.

Organic SoftBackground
Animated

Leaves Background

Leaves drifting down and swaying side to side behind content, in sage/clay tints with varied sizes, speeds and delays. Pure CSS; leaves rest in place with reduced motion.

Organic SoftBackground
Animated

Paper Background

Recycled-paper surface: the cream background with a fine SVG turbulence grain and a soft warm vignette — static texture that makes flat sections feel tactile.

Organic SoftBackground
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