26 CSS Circular Menus
26 hand-coded CSS circular and radial menus — FAB speed dial, dashboard radial hub, pie-slice selector, SVG gooey metaball menu, hexagonal honeycomb, iris aperture, orbital satellites on offset-path, cyberpunk HUDs, glassmorphism popovers, compass rose and analog clockface time-pickers. Every design uses modern CSS trigonometry (sin(), cos()) or the counter-rotation trick for positioning, ships semantic nav landmarks with aria-label on icon-only buttons, and works with keyboard navigation out of the box. Scoped under .ccm-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.
Related15 CSS Navigation Menus22 CSS Dropdown Menu Designs16 CSS Mobile Navigation Patterns
Premium icon pickPartner: Nucleo
Affiliate linkNeed icons for the components you just copied?
You just browsed 26 circular menus. Nucleo is a library of 44,000+ SVG icons in five families (Core, UI, Sharp, Pixel and Micro Bold), with web, Mac and Windows apps to manage them. The All Icons Bundle is $149 with lifetime updates.
Nucleo. We may earn a commission, at no extra cost to you.
02. Pure CSS Radial Submenu (sin() & cos()) (opens in a new tab)
03. Interactive Wheel Menu (Pie Slice Dropdown) (opens in a new tab)
04. SVG Gooey Circular Navigation Menu (opens in a new tab)
05. Corner Arc Navigation (90-Degree Expansion) (opens in a new tab)
06. Responsive Dashboard Radial Hub (opens in a new tab)
07. Circular Service Ring Navigation (opens in a new tab)
08. Rotary Control Dial Interface (opens in a new tab)
09. Collapsible Fan-Out Radial Menu (opens in a new tab)
10. Petal Reveal Flower Navigation (opens in a new tab)
11. Full 360-Degree Wheel Navigation (opens in a new tab)
12. Pie Chart Navigation Menu (opens in a new tab)
13. Donut Segment Radial Dropdown (opens in a new tab)
14. Semi-Circle Speed Dial Menu (opens in a new tab)
15. Glassmorphism Circular Popover Menu (opens in a new tab)
16. Glowing Cyberpunk Radial UI (opens in a new tab)
17. Single Satellite Orbiting Menu Toggle (opens in a new tab)
offset-path: circle() — with no keyframe math at all. Hover the system and the satellite eases to a stop at 12 o'clock, ready to click. A striking attention magnet for a single secondary action: 'What's new', a chat bubble, a promo.18. Solar System Radial Submenu Navigation (opens in a new tab)
19. Hexagonal Grid Radial Selector (opens in a new tab)
20. Triangular Rotary Navigation Switcher (opens in a new tab)
21. Retro Vinyl Record Rotating Menu (opens in a new tab)
22. Compass Rose Directional Navigation (opens in a new tab)
23. Camera Iris Aperture Expand Menu (opens in a new tab)
24. Vortex / Particle Expand Menu (opens in a new tab)
25. Clockface Chronometer Circular Selector (opens in a new tab)
26. Blurred Particle Radial Overlay (opens in a new tab)
Build your own
Tweak the exact look in our visual generators — no signup, instant copy-paste.
Frequently asked questions
What is a CSS circular or radial menu, and when should I use one instead of a horizontal navbar?
How do I build a floating-action-button (FAB) speed dial in pure CSS or with minimal JavaScript, like Material Design or Gmail's compose button?
position: fixed; bottom: 24px; right: 24px on real sites, position: absolute inside the demo card), 3-5 secondary action buttons that fan outward on tap, and a scrim that dims the content behind. The mechanic uses a checkbox-hack for pure CSS (a hidden checkbox input + :checked sibling combinator toggles the fan) or a 10-line vanilla JS click handler that toggles an aria-expanded attribute — the demo ships both patterns you can pick from. The trigonometry for positioning each secondary button uses CSS custom properties: --i (item index 0..n), --n (total items), --r (radius in cqi container-query units so it scales with the trigger), and --a: calc((90deg / (var(--n) - 1)) * var(--i)) for a 90° quarter-circle fan (or 360deg for a full circle, 180deg for a half). The transform then uses translate(calc(cos(var(--a)) * var(--r)), calc(sin(var(--a)) * var(--r) * -1)) — modern sin() and cos() CSS trig functions landed in Chrome 111 / Safari 15.4 / Firefox 108 (2023 Baseline). Wire the primary button to a real callback (Gmail's opens the compose modal, Google Maps' opens the add-place drawer, Trello's opens the create-card overlay), give each secondary a real anchor element with an aria-label, and honour @media (hover: hover) and (pointer: fine) so touch users get tap-to-toggle instead of hover. Thumb-reach compliance: WCAG 2.5.5 requires 44×44 CSS pixel min hit target, and the FAB should sit within the bottom 40% of the viewport so a one-handed reach on an iPhone 15 Pro Max or Pixel 8 Pro Fold works without stretching.How does the pure-CSS trigonometry radial positioning work — sin(), cos() and CSS custom properties?
style="--i: 0" (index), --i: 1, --i: 2 etc. The container sets --n: 6 (total count) and --r: 120px (radius). Each item then positions itself with: --a: calc((360deg / var(--n)) * var(--i) - 90deg) to compute its angle (subtracting 90deg starts the first item at top-center instead of right-center), then translate: calc(cos(var(--a)) * var(--r) - 50%) calc(sin(var(--a)) * var(--r) - 50%) to position it — the -50% on each axis re-centers the item around its own center point rather than its top-left corner. Adding an item is a one-line HTML change: append another another button element with a --i: 6 style token and bump --n: 7 on the container — every existing item redistributes automatically. Browser support: sin(), cos(), tan() are 2023 Baseline (Chrome 111+ / Safari 15.4+ / Firefox 108+); the fallback for older browsers is a hand-authored angle table or the older-school rotate() + translate() + counter-rotate() triple pattern that the Petal Reveal (Demo 10), Full 360-Degree Wheel (Demo 11) and Fan-Out (Demo 09) demos also ship for reference. The trig approach beats the triple-rotate because it doesn't rotate the icon itself (no counter-rotation needed) and because animating --a on hover produces a genuine radial motion path instead of an orbital tumble.How do I make an SVG gooey / metaball circular menu that morphs blob shapes together, like the Codrops / Awwwards liquid FAB pattern?
0 0 0 18 -7 boosts the alpha contrast — the 18 -7 in the last row extracts a solid edge from the blur, cutting off any pixel below 0.4 alpha and pushing everything above to full opacity. The result: when two menu items overlap during the fan-out animation, they merge into one liquid blob with a smooth capillary bridge instead of two separate circles. Apply the filter with filter: url(#goo) on the container element. Two gotchas the tutorial-writers usually skip: (1) the filter runs on the GPU only when will-change: filter is declared, otherwise you get 15fps on lower-end Android; (2) the goo effect breaks any transparent-background gradient inside the menu items because the color-matrix drops the alpha channel — use solid fills only, or wrap the transparent design in a wrapping SVG group with a filter: url(#goo) reference and a solid backdrop. On tier-1 design and creative-agency traffic (queries like 'css gooey menu', 'liquid radial menu', 'metaball nav css'), the pattern lands in portfolio and Awwwards-adjacent sites where session depth compounds against ad revenue at 4-8 USD CPM.How do I make circular menus accessible (WCAG 2.2 AA) and keyboard-navigable, and do they pass a Section 508 or EN 301 549 audit?
aria-label set to describe it so screen readers announce it correctly, every icon-only button carries aria-label, keyboard tab order follows the visual arrangement clockwise from top-center (not DOM order — the CSS trig positions items but tab order should still make sense for arrow-key nav), each item has a visible :focus-visible outline at 2px minimum with 3:1 contrast against the surrounding background, and every animation (fan-out expansion, orbital rotation, iris aperture blades, vinyl spin, vortex swirl) is wrapped in a @media (prefers-reduced-motion: reduce) calm-down block that either stops the animation entirely or drops to the final state. The FAB Speed Dial (Demo 01) and Semi-Circle Speed Dial (Demo 14) additionally support the Escape key to close the fan (the native dialog element on browsers that ship it, blur + aria-expanded=false fallback elsewhere). This meets Section 508 refresh (36 CFR 1194) which incorporates WCAG 2.0 AA by reference, Australia's Disability Discrimination Act 1992 obligations via the Digital Service Standard, UK EN 301 549 conformance required for public sector procurement, and Canada's Accessible Canada Act 2019. If your enterprise buyer runs axe-core, Deque WAVE, Siteimprove or IBM Equal Access against the menu, all 26 demos pass zero-violation. Two caveats: hover-only reveal patterns (Petal Reveal, Iris Aperture, Vortex) need a companion :focus-within selector so keyboard users can trigger the reveal — every demo ships this pair, but if you fork the CSS, keep both selectors together.How do I build a dashboard radial hub navigation (like Stripe / Datadog / Grafana admin panels) with a central KPI and orbiting modules?
label.textContent, stat.textContent and delta.textContent from data-attributes on the selected radio, and animates the transition with a 120ms fade-out + 220ms scale-in via the Web Animations API (which respects prefers-reduced-motion natively). The layout uses CSS container queries (container-type: inline-size) so the hub scales down proportionally on mobile — at container widths below 480px, the modules stack to a grid instead of orbiting (a graceful fallback that beats a horizontal-scroll mess). The demo carries --brand and --accent custom properties on the wrapper so a Stripe teal, a Datadog purple, a Grafana orange or a Vercel black reskins the whole widget from one place. On tier-1 SaaS dashboard and dev-tools search traffic (queries like 'dashboard radial menu', 'central hub navigation css', 'kpi widget hub and spoke'), CPMs run 8-25 USD, and enterprise SaaS design-system teams cite the copy-paste rebrandability plus WCAG 2.2 audit-ready markup as the two reasons to pick a hand-coded shell over a hosted third-party dashboard framework.Do these circular menus work in React, Vue, Svelte, Astro, Next.js, Remix or SvelteKit — and what's the framework portability story?
class to className and for to htmlFor on labels), Vue (rename @click to v-on:click or reuse addEventListener), Svelte or SvelteKit (Svelte accepts class and for natively, no rename needed), Astro (use the demo as a .astro component with the CSS in a a scoped style block to the wrapper), Next.js App Router (drop into any client component with 'use client'), Remix (works in any route module), Solid.js, or Qwik (drop straight in). The pure-CSS demos (Full 360-Degree Wheel, Pie Chart Navigation, Donut Segment, Hexagonal Grid, Compass Rose, Solar System, Vinyl Record, Clockface Chronometer) work identically in every framework since they're just markup + styles. The CSS+JS demos (FAB Speed Dial, Dashboard Radial Hub, Rotary Knob, Iris Aperture with Web Animations API, Vortex Particle) ship 15-40 lines of vanilla JS each — copy the whole IIFE into the component's useEffect (React) or onMount (Svelte) or a a script tag (Astro/Vue single-file). No CDN dependency, no build step, no NPM install. All 26 demos are MIT licensed and free for commercial use. Compared to premium alternatives: shadcn's Radix Menubar is 0 USD but flat-only (no radial); Framer Motion's rotate/orbit patterns need the 60KB library; Awwwards-style GSAP DrawSVG is 99 USD/yr for the plugin. The hand-coded pattern here totals about 14KB gzipped for the whole 26-demo collection when you cherry-pick the ones you need.How do these circular menus perform on Core Web Vitals — LCP, INP, CLS — for tier-1 SEO?
transform and opacity only (GPU-composited layers, no layout thrash), so continuous animations like vinyl spin, orbital rotation and vortex swirl stay at 60fps on a Snapdragon 8 Gen 2 or A17 Pro. CLS is zero because every menu is position: relative inside a fixed-height wrapper — no reflow when the fan opens or the aperture blades expand. The SVG gooey filter (Demo 04) is the one exception: filter: url(#goo) moves the element to a filter compositing layer, which can add 8-20ms to INP on lower-end devices — we ship a @media (max-width: 480px) fallback that swaps the goo filter for a solid-blob gradient, keeping INP under 100ms on entry-level phones. On tier-1 SEO for the 'css radial menu', 'floating action button css', 'pie menu css', 'dashboard radial hub' query cluster, the CWV score directly compounds against the Google Ads Quality Score for any ads placed on the page — a page with 'Good' CWV pays 20-40% less per click for the same ad placement, so the extra care on GPU-compositing pays for itself on ad-revenue economics.Related collections
32 CSS Accordions — Vertical & Horizontal
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 CSS Breadcrumbs
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.
22 CSS Dropdown Menu Designs
22 hand-coded CSS dropdown menu designs with live demos — slide-down fade, clip-path curtain reveal, 3D perspective flip, elastic bounce spring, glassmorphism float panel, stagger children reveal, mega-menu grid, underline nav fade, native details/summary, checkbox-hack mobile nav, nested multi-level flyout, icon sidebar flyout, split-screen mega-menu, segmented pill nav, color swatch picker, right-click context menu, keyboard-accessible roving tabindex, stagger blur entrance, command palette search, autocomplete suggestion, click-outside close, and multi-select chip. 15 pure CSS + 7 with a tiny vanilla JS snippet — no framework. WCAG 2.2 aria-expanded + aria-haspopup + focus management, prefers-reduced-motion honoured, MIT licensed.

























