Snippets Buttons

Bootstrap 5 Blob Hover Buttons (Liquid Fill)

A set of outline buttons in three sizes, on light and brand surfaces, that fill with a liquid blob animation on hover and keyboard focus.

Bootstrap 5 No jQuery Aug 2019 3.3K views

<section class="wdw-stage">
  <div class="container" style="max-width:960px">
    <div class="text-center mb-4 mb-lg-5">
      <span class="wdw-eyebrow">Buttons</span>
      <h2 class="wdw-heading display-6 mt-1 mb-2">Liquid blob hover buttons</h2>
      <p class="wdw-muted mb-0">Hover or focus a button and the fill pours in like liquid.</p>
    </div>
    <div class="row g-4">
      <div class="col-md-6">
        <div class="wdw-card p-4 p-lg-5 h-100">
          <p class="wdw-eyebrow mb-4">On light surfaces</p>
          <div class="d-flex flex-column align-items-center gap-4">
            <button type="button" class="wdw-blob btn btn-outline-primary rounded-pill is-demo">Get started</button>
            <button type="button" class="wdw-blob wdw-blob--solid btn btn-primary rounded-pill">Start your free trial</button>
            <button type="button" class="wdw-blob wdw-blob--ghost btn rounded-pill">Learn more</button>
            <button type="button" class="wdw-blob btn btn-outline-primary rounded-pill">View pricing <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></button>
          </div>
        </div>
      </div>
      <div class="col-md-6">
        <div class="wdw-card wdw-aurora border-0 p-4 p-lg-5 h-100">
          <p class="wdw-eyebrow text-white-50 mb-4">On brand panels</p>
          <div class="d-flex flex-column align-items-center gap-4">
            <button type="button" class="wdw-blob btn btn-outline-light rounded-pill is-demo wdw-blob--light">Get started</button>
            <button type="button" class="wdw-blob wdw-blob--solid btn btn-light rounded-pill wdw-blob--light">Start your free trial</button>
            <button type="button" class="wdw-blob wdw-blob--ghost btn rounded-pill wdw-blob--light">Learn more</button>
            <button type="button" class="wdw-blob btn btn-outline-light rounded-pill wdw-blob--light">View pricing <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14M13 6l6 6-6 6"/></svg></button>
          </div>
        </div>
      </div>
    </div>
  </div>
  <!-- Goo filter: when this SVG is missing the buttons fall back to plain, unfiltered blobs. -->
  <svg width="0" height="0" style="position:absolute" aria-hidden="true" focusable="false">
    <defs>
      <filter id="wdw-goo">
        <feGaussianBlur in="SourceGraphic" result="blur" stdDeviation="8"/>
        <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 21 -7" result="goo"/>
        <feBlend in2="goo" in="SourceGraphic"/>
      </filter>
    </defs>
  </svg>
</section>

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

Free to use in personal and commercial projects under the MIT license.