16 CSS Frosted Glass Effects

5 Pure CSS11 Light JSPublished

16 production-grade CSS frosted glass effects you can copy-paste into any project — spanning every high-intent glassmorphism use case: auth (login modal, login/signup form), UI chrome (sticky landing navbar with blur-on-scroll via IntersectionObserver, admin sidebar nav, media-player footer, modal popup, VisionOS-style floating app dock), forms (contact form UI), profile & commerce (profile info card, credit card payment UI, product display card), finance (crypto dashboard), and system widgets (Apple-style weather, glass music player, translucent calendar). Every demo uses backdrop-filter: blur() saturate(180%) for real glassmorphism on colorful animated backdrops, with a @supports fallback so browsers without support stay readable. Scoped under .fg-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

Related11 CSS Glassmorphic Sticky Navbars22 CSS Glassmorphism20 CSS Liquid Glass Effects

Premium design systemPartner: Untitled UI

Affiliate link

Taking this style from one component to a whole product?

You just browsed 16 frosted glass effects. Untitled UI is the Figma UI kit 380,000+ designers use, with 10,000+ components and variants in Pro, plus a matching React library on Tailwind CSS. Figma Pro is a one-time purchase from $129.

Get Untitled UI Pro

Untitled UI. We may earn a commission, at no extra cost to you.

01. CSS Frosted Glass Login Modal (opens in a new tab)

Published

Pure CSS
A full-viewport login modal floating over a colorful photo backdrop with a real frosted-glass card — the canonical glassmorphism pattern Apple, Vercel, and Linear ship on their auth screens. Real form with email, password, remember-me toggle, primary CTA, and social sign-in buttons (Google, Apple, GitHub). Backdrop uses backdrop-filter: blur(24px) saturate(180%) with an inset highlight stroke and a subtle gradient border.

02. CSS Frosted Glass Dashboard Overlay (opens in a new tab)

Published

Pure CSS
A dashboard with three app widgets (music player, weather, calendar events) beneath a frosted glass notification overlay panel — the pattern iOS 26, macOS 26, and modern desktop OSes use for system chrome. Each widget shows real content: current song with progress bar, weather forecast, upcoming meetings. The floating notification panel demonstrates glassmorphism as UI chrome rather than pure decoration.

03. CSS Sticky Glassmorphism Navbar Blur on Scroll (opens in a new tab)

Published

CSS + JS
A landing-page sticky navbar that starts fully transparent and morphs into a frosted glass bar as soon as the user scrolls past the hero — the pattern Stripe, Linear, Vercel, and every 2026 marketing site ships. Real hero content (kicker + display headline + subhead + CTA + feature strip) so scrolling actually happens; the navbar transitions its background from transparent to rgba(255,255,255,0.14) with a 24px backdrop-filter blur once a sentinel element scrolls out of view. Zero JS libraries — a single IntersectionObserver watches one hidden sentinel div.

04. CSS Frosted Glass Sidebar Navigation Menu (opens in a new tab)

Published

Pure CSS
An admin dashboard with a frosted glass sidebar navigation on a colorful stage. Sidebar contains logo, 6 nav items with icons and badges, and a user profile card at the bottom. Main content area shows placeholder dashboard cards (revenue KPI, active users chart, recent activity list) so the frosted sidebar has real UI content to blur behind it. Zero JS — pure CSS Grid + backdrop-filter.

Published

Pure CSS
A fixed frosted glass footer overlay in the media-player style, floating over a full-height article page — the pattern Apple Music, Spotify web, and YouTube Music ship for their persistent bottom controls. Real article content (heading, paragraphs, pull-quote) scrolls behind the footer so the backdrop-filter has genuine text and imagery to blur. Footer contains album art thumbnail, track title + artist, progress bar with elapsed/total time, prev/play/next controls, and a volume slider.

06. Frosted Glass Login Form (opens in a new tab)

Published

CSS + JS
A premium glassmorphism login/signup card with four animated gradient orbs, a sliding tab pill, floating-label inputs, password strength meter, eye toggle, custom checkbox, and a shimmer CTA button — all rendered on an animated cyber-grid background.
Newsletter

Enjoying these demos? Get new ones by email.

A short email when a new collection ships. Unsubscribe any time.

at

Almost there: check your inbox to confirm.Manage

07. Glassmorphism Contact Form UI (opens in a new tab)

Published

CSS + JS
A split-panel glassmorphism contact card with a teal-emerald info sidebar featuring animated availability status and rotating decorative rings, plus a glass form panel with floating labels, custom select, textarea character counter, and a multi-state submit button.

