← All effects
Progress Orb
-- fps
prefers-reduced-motion detected — orb shown at a fixed fill, no waves
X-ray · layers
the rising fill
the surface is alive (off = flat)
the number in the glass
Parameters
Orb size110 px
Fill time3200 ms
Wave height6 px
Wave speed1.0×
your version · updates as you tinker
How this effect works
The orb is a clipping trick: we clip() the canvas to a circle, and from then on anything we draw only exists inside the glass. The liquid is just a rectangle whose top edge sits at bottom − progress × height — clipped by the circle, it reads as fluid filling a sphere.
The ripples layer replaces the rectangle's flat top with two travelling sine waves (a taller slow one and a smaller faster one on top — one wave looks mechanical, two look wet). The waves keep moving even while progress pauses, which is what makes the orb feel like it holds a real liquid rather than a chart. The percentage sits in the glass, flipping from dark to light as the liquid passes behind it.
Production notes: respects prefers-reduced-motion (fixed fill, flat surface) · one clip + two sine strokes per frame · in production, drive progress from real loading state · the copied snippet is self-contained HTML + JS.