Dental mega menus, five drop-in components

Five different mechanisms, not five skins of one idea. Each one is a self-contained header: one CSS file, one JS file, one HTML fragment, tokens for every colour, radius, font and space. Each ships with its header scroll behaviour built in.

Built against the failure that killed the Keystone panel on 2026-09-16: a floating dark box, narrower than the container, misaligned to the nav, page text bleeding through, four cramped columns and a wrapping button. Every menu here spans the full container, aligns to the nav bar's bottom edge, sits on a solid surface over a page scrim, keeps columns at 280 px or wider, clamps blurbs to two lines, sets icons at 24 px, and keeps the phone and the Book button reachable inside the panel.

01Classic practice panel open at 1440

Classic practice panel

Hover and focus open a light full-width panel

Three service-group columns plus a photo offer card, hours strip beneath.

Practice Clearbrook Family Dental Type Marcellus / Source Sans 3 Header Headroom, sticky, compacts when stuck
QC checklist, gate B lines
  • panel spans the full container width and aligns to the nav bar's bottom edge
  • solid opaque surface plus a page scrim, no page text shows through
  • every column at least 280 px wide (measured, see the table)
  • blurbs at most 2 lines, clamped in CSS
  • icons 22 px or larger
  • nothing wraps: nav links, buttons and link names are nowrap
  • featured card with a photo or offer reads at a glance
  • phone and Book reachable inside the panel
  • contrast probed against a light hero and a dark hero
  • hover, cold click, hover-then-click, mouse-leave, focus, Escape from trigger, Escape from a panel link, Tab cycle
  • touch: accordion inside the drawer at 390
  • header headroom, sticky, compacts when stuck, phone and Book reachable at every scroll position
Open demo
02Split panel, live right side open at 1440

Split panel, live right side

Hover or focus a group on the left rail, the right side swaps

Group rail plus a live pane: service list, photo, who it is for.

Practice Westmont Dental Studio Type Cabinet Grotesk / Geist Header Headroom, sticky, compacts when stuck
QC checklist, gate B lines
  • panel spans the full container width and aligns to the nav bar's bottom edge
  • solid opaque surface plus a page scrim, no page text shows through
  • every column at least 280 px wide (measured, see the table)
  • blurbs at most 2 lines, clamped in CSS
  • icons 22 px or larger
  • nothing wraps: nav links, buttons and link names are nowrap
  • featured card with a photo or offer reads at a glance
  • phone and Book reachable inside the panel
  • contrast probed against a light hero and a dark hero
  • hover, cold click, hover-then-click, mouse-leave, focus, Escape from trigger, Escape from a panel link, Tab cycle
  • touch: accordion inside the drawer at 390
  • header headroom, sticky, compacts when stuck, phone and Book reachable at every scroll position
Open demo
03Editorial photo tiles open at 1440

Editorial photo tiles

Hover and focus open a dark full-bleed panel

One photo tile per group, group name set large, services listed beneath.

Practice Verano Dental Type Playfair Display / Inter Header Headroom, fixed over the hero, solid once stuck
QC checklist, gate B lines
  • panel spans the full container width and aligns to the nav bar's bottom edge
  • solid opaque surface plus a page scrim, no page text shows through
  • every column at least 280 px wide (measured, see the table)
  • blurbs at most 2 lines, clamped in CSS
  • icons 22 px or larger
  • nothing wraps: nav links, buttons and link names are nowrap
  • featured photo tiles read at a glance
  • phone and Book reachable inside the panel
  • contrast probed against a light hero and a dark hero
  • hover, cold click, hover-then-click, mouse-leave, focus, Escape from trigger, Escape from a panel link, Tab cycle
  • touch: accordion inside the drawer at 390
  • header headroom, fixed over the hero, solid once stuck, phone and Book reachable at every scroll position
Open demo
04Compact card grid open at 1440

Compact card grid

Hover and focus open a short panel that fits under a short hero

Two rows of three service cards with illustrative prices, two stacked offer cards on the right.

Practice Pine & Post Dental Type Funnel Display / Reddit Sans Header Headroom, sticky, compacts when stuck
QC checklist, gate B lines
  • panel spans the full container width and aligns to the nav bar's bottom edge
  • solid opaque surface plus a page scrim, no page text shows through
  • every column at least 280 px wide (measured, see the table)
  • blurbs at most 2 lines, clamped in CSS
  • icons 22 px or larger
  • nothing wraps: nav links, buttons and link names are nowrap
  • featured card with a photo or offer reads at a glance
  • phone and Book reachable inside the panel
  • contrast probed against a light hero and a dark hero
  • hover, cold click, hover-then-click, mouse-leave, focus, Escape from trigger, Escape from a panel link, Tab cycle
  • touch: accordion inside the drawer at 390
  • header headroom, sticky, compacts when stuck, phone and Book reachable at every scroll position
Open demo
05Full-screen overlay open at 1440

Full-screen overlay

One Menu button opens a focus-trapped overlay, desktop and phone alike

Services grid, patient links, doctor row, hours, phone and Book.

Practice Solstice Dental Co. Type Sora / Commissioner Header Pinned compact bar
QC checklist, gate B lines
  • panel spans the full container width and aligns to the nav bar's bottom edge
  • solid opaque surface plus a page scrim, no page text shows through
  • every column at least 280 px wide (measured, see the table)
  • blurbs at most 2 lines, clamped in CSS
  • icons 22 px or larger
  • nothing wraps: nav links, buttons and link names are nowrap
  • featured offer block reads at a glance
  • phone and Book reachable inside the panel
  • contrast probed against a light hero and a dark hero
  • hover, cold click, hover-then-click, mouse-leave, focus, Escape from trigger, Escape from a panel link, Tab cycle
  • touch: the overlay itself at 390
  • header pinned compact bar, phone and Book reachable at every scroll position
Open demo

How to drop one into a build

  1. Copy mega.css and mega.js into the build's build/assets-src/ and append the CSS to the site stylesheet (or keep it as its own file and link it after the site CSS).
  2. Paste fragment.html into the generator's header() partial. Replace the practice name, the phone, the services array and the offer. Keep the data-mm-* hooks, they are the whole contract.
  3. Repoint the image paths from ../img/ at the build's own assets/img/, and keep the WebP plus srcset pattern.
  4. Override the tokens in the :root block at the top of mega.css with the build's own palette, fonts, radius and spacing. Nothing below that block is hard-coded, so a restyle is a token diff.
  5. Pick the header behaviour: leave --mm-header-mode: headroom, or set --mm-header-mode: pinned (or data-mm-header-mode="pinned" on the header) for a bar that never hides.
  6. Run the gate B probes on the build: hover, cold click, hover-then-click, mouse-leave, focus, Escape from the trigger, Escape from a panel link, Tab cycle, touch at 390, and take the open-state screenshot at 1440.

Rebuild these demo pages with node build/build-demos.mjs from industries/dental/_shared/mega-menus/. The demos and the fragments are generated, the CSS and JS files are the hand-authored source.

Fictional demo practices. All names, people, reviews, prices and figures are illustrative. Demo work by Ziwi Dental Marketing.