10. Glassmorphic Product Display Card (opens in a new tab)

Published

CSS + JS
A premium e-commerce product card with a CSS-art headphone product illustration that floats on a gradient stage, a frosted glass bottom overlay, badge chips, star rating, quantity counter, wishlist heart, and multi-state add-to-cart button.

12. Apple Style Weather Widget (opens in a new tab)

Published

Pure CSS
An iOS-inspired compact weather widget with a night-sky gradient, 20 individually timed twinkling CSS star spans, a floating cloud-and-sun icon, a large temperature display, H/L gradient temperature bar, and a 5-day forecast grid — zero JavaScript.

13. Glass Music Player UI (opens in a new tab)

Published

CSS + JS
A floating glass music player that blurs a rich purple-coral "album art" gradient behind it. Features a rotating vinyl disc that spins when playing, animated progress bar, track cycling with skip buttons, like toggle, and shuffle/repeat controls.

14. Translucent Calendar Widget (opens in a new tab)

Published

CSS + JS
A compact glass calendar with JS-generated date grid, month navigation, clickable date selection, today highlight ring, event dot indicators on specific dates, and a live upcoming-events chip list that updates per selected date.
Newsletter

Enjoying these demos? Get new ones by email.

A short email when a new collection ships. Unsubscribe any time.

at

Almost there: check your inbox to confirm.Manage

15. Frosted Glass Modal Popup (opens in a new tab)

Published

CSS + JS
An alert dialog that blurs and dims the entire background page content with a CSS backdrop-filter overlay. Features a glass modal with warning icon, destructive confirm / cancel button pair, success feedback state, ESC key support, and overlay-click dismissal.

16. VisionOS Floating App Dock (opens in a new tab)

Published

CSS + JS
A spatial-computing dock aesthetic inspired by Apple Vision Pro — a thick glass capsule housing six app icons with unique gradient tiles, hover scale-and-glow, bounce-on-click, and a floating glass app window that opens per-app with content and a close button.
FAQ

Frequently asked questions

