Metaballs

Soft blobs that drift, merge and split like a lava lamp.

Preview

Installation

pnpm add astro-dither

Or copy the source into your project: npx astro-dither add effect

Usage

---
import { DitherEffect } from "astro-dither";
---

<DitherEffect effect="metaballs" />

Four charges orbiting the centre, summed until they blob together. size sets each charge's radius.

The props group like this:

Shape: size.

Examples

Spores

Small size splits the field into separate drifting dots.

Mercury

Large size keeps the blobs merged in one slow mass.

Props

PropTypeDefaultDescription
sizenumber0.14Each blob's radius. 0.05 to 0.4.
palettestring[]the effect's2 to 8 colours, paper first, brightest last. transparent works.
cellnumber2Size of one dither cell in CSS pixels, 1 to 8.
matrix2 | 4 | 8 | "noise"8The Bayer threshold size, or noise for a random look.
speednumber1Playback speed. 0 draws one still frame.
classstringundefinedClasses on the surface element, for size and position.

Notes

  • Decorative and aria-hidden. Put real text on top of it, not inside it.
  • With reduced motion it draws one still frame at 4s and stops.
  • It pauses when scrolled out of view or when the tab is hidden.
  • It shares one WebGL context with every other ordered effect on the page.