Cosmic Gooey Menu
Home
Snippets
Cosmic Gooey Menu
HTML
CSS
JS
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <div class="bg-grid"></div> <div class="menu-viewport"> <a class="node node-1" title="Analytics"> <i class="fa-solid fa-chart-simple"></i> </a> <a class="node node-2" title="Security"> <i class="fa-solid fa-shield-halved"></i> </a> <a class="node node-3" title="Settings"> <i class="fa-solid fa-gear"></i> </a> <div class="node center-trigger"> <i class="fa-solid fa-plus"></i> </div> </div> <svg class="filter-storage"> <defs> <filter id="premium-goo"> <feGaussianBlur in="SourceGraphic" stdDeviation="12" result="blur-heavy" /> <feColorMatrix in="blur-heavy" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 24 -11" result="liquid-bridge" /> <feBlend in="SourceGraphic" in2="liquid-bridge" mode="normal" /> </filter> </defs> </svg>
:root { --neon-blue: #00f0ff; --neon-purple: #bd00ff; --neon-pink: #ff007c; --bg-dark: #030307; } body { margin: 0; background: var(--bg-dark); height: 100vh; display: flex; justify-content: center; align-items: center; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, sans-serif; } .bg-grid { position: absolute; width: 100%; height: 100%; z-index: 1; background-image: linear-gradient(rgba(255, 255, 255, 0.02) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.02) 1px, transparent 1px); background-size: 30px 30px; background-position: center; } .menu-viewport { position: relative; width: 320px; height: 320px; z-index: 2; display: flex; justify-content: center; align-items: center; filter: url('#premium-goo'); } .node { position: absolute; width: 60px; height: 60px; border-radius: 50%; display: flex; justify-content: center; align-items: center; color: #ffffff; text-decoration: none; font-size: 20px; box-shadow: 0 0 20px rgba(0, 0, 0, 0.6); transition: transform 0.65s cubic-bezier(0.68, -0.6, 0.32, 1.6); transform: translate(0, 0) scale(0.9); cursor: pointer; } .node-1 { background: linear-gradient(135deg, var(--neon-blue), #0072ff); } .node-2 { background: linear-gradient(135deg, var(--neon-purple), #7000ff); } .node-3 { background: linear-gradient(135deg, var(--neon-pink), #ff0000); } .center-trigger { z-index: 12; width: 68px; height: 68px; background: #ffffff; color: #000000; font-size: 24px; box-shadow: 0 0 30px rgba(255, 255, 255, 0.2); transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s; transform: scale(1); } .menu-viewport:hover .center-trigger { transform: rotate(135deg); background: var(--neon-blue); color: #ffffff; box-shadow: 0 0 40px rgba(0, 240, 255, 0.4); } .menu-viewport:hover .node-1 { transform: translate(-85px, -50px) scale(1.1); } .menu-viewport:hover .node-2 { transform: translate(0px, -100px) scale(1.1); } .menu-viewport:hover .node-3 { transform: translate(85px, -50px) scale(1.1); } .filter-storage { position: absolute; width: 0; height: 0; }
//javascript
Ad #1
Ad #2
Scroll to Top