How do I create a frosted glass effect in CSS in 2026?
Three CSS properties do the entire job. First, on the glass element, set a semi-transparent background — usually background: rgba(255,255,255,0.12) for a light frosted tint. Second, apply backdrop-filter: blur(24px) saturate(180%) (with the -webkit-backdrop-filter prefix for iOS Safari long-tail support) so the browser samples the pixels behind the element and applies a 24-pixel Gaussian blur with a 180% saturation boost — the saturation is what makes the panel feel like real glass rather than plain frosted plastic. Third, add a subtle outer stroke and inset highlight — border: 1px solid rgba(255,255,255,0.22) for the edge plus box-shadow: inset 0 1px 0 rgba(255,255,255,0.28) for the top-edge light-catching bevel. The three combined create a convincing physical-glass surface. Both demos in this collection ship exactly this recipe, tuned for their respective backdrops.
Why does my backdrop-filter not work?
The most common cause: the element behind the glass is a solid opaque colour with no variation, so the blur has nothing to blur. Frosted glass only reads as frosted glass when there's colour behind it to distort — swap your solid background for a multi-stop linear-gradient or a real photo and the effect appears instantly. Second most common cause: an ancestor element has overflow: hidden combined with transform or filter, which creates a new stacking context that clips backdrop-filter's sampling area. Third: some Safari versions before 15.4 need the -webkit-backdrop-filter prefix — always ship both prefixed and unprefixed versions. Fourth: Firefox versions before 103 don't support backdrop-filter at all — Firefox 103+ ships it natively, older versions fall through to the @supports fallback.
What's the difference between frosted glass and glassmorphism?
They're closely related but not identical. **Frosted glass** is the technical CSS effect — the specific combination of backdrop-filter: blur() plus a semi-transparent background plus an inset highlight. **Glassmorphism** is the broader visual design language named by Michal Malewicz in 2020 that uses frosted glass as its signature material, paired with vibrant multi-colour backdrops (the colourful photo or gradient behind the glass), soft floating shadows to lift the panel off the background, subtle 1-pixel borders, and a general aesthetic of layered translucent surfaces. So: every glassmorphism design uses frosted glass, but not every frosted-glass effect is glassmorphism — you could put a frosted glass panel over a monochrome background and it would still be frosted glass, just not the full glassmorphism aesthetic. Demo 01 in this collection is closer to pure glassmorphism (colourful multi-radial backdrop, floating card); demo 02 uses frosted glass as functional UI chrome (notification overlay) which is more of a system-UI application of the technique.
How do I make frosted glass accessible?
Three rules to preserve readability without abandoning the effect. First, keep text contrast at WCAG AA levels — at least 4.5:1 for body copy against the effective panel colour. A frosted glass panel with white text needs a dark enough underlying region for the contrast to hold; if your backdrop is bright yellow, the text needs a stronger tint boost via background: rgba(0,0,0,0.30) on the glass. Second, always include a @supports not (backdrop-filter: blur(1px)) fallback with a solid semi-opaque background — browsers without support (Firefox < 103, older Safari) then get a readable dark or light panel instead of transparent text on a busy backdrop. Third, respect @media (prefers-reduced-motion: reduce) for any animated blur transitions — dynamic blur changes can trigger motion sickness in vestibular-sensitive users. Bonus rule: increase the tint alpha (say from 0.12 to 0.20) for users who report low-vision issues by adding a prefers-contrast: more media query.
Does backdrop-filter hurt performance?
Yes, but usually not enough to matter. backdrop-filter forces the browser to composite the element on its own GPU layer and re-sample the pixels behind it on every paint — a 24-pixel Gaussian blur is a real GPU operation, not a static image. Best practices to keep it fast: (1) Never nest frosted-glass elements inside other frosted-glass elements — the blur cost compounds and can drop frame rates to 20fps on lower-spec devices. (2) Avoid animating blur values (going from blur(0) to blur(24px) on hover) — the shader recompiles on every frame; use opacity or transform animations instead if you need motion. (3) For panels floating over video backgrounds, add transform: translateZ(0) or will-change: backdrop-filter to force GPU compositing — otherwise some browsers re-render the blur every video frame causing significant jank. (4) Prefer smaller blur values (16-24px) over dramatic ones (48-64px) when possible — the perceptual difference is small but the GPU cost scales with blur radius.
Can I use frosted glass with real photos or videos as the backdrop?
Yes — that's actually the ideal use case since real photos have the colour variety that makes glassmorphism sing. Replace the CSS gradient behind the glass panel with background: url('/hero.jpg') center/cover for a static image. For a video backdrop, use a real HTML video element as the sibling with the glass panel absolutely positioned above it. Two watchouts: (1) The photo should be visually busy enough that the blur produces varied colour through the glass — a solid-colour landscape photo blurs to a boring monochrome panel. Pick photos with 3+ distinct colour regions. (2) On video backdrops, browser GPU load is much higher because every video frame triggers a fresh blur recomputation. Test on an iPhone SE or a mid-range Android before shipping; if the frame rate drops, lower the blur radius or add will-change: backdrop-filter to force better GPU compositing. Demo 01 in this collection ships with a multi-radial-gradient backdrop that stands in for a real photo — swap it for your own image with one CSS line.
How does this compare to a plain background-color with low opacity?
Very different. background: rgba(255,255,255,0.2) gives you a translucent overlay — you see the underlying content through it, but nothing gets blurred. The result reads as a coloured film on top of the content, not as glass. backdrop-filter: blur() actively distorts the underlying pixels, which is what your eye interprets as looking through frosted glass. The difference is most obvious over busy backgrounds: with plain transparency, sharp edges and text underneath remain sharp and legible through the overlay (usually visually competing with the overlay's own content). With frosted glass, those edges soften and blur, letting the overlay's content dominate the visual hierarchy while the backdrop's colours still influence the mood. This is why iOS 26 uses frosted glass for notification centre chrome — the underlying app content is still visible enough to preserve context, but blurred enough that the notification stays the focal point.
How is this different from libraries like Tailwind Glass, Glassmorphism.com, or Framer's Glass component?
**Tailwind CSS** ships utility classes that map directly to the CSS properties this collection uses: backdrop-blur-xl = backdrop-filter: blur(24px), bg-white/10 = background: rgba(255,255,255,0.1), border border-white/20 = border: 1px solid rgba(255,255,255,0.2). Copy the structural decisions (blur strength, tint alpha, inset highlight) from these demos and translate to Tailwind utilities in seconds — nothing framework-specific to unlearn. **Glassmorphism.com** is a UI kit that packages pre-styled glass components; for a design system, that's fine, but you pay in bundle size and inherit their design decisions. **Framer's Glass component** is native to Framer Motion and includes animation primitives — if you're building in Framer, use it directly. For any framework where you want portable CSS, the five demos here ship raw so you can lift the technique and drop it into React, Vue, Svelte, Astro, or vanilla HTML with zero adaptation.
How do I build a sticky navbar that becomes frosted glass only on scroll?
The cleanest pattern uses an IntersectionObserver watching an invisible sentinel element at the top of the page — much better performance than a scroll event listener that fires dozens of times per second. Recipe: (1) Place an invisible 1-pixel-tall sentinel element as the first child of your page. (2) Give your position: sticky navbar a base state of background: transparent + backdrop-filter: none. (3) In JS, create an IntersectionObserver that watches the sentinel; on state change, add or remove .is-scrolled on the navbar. (4) Style .is-scrolled with background: rgba(255,255,255,0.14) + backdrop-filter: blur(24px) saturate(180%) + a subtle bottom border. Add transition: background .35s, backdrop-filter .35s to the base navbar so the state change animates smoothly. Total JS: about 8 lines. Zero scroll-event listeners, zero throttling, zero libraries. Demo 03 (CSS Sticky Glassmorphism Navbar Blur on Scroll) ships the full recipe. Falls back gracefully — browsers without IntersectionObserver simply never trigger the class and the navbar stays transparent (page still works).
How do I put a frosted glass sidebar on a dashboard?
The critical requirement: the sidebar needs colourful content BEHIND it in the stacking order, otherwise backdrop-filter has nothing to blur. Correct setup: give your dashboard's outer container a colourful background (gradient, photo, or a mesh of radial-gradients) — that's your visual base. Then use CSS Grid: display: grid; grid-template-columns: 260px 1fr to put the sidebar in a 260-pixel left column and the main content in the remaining space. The sidebar itself uses background: rgba(255,255,255,0.10) + backdrop-filter: blur(28px) saturate(180%) + a right-side border. The main content area on the right is rendered on top of the same colourful backdrop as a semi-opaque overlay (typically rgba(15,20,30,0.75) with its own solid card backgrounds inside), so both regions of the dashboard share the same visual foundation while only the sidebar shows glass. Demo 04 (CSS Frosted Glass Sidebar Navigation Menu) ships this pattern with 6 nav items, badges, and a user profile card at the bottom. On mobile the sidebar collapses to hidden — real production would trigger a hamburger drawer via a <dialog> element.

Related collections

20 CSS 3D Effects preview

20 CSS 3D Effects

20 hand-coded CSS 3D patterns covering the transform pipeline reference build, the perspective property versus the perspective function, perspective-origin as the camera position, why transform function order changes the result, backface-visibility on two sided elements, what silently flattens preserve-3d, building a cube from six faces, transform-origin in three dimensions, translateZ versus scale for depth, z-fighting on coplanar surfaces, rotate3d and the transform matrix, plus ring layouts, stacked z-planes, pointer tilt with parallax, a hinged page-turn flipbook, a drag-rotate cube navigator, an extruded synth panel, perspective floor geometry, nested 3D contexts, and helix distribution. 14 demos are pure CSS; 6 use vanilla JavaScript.

22 CSS Brutalism preview

22 CSS Brutalism

22 hand-coded brutalist and neubrutalist CSS designs covering the full spectrum of the aesthetic — from the anti-design brutalism of 2014-2018 (raw system fonts, zero border radius, monochrome density, visible structure) through to the neubrutalism of 2021-present (bright pastel fills, thick black borders, hard offset shadows with zero blur, rounded blocks). The neubrutalist half ships SaaS pricing cards with sticker badges, a pastel admin dashboard, signup forms, rotated feature cards, an offset-shadow navbar, a playful button set, a native dialog modal, a testimonial wall, blog cards, chunky toggles, a landing hero, an image gallery, stats panels and a rounded footer. The brutalist half covers product grids, raw form controls, a monochrome data dashboard, a portfolio index, indie SaaS pricing, Windows 95 desktop chrome, editorial long-read and a streetwear catalog. Every design is scoped under a .brt-NN prefix for no-collision pasting, guards prefers-reduced-motion, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

20 CSS Claymorphism preview

20 CSS Claymorphism

20 hand-coded CSS claymorphism designs covering the three-layer shadow recipe that defines the style, inner highlight and inner shadow layering, the border radius scale that makes shapes read as puffy rather than merely rounded, claymorphism compared side by side with neumorphism, a clay and glassmorphism hybrid, single light-source discipline across a layout, depth tiers for visual hierarchy, a Tailwind implementation with both arbitrary values and theme tokens, squishy button press states, toggles and checkboxes, inset input wells and search bars, badge and pill systems, cards, popover-based modals, pricing tables, mobile tab bars, app icon grids, toast and alert bubbles, dark mode shadow recalibration, and the paint cost of animating shadows. 19 demos are pure CSS; 1 uses vanilla JavaScript.

Search CodeFronts

Loading…