CSS Gooey Liquid Effect
StylingEverything runs locally in your browser — nothing is uploaded
It looks arcane, and it takes two steps: give the container a generous blur, then push contrast very high. The high contrast squeezes the blurred grey gradient into a hard edge — so when two shapes come close, the blurred area between them is pressed into a bridge, exactly like two drops of liquid merging. So it is an effect on the container, and two conditions are required: the children must be solid colours (translucent or pale ones produce a broken edge), and the container must not use `overflow: hidden` (which clips the bridge away and removes the effect entirely). Both are noted in the delivered code. The preview shows two moving circles rather than one static shape — a single circle shows nothing liquid at all. You need at least two elements drawing a bridge between them. So the preview drifts them together and apart, and the bridge appears and disappears. That also hints at the real use: this belongs on a set of elements that merge (a loading indicator, combining chips, particles), not on one element.
Features
- Blur and contrast adjusted separately — their ratio decides how continuous the edge is
- Adjustable shape size (children inherit it)
- Adjustable travel speed, so you can watch the bridge form and break
- The preview drifts two circles together and apart
- The output includes both container and child rules, with both prerequisites noted
- `filter` on the container, `background: currentColor` on the children — one place to change the colour
- A `prefers-reduced-motion` fallback is included automatically
- Syntax-highlighted code with a one-click copy button
- Everything is computed in your browser
How to use
- Start with the blur radius: bigger makes a thicker bridge but also blurs the shapes themselves
- Then the contrast: it sets how hard the edge is pressed — too low and the edge breaks into dashes
- Adjust shape size and travel speed to see when the bridge forms and snaps
- Copy the CSS — and do not add `overflow: hidden` to the container
FAQ
- Why can the container not use `overflow: hidden`?
- Because the bridge is exactly the overflowing part. The blur expands each shape outward, and the high contrast presses that expansion into a solid edge — the portion between elements is the bridge. With `overflow: hidden` the overflowing part is clipped, the bridge is cut off at the container boundary, and it looks like two blocks chopped apart. It is the most common way this effect fails, and the symptom is obvious: everything "goes square".
- Why do the children have to be solid colours?
- Because the edge is pressed from the grey-level difference left by the blur. A translucent or pale colour blurs to a very small difference between neighbouring areas, and when contrast amplifies that, the resulting edge is broken and dotted instead of continuous. Dark, saturated solid colours retain a clear gradient after blurring, so the pressed edge holds together. The delivered code uses `background: currentColor` so a child can inherit one solid colour.
- Does this effect cost performance?
- Yes, and not a little. A `filter` on the container means the browser renders the whole container — children included — into an offscreen layer, blurs and contrasts it, then composites it back. Any child movement redoes that entire layer. So: not on a large container or one with many children, not on a container that scrolls, and no complex content inside. It suits a small, tight group of elements.
- Can I use it on text?
- Yes, but note that the text is blurred and pressed back too, so strokes thicken, detail is lost, and thin type turns to mush. It suits large, heavy headings only, and the contrast should be lower than for shapes (or the strokes fuse together). Also the text has to sit in a child element — if the container itself holds the text, the container is what gets pressed.
Related tools
Glassmorphism Generator
StylingAdjust blur, opacity, saturation and border, preview the glassmorphism live and copy the CSS, -webkit- prefix included so it works on iOS.
CSS Keyframe Animations
StylingSeven keyframe presets — fade, slide, pop, pulse, shake, spin, float — with duration and easing, plus a reduced-motion fallback.
CSS Border Radius
StylingSet each corner radius, preview it live and copy the CSS. px, rem or percent — and the preview shows why a percentage gives an ellipse.
CSS Gradient Generator
StylingAdjust the angle, colours and shape, preview the gradient live, copy the CSS. Linear, radial and conic, with an optional middle stop.
Neumorphism Generator
StylingAdjust distance, blur, intensity and direction to preview neumorphism and copy the CSS. Both shadow colours derive from the surface, hue intact.
Neon Text
StylingAdjust colour and intensity, preview the neon glow live and copy the CSS, with layered text-shadows on a dark backdrop.