
Liquid Glass Analytics Widget
Published
21 hand-coded CSS Liquid Glass cards inspired by Apple iOS 26 / macOS Tahoe / visionOS (WWDC 2025) — SaaS analytics widget, draggable kanban card, glassmorphic product feature, interactive pricing matrix (monthly/yearly), layered profile card, horizontal-scroll case studies, refractive music player, minimalist weather card, secure login form, glass payment checkout, NFT collectible, crypto wallet balance widget, game inventory slot cards, analytics chart card with warped grid refraction, digital coupon discount card with hover-reveal lens, hover-reactive profile bio card, team member spotlight card with cursor-tracking, media slider & knob card with gooey bubble tooltip, smart home thermostat card with radial dial, multi-step wizard progress card with gooey step-bleed, and RPG game inventory HUD card. 12 Pure CSS + 9 vanilla-JS under 60 lines. Zero dependencies vs Aceternity ($299/yr), Magic UI, shadcn glass, Framer Motion. Core Web Vitals safe (CLS 0, INP-friendly), WCAG 2.2 AA accessible with prefers-reduced-motion and prefers-reduced-transparency guards. Scoped under .lg-NN for no-collision pasting, framework-agnostic.
Related25 CSS Glassmorphism Cards20 CSS Liquid Glass Effects24 CSS Liquid Glass Navbars

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published

