Snippets Buttons

Bootstrap 5 Gooey Floating Menu with SVG Filter

A floating action button that pours a row of icon actions out of itself using a gooey SVG filter.

Bootstrap 5 No jQuery Mar 2020 2.5K views

<section class="wdw-stage">
  <div class="container" style="max-width: 640px;">
    <div class="wdw-card overflow-hidden" id="goo-app">
      <div class="wdw-aurora goo-screen text-center">
        <span class="wdw-eyebrow text-white-50">Navigation</span>
        <h2 class="wdw-heading h3 mb-1 text-white">Gooey menu</h2>
        <p class="mb-0 text-white-50">Tap the button and the actions pour out.</p>
        <svg width="0" height="0" style="position:absolute" aria-hidden="true" focusable="false">
          <defs><filter id="goo"><feGaussianBlur in="SourceGraphic" stdDeviation="8" result="blur"/><feColorMatrix in="blur" values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 20 -9" result="goo"/><feComposite in="SourceGraphic" in2="goo" operator="atop"/></filter></defs>
        </svg>
        <nav class="goo" id="goo-menu" aria-label="Quick actions">
          <div class="goo-blobs" aria-hidden="true">
        <span class="goo-blob" style="--i:1;--o:-2"></span>
        <span class="goo-blob" style="--i:2;--o:-1"></span>
        <span class="goo-blob" style="--i:3;--o:1"></span>
        <span class="goo-blob" style="--i:4;--o:2"></span>
            <span class="goo-blob goo-blob-main"></span>
          </div>
          <div class="goo-links" id="goo-links" inert>
          <a href="#" class="goo-item" style="--i:1;--o:-2"><svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 11l9-8 9 8M5 10v10h14V10"/></svg><span class="visually-hidden">Home</span><span class="goo-label" aria-hidden="true">Home</span></a>
          <a href="#" class="goo-item" style="--i:2;--o:-1"><svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg><span class="visually-hidden">Search</span><span class="goo-label" aria-hidden="true">Search</span></a>
          <a href="#" class="goo-item" style="--i:3;--o:1"><svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M4 5h16v12H8l-4 4z"/></svg><span class="visually-hidden">Messages</span><span class="goo-label" aria-hidden="true">Messages</span></a>
          <a href="#" class="goo-item" style="--i:4;--o:2"><svg viewBox="0 0 24 24" width="28" height="28" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="8" r="4"/><path d="M4 21c1-4 4-6 8-6s7 2 8 6"/></svg><span class="visually-hidden">Profile</span><span class="goo-label" aria-hidden="true">Profile</span></a>
          </div>
          <button type="button" class="goo-toggle" aria-expanded="false" aria-controls="goo-links" aria-label="Open menu"><span></span><span></span><span></span></button>
        </nav>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.