Liking cljdoc? Tell your friends :D

x-liquid-glass

A content container shaped as a shifting, translucent blob. Multiple overlapping ellipses are merged via an SVG goo filter (feGaussianBlur + feColorMatrix) to produce an organic, metaball-like boundary. The blob undergoes subtle noise-driven distortion, creating a "drop of water in zero gravity" effect. A frosted glass layer with backdrop blur, built-in mesh gradient, and optional pointer-following specular highlight complete the visual.

Tag Name

x-liquid-glass

Attributes

AttributeTypeDefaultRangeDescription
blobsnumber53 – 8Number of satellite ellipses around the core
speednumber0.30.05 – 2.0Noise evolution speed
amplitudenumber0.150.05 – 0.4Max satellite displacement as fraction of size
blurnumber120 – 40Backdrop filter blur in px (glass frosting)
goonumber104 – 20SVG filter blur stdDeviation (blob merge softness)
tintstringCSS colorFill tint color (overrides CSS variable)
specularbooleanfalseEnable pointer-following specular highlight
specular-sizenumber0.40.1 – 1.0Highlight radius as fraction of element size
specular-intensitynumber0.30.0 – 1.0Highlight opacity
disabledbooleanfalseFreeze animation; show static blob
modestringsurfacesurface, submergedContent positioning: above frost or behind it
frostnumber0.50.0 – 1.0Frost thickness in submerged mode (0=clear, 1=heavy)
color-1stringindigoCSS colorFirst mesh gradient color
color-2stringpinkCSS colorSecond mesh gradient color

Properties

PropertyTypeAttributeDescription
blobsnumberblobsSatellite count
speednumberspeedNoise speed
amplitudenumberamplitudeDisplacement amplitude
blurnumberblurBackdrop blur
goonumbergooGoo filter strength
tintstringtintFill tint color
specularbooleanspecularSpecular highlight enabled
specularSizenumberspecular-sizeHighlight radius
specularIntensitynumberspecular-intensityHighlight opacity
disabledbooleandisabledAnimation frozen
modestringmode"surface" or "submerged"
frostnumberfrostFrost thickness (0.0–1.0)
color1stringcolor-1First gradient color
color2stringcolor-2Second gradient color

Slots

SlotDescription
(default)Content displayed inside blob

CSS Custom Properties

PropertyDefault (light)Default (dark)
--x-liquid-glass-tintrgba(255,255,255,0.15)rgba(0,0,0,0.2)
--x-liquid-glass-borderrgba(255,255,255,0.3)rgba(255,255,255,0.1)
--x-liquid-glass-border-width1.51.5
--x-liquid-glass-shadow0 8px 32px rgba(0,0,0,0.1)0 8px 32px rgba(0,0,0,0.3)
--x-liquid-glass-padding1.5rem1.5rem
--x-liquid-glass-specular-colorrgba(255,255,255,0.6)rgba(255,255,255,0.3)
--x-liquid-glass-gradient-1indigo radial gradientindigo radial gradient (dimmer)
--x-liquid-glass-gradient-2pink radial gradientpink radial gradient (dimmer)
--x-liquid-glass-springlinear() spring easinglinear() spring easing
--x-liquid-glass-spring-duration600ms600ms

Shadow Parts

PartElementDescription
svg<svg>SVG container with goo filter + blobs
glass<div>Glass layer with backdrop-filter
gradient<div>Mesh gradient background layer
specular<div>Specular highlight overlay
grain<div>Frosted glass texture overlay
content<div>Content wrapper with slot

Accessibility

  • The SVG and specular overlay are marked aria-hidden="true" (purely decorative).
  • prefers-reduced-motion: reduce freezes satellites at rest positions; no animation loop runs.
  • Light/dark mode adapts automatically via prefers-color-scheme.
  • All transitions use CSS linear() spring easing for physically natural motion.

Usage

Basic

<x-liquid-glass>
  <h3>Liquid Glass Card</h3>
  <p>Place me over interesting content for the full glass effect.</p>
</x-liquid-glass>

With Specular Highlight

<x-liquid-glass specular specular-intensity="0.5">
  <p>Move your pointer over me to see the light follow.</p>
</x-liquid-glass>

Custom Blob Physics

<x-liquid-glass blobs="7" speed="0.8" amplitude="0.25" goo="15">
  <p>More satellites, faster, wobblier, goopier.</p>
</x-liquid-glass>

Disabled

<x-liquid-glass disabled>
  <p>Static blob — no animation.</p>
</x-liquid-glass>

Submerged Content

<x-liquid-glass mode="submerged" specular>
  <h3>Behind the Glass</h3>
  <p>Content is visible through the frosted glass — like text in ice.</p>
</x-liquid-glass>

Custom Gradient Colors

<x-liquid-glass color-1="rgba(0,200,100,0.15)" color-2="rgba(255,165,0,0.12)">
  <p>Green and orange mesh gradient</p>
</x-liquid-glass>

Styled

<x-liquid-glass style="
  --x-liquid-glass-tint: rgba(99,102,241,0.2);
  --x-liquid-glass-border: rgba(99,102,241,0.4);
  --x-liquid-glass-shadow: 0 8px 32px rgba(99,102,241,0.2);
">
  <p>Indigo-tinted glass blob</p>
</x-liquid-glass>

JavaScript

import '@vanelsas/baredom/x-liquid-glass';

const blob = document.querySelector('x-liquid-glass');
blob.blobs = 7;
blob.speed = 0.5;
blob.specular = true;
blob.specularIntensity = 0.6;

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close