Published
backdrop-filter — backdrop-filter: blur(20px) saturate(180%) on the card surface, plus a subtle inner-highlight box-shadow: inset 0 1px 0 rgba(255,255,255,0.55), plus a ring-1 ring-white/40 outer stroke that catches the ambient light. This produces the “frosted with specular rim” look that Apple's Control Center and iOS 26 Notification Center use. Advanced approach (Demo 01 Analytics Widget, Demo 14 Analytics Chart Card, Demo 15 Digital Coupon, Demo 19 Smart Home Thermostat): SVG <filter> with <feTurbulence baseFrequency="0.02"> generating a subtle noise map, fed into <feDisplacementMap scale="8"> that physically warps the underlying pixels. Reference the filter with filter: url(#lg-NN-refract) on a decorative ::before glass layer that sits below the card content (higher z-index) so text stays sharp while the pixels behind the glass genuinely bend. Gooey morph pattern (Demo 18 Media Slider Knob, Demo 20 Wizard Progress): feGaussianBlur+feColorMatrix alpha-threshold filter on a shared group so touching elements visually fuse — the bubble grows out of the track like a liquid drop. Chrome, Safari (with -webkit-), and Firefox 103+ all support SVG filters on HTML for years. GPU cost is real (~4-8ms per composite frame) so cap the refraction filter to hero cards, not every card in a scrollable feed. Use contain: layout paint + isolation: isolate on the card wrapper to fence the expensive blur so it never repaints the whole page — this is the INP-safe pattern most demos here document.Cumulative Layout Shift stays 0. Cards that animate their size (Demo 04 pricing toggle, Demo 20 wizard step advance) animate transform, padding, or max-height on inner elements — never the card's own containing block — so surrounding content stays put. Second, GPU-safe animation properties only — every transition animates transform, opacity, filter, and backdrop-filter. Never width, height, margin, padding (in the containing-block sense), or top / left — those trigger the layout + paint pipeline on every frame and destroy Interaction to Next Paint scores on real mobile hardware. Third, paint isolation — every card sits in a contain: layout paint + isolation: isolate wrapper so the expensive backdrop-filter blur is fenced to its own compositor layer and never repaints the whole page. Cards using SVG refraction (Demo 01, 14, 15, 19) additionally cap the SVG filter to a single hero surface because SVG filters on HTML elements have a real ~4-8ms per-composite-frame cost — acceptable on one card, not acceptable on every card in a scrollable grid. Gooey-morph demos (Demo 18, 20) restrict the feGaussianBlur+feColorMatrix filter to a small local group so the fusion effect stays cheap. Result: every demo lands under Google's 200ms INP threshold on a mid-tier Android device even with the heaviest backdrop-filter stack active.backdrop-filter: saturate(1.8) component: it boosts saturation of what's behind the glass, which lets the text sit on a lower opacity glass surface without losing readability. Demos with critical numeric readouts (Demo 01 Analytics KPI, Demo 10 Payment total, Demo 12 Crypto balance, Demo 14 Chart KPI, Demo 19 Thermostat temperature) additionally place the number on a near-opaque inner chip so the digits never drop below AA. Motion — every animated demo respects @media (prefers-reduced-motion: reduce) with an appropriate fallback: static-poster settled state for kanban drag (Demo 02), instant-swap state changes for pricing toggle (Demo 04), and disabled ambient sweeps for the shimmer inventory (Demo 13, 21). Transparency — Apple introduced prefers-reduced-transparency in Safari 17 / iOS 17 alongside the new Reduce Transparency system setting; every card checks it and swaps to solid tint when the user opts out (critical for GPU-heavy refraction demos where the visual effect is expensive AND non-essential). Keyboard + landmark semantics — every card is a real <section> or <article> landmark, interactive controls carry proper aria-pressed / aria-current / aria-live where state changes, native <input type=range> drives Demo 18's slider so screen readers announce values automatically, and every touch target hits the WCAG 2.5.5 44×44px minimum. This is the accessibility floor that Section 508 (US federal procurement), EN 301 549 (EU / Germany public sector), AODA (Ontario), DDA (Australia), and the European Accessibility Act (June 2025) all require.backdrop-filter — Chrome 76+, Safari 14+ (with -webkit- prefix), Firefox 103+. Every demo includes the -webkit-backdrop-filter fallback so Safari 14-17 users still get the frost. Demos ship a canonical @supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) graceful-degrade block that swaps to a solid tint fill — the pattern to copy for anywhere backdrop-filter isn't guaranteed. SVG <filter> on HTML — universal support across every modern Chrome, Safari, Firefox. Refraction demos (Demo 01, 14, 15, 19) and gooey-morph demos (Demo 18, 20) work everywhere; the per-composite-frame GPU cost is the practical ceiling, not browser support. Container queries (@container) — Chrome 105+, Safari 16+, Firefox 110+. Demo 06 (Horizontal Scroll Case-Study) uses container queries to reflow between wide and narrow contexts; browsers without container query support fall back to viewport-based @media queries. @property typed custom properties — Chrome 85+, Safari 16.4+, Firefox 128+. Used in Demo 02 (Kanban drag transform) and Demo 19 (Thermostat radial dial); older browsers fall back to instant jumps (still functional, just less silky). :has() — Chrome 105+, Safari 15.4+, Firefox 121+. Used in Demo 04 (Pricing Matrix) and Demo 18 (Media Slider bubble visibility) to drive state from a sibling's :checked/:active state without JavaScript. Every advanced-primitive demo carries an inline @supports fallback so older browsers get a working version, not a broken one. Tier-1 (US / UK / CA / AU / DE) traffic on evergreen browsers gets the full experience; the long tail on IE-era enterprise browsers gets the graceful degrade.className instead of class), a Vue single-file component's template, a Svelte component, an Astro island, or a SvelteKit page — the CSS ships as a scoped module, an inline <style> block, or a Tailwind arbitrary-value paste. Server-side rendering — every demo renders correctly on the server without hydration flash. Cards that ship with vanilla JS handlers (Demo 02 kanban drag, Demo 04 pricing toggle, Demo 07 music player, Demo 15 coupon reveal, Demo 16/17 profile hover, Demo 18 media sliders, Demo 19 thermostat dial, Demo 20 wizard progress) use plain event listeners with AbortController for cleanup or are pure event delegation — safe for React StrictMode double-mount. Content-Security-Policy — demos with strict CSP (script-src 'self' without 'unsafe-inline') work by default because no demo uses inline onclick handlers; the JS runs from external files that the CSP allowlist can permit. Vue 3 v-model bindings work on the demos with form controls (pricing toggle, media sliders, thermostat dial, login form, payment checkout). Angular, Blazor, HTMX, Turbo, Rails ERB, Django, and Laravel Blade all work — the HTML + CSS + JS is framework-agnostic. If you're on Tailwind, the CSS ports cleanly — backdrop-blur, bg-white/15, ring-1 ring-white/40, and arbitrary values like backdrop-blur-[24px] cover most of the utility mapping; SVG filters and named keyframes belong in tailwind.config.js under extend.keyframes + extend.animation.15 mouse-aware 3D tilt hover cards — e-commerce product spotlight, glassmorphism parallax team card, interactive pricing tier, holographic NFT collectible, pop-out mascot, dark tech grid with border glow, media player album art, blog article preview, cyberpunk neon glow, dashboard KPI widget, minimalist real estate, flip-to-back tilt, mobile app showcase, course learning card, and a Pure CSS touch-friendly tilt. Vanilla JS writes --rx/--ry/--mx/--my; all rendering stays in CSS on the GPU.
24 hand-coded CSS animated card patterns organised by what triggers the motion, not by card style. Scroll and entrance triggers: staggered grid reveals, @starting-style mount-in, scroll-driven scale and fade on animation-timeline: view(), View Transitions API card-to-detail morphs, blur-to-sharp lazy image loading, and FLIP re-layout when a filter changes. State-change triggers: add-to-cart success morph, like and save particle burst, expand and collapse to intrinsic height with calc-size(), swipe-to-dismiss on Pointer Events, and skeleton-to-loaded crossfade. Data-driven triggers: count-up KPI metrics, SVG sparkline draw-on-enter, and progress ring fill on load. Ambient idle loops: breathing glow, floating drift, animated gradient mesh backgrounds, conic rotating borders, auto-cycling testimonial decks, and live status pulses. Plus four hover patterns where the effect is the topic itself: cursor spotlight, holographic foil glare, corner ribbon slide, and horizontal accordion expand. Every card is scoped under a .ac-NN prefix for no-collision pasting, guards prefers-reduced-motion, animates compositor-only properties, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.
22 hand-coded CSS avatars for chat apps, team dashboards, comment threads, account menus, and social profiles. Covers circular and squircle shapes, gradient and conic story rings, hexagon clip-path crops, online status dots, notification count badges, verified checkmarks, stacked facepiles with plus-N overflow, initials fallbacks for users without photos, broken-image recovery, avatar pickers, and a size scale system where the ring, badge, and status dot all scale from a single custom property.