01. Tailwind Glassmorphism Navbar for SaaS Landing Pages (opens in a new tab)
bg-white/50 border-white/60 backdrop-blur-lg backdrop-saturate-[1.8], and the links it simply hid on phones now live in a zero-JS Popover API glass menu.11 Tailwind CSS glassmorphic sticky navbars for SaaS landing pages, portfolio sites, dark-mode marketing headers, and mobile menus — spanning a frost-on-scroll transparent bar, a floating glass pill, frosted dropdown and mega menus, an off-canvas drawer, animated gradient-border glass, a WCAG-AA accessible build, a zero-JS backdrop-blur baseline, and a Next.js Framer Motion header. Scoped under .tgn-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.
Related28 Tailwind Hamburger Menus24 Tailwind Liquid Glass Navbars20 Tailwind CSS Responsive Navbars11 CSS Glassmorphic Sticky Navbars
Premium template pickPartner: Cruip
Affiliate linkBuilding the whole landing page, not just this section?
You just browsed 11 Tailwind glassmorphic navbars. Cruip makes complete Tailwind CSS templates for landing pages, SaaS websites and admin dashboards, coded in HTML, React, Next.js and Vue and used by 60K+ developers. Single templates start at $49.
Cruip. We may earn a commission, at no extra cost to you.
bg-white/50 border-white/60 backdrop-blur-lg backdrop-saturate-[1.8], and the links it simply hid on phones now live in a zero-JS Popover API glass menu.animation-timeline: scroll(), with no scroll listener. Because Tailwind can't guarantee that a timeline utility is emitted after the animation shorthand that resets it, the three animation lines live in one custom @utility, applied behind supports-[animation-timeline:scroll()]:.@theme token, so border-tgn03-neon/55, the glow shadows and the CTA all re-theme together.max-sm:fixed max-sm:bottom-3 — no second component.group/item). The port also fixes the double-blur bug: the bar's frost moves to a before: layer, so the bar is no longer a backdrop root and the panels inside it blur the real page instead of a flat grey copy of the bar.<button popovertarget>, Esc to close, light dismiss, focus returned to the trigger — still with zero JavaScript.sticky top-0, a fixed h-14 (zero CLS) and one GPU-composited backdrop-blur-md. The port adds a zero-JS reading-progress hairline driven by a scroll timeline, and scroll-pt-20 so in-page anchors never land under the bar.@property (the one thing that must stay CSS), the spin is an @theme animation token, and the ring itself is a masked before: layer.not-supports-[backdrop-filter:blur(1px)]: fallback, a solid bar under prefers-reduced-transparency and contrast-more:, a two-tone focus ring, a skip link, and Atkinson Hyperlegible for the type.data-* attributes read by data-[scrolled=true]: and data-hidden: variants); the js field also carries the production Header.tsx using motion's useScroll.backdrop-blur. A SaaS header like Demo 01 uses bg-white/60 plus backdrop-blur-md on a sticky top-0 wrapper, with a border-b border-white/20 hairline and a faint shadow to lift it off the hero. The fill opacity is what you tune first — too opaque and it stops reading as glass, too clear and the blur has nothing to tint. Keep the element backgrounded with a slash-opacity colour rather than a solid; backdrop-blur only blurs what sits behind the box, so a fully opaque bg-white hides the effect entirely. Pair it with supports-[backdrop-filter]:bg-white/60 and a higher opaque fallback fill for browsers that skip the filter, so the bar never renders invisible.bg-white instead of bg-white/60 — so there is nothing translucent for the blur to show through. Second, an ancestor has overflow-hidden, a transform, or its own filter; any of those creates a containing block that clips the backdrop region, and the blur silently does nothing. Keep the sticky bar a direct child of <body> or a plain wrapper with none of those. Third, the bar sits below the scrolled content in paint order — give it z-50 so the hero actually passes behind it. On iOS Safari you also need the vendored filter, which Tailwind's backdrop-blur emits for you, but a parent overflow or transform will still break it there first, so check the ancestor chain before you blame the browser.bg-transparent and no border over a full-bleed image, then swap to bg-white/70 backdrop-blur-md border-b once the user scrolls past the hero, as Demo 02 does. The clean mechanism is not a scroll listener — that fires on every frame and janks — but an IntersectionObserver watching a 1px sentinel at the top of the hero: when it leaves the viewport, toggle a scrolled class on the header. Put transition-colors duration-300 on the bar so the frost fades in rather than snapping. Demo 10 is the React and Next.js App Router version of the same idea, driving the class with Framer Motion's useScroll. Transition the text colour too — white over the photo, slate once the glass fill lands — or the links wash out and disappear at the exact handover point.text-slate-900 links rather than grey, and an opaque solid fallback so the bar never drops below its tested contrast. Test against the worst-case background, not the average. Honour prefers-reduced-transparency by swapping to an opaque fill, and keep a visible :focus-visible ring on every link — the frosted surface makes default focus outlines hard to see. Any icon-only control, like the hamburger <button>, needs an aria-label because there is no text for a screen reader to announce.sticky, not fixed. Demo 07 is the Core Web Vitals baseline: a sticky top-0 bar with a fixed h-14, so it reserves its own space in normal flow and never shifts the content below it — that is zero CLS by construction. A fixed header pulls itself out of flow, so you then have to pad the page top by the exact header height, and any mismatch jumps the layout on load. If you must go fixed, add scroll-mt-14 to anchor targets so in-page links don't land hidden under the bar. Keep the effect to a single backdrop-blur — stacking blur, an animated gradient border and a heavy shadow forces extra compositor layers and can stutter the scroll on low-end phones. One GPU-composited filter plus a hairline border is the whole rendering cost of this demo.group, mark the panel invisible opacity-0, and reveal it with group-hover:visible group-hover:opacity-100 plus a transition. Give the panel the same bg-white/70 backdrop-blur-lg fill so the menu reads as part of the glass system. The bug everyone hits is keyboard access: hover alone locks out anyone not using a mouse, so add group-focus-within:visible group-focus-within:opacity-100 and make the triggers real <a> or <button> elements that can take focus. Keep a small pt-2 gap inside the hover area so the pointer doesn't cross a dead zone between the trigger and the panel and dismiss the menu mid-move. The three-column mega panel is just a grid grid-cols-3 laid inside that same frosted container.<input type="checkbox"> sits before the drawer, and the hamburger is a <label> pointing at it. The drawer starts at translate-x-full and slides in with peer-checked:translate-x-0 transition-transform, while a sibling scrim fades in via peer-checked:opacity-100 over a backdrop-blur-sm blurred backdrop. Two things the pure-CSS version cannot do and you should add in JS for production: lock <body> scroll while the drawer is open, and trap focus inside it so Tab doesn't wander behind the scrim. Wire the Escape key to uncheck the box so the drawer closes, and give the hamburger an aria-expanded that flips with state plus an aria-label, since an icon-only control announces nothing on its own.backdrop-blur that repaints on every scroll frame costs real battery and can stutter; the zero-JS sticky bar in Demo 07 with one light blur is the safe floor. And never stack a heavy neon glow, an animated gradient border and blur together, as Demos 03 and 08 do, on a page that already animates heavily elsewhere.32 free CSS accordions covering pure-CSS FAQ blocks with details/summary, mobile navigation menus, e-commerce filter sidebars, nested tree views, exclusive single-open groups and smoothly animated height:auto — plus 26 visual variations in vertical, horizontal and hybrid layouts. Copy-paste HTML and CSS, no JavaScript.
39 hand-coded CSS breadcrumbs — Schema.org BreadcrumbList Microdata + WCAG 2.2 accessible (Google Rich Results eligible), :has() responsive collapse, dark/light theme toggle with color-mix, Shopify/Amazon e-commerce filter chip removal, Vercel/Linear/Notion SaaS dashboard app-shell pattern, Docusaurus/Mintlify sticky scroll-shrink header, Amazon-style dropdown sibling menus, NFT/Web3 holographic shimmer (@property + conic-gradient), SaaS marketing gradient text, Airbnb filter chip with container queries, editorial blog wave underline, developer docs one-click path copy (Clipboard API), and 26 more. Semantic HTML: <nav aria-label='Breadcrumb'> + <ol> + aria-current='page'. Framework-agnostic, MIT-licensed.
26 hand-coded CSS circular and radial menu designs, from the floating-action FAB speed dial and dashboard radial hubs to game-style pie-slice wheels, SVG gooey metaball fans, hexagonal honeycombs, iris-aperture reveals, orbiting satellites on offset-path, compass-rose directional nav, sci-fi HUD rings, glassmorphism popovers built on the native Popover API, vinyl-record players, and full-takeover nebula overlays on native dialog. Every design uses CSS trigonometry (sin(), cos()) or the counter-rotation trick for positioning, ships real keyboard navigation, aria-labels on icon-only buttons, and a prefers-reduced-motion guard. Copy-paste HTML, CSS and vanilla JS with zero framework dependencies — MIT licensed.