Snippets Animation

Bootstrap 5 Team Section with Hover Animation

A responsive team grid of portrait cards that zoom on hover and reveal contact links over a soft scrim.

Bootstrap 5 No jQuery Aug 2020 2.3K views

<section class="wdw-stage">
  <div class="container" style="max-width:960px">
    <div class="text-center mb-4 mb-md-5">
      <span class="wdw-eyebrow">Our team</span>
      <h2 class="wdw-heading display-6 mt-1 mb-2">The people behind the product</h2>
      <p class="wdw-muted mx-auto mb-0" style="max-width:480px">A small, senior crew that cares about craft. Hover a card to say hello.</p>
    </div>
    <div class="row g-3 g-md-4">
      <div class="col-6 col-lg-4">
        <article class="team-card position-relative overflow-hidden">
          <img src="https://i.pravatar.cc/480?img=12" width="480" height="480" loading="lazy" alt="Portrait of Marcus Reed" class="team-photo w-100">
          <div class="team-info position-absolute bottom-0 start-0 end-0 p-3 p-md-4 text-white">
            <h3 class="h6 fw-bold mb-0">Marcus Reed</h3>
            <p class="small mb-0 opacity-75">Chief Executive</p>
            <div class="team-social d-flex gap-2 mt-2">
              <a href="#" class="team-link" aria-label="Marcus Reed on LinkedIn"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4V21H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.82-2 3.75-2 4 0 4.75 2.6 4.75 6V21h-4v-4.8c0-1.2 0-2.7-1.7-2.7s-1.9 1.3-1.9 2.6V21h-4z"/></svg></a>
              <a href="#" class="team-link" aria-label="Email Marcus Reed"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><path d="m4 7 8 6 8-6"/></svg></a>
            </div>
          </div>
        </article>
      </div>
      <div class="col-6 col-lg-4">
        <article class="team-card position-relative overflow-hidden">
          <img src="https://i.pravatar.cc/480?img=11" width="480" height="480" loading="lazy" alt="Portrait of Daniel Cruz" class="team-photo w-100">
          <div class="team-info position-absolute bottom-0 start-0 end-0 p-3 p-md-4 text-white">
            <h3 class="h6 fw-bold mb-0">Daniel Cruz</h3>
            <p class="small mb-0 opacity-75">Head of Product</p>
            <div class="team-social d-flex gap-2 mt-2">
              <a href="#" class="team-link" aria-label="Daniel Cruz on LinkedIn"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4V21H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.82-2 3.75-2 4 0 4.75 2.6 4.75 6V21h-4v-4.8c0-1.2 0-2.7-1.7-2.7s-1.9 1.3-1.9 2.6V21h-4z"/></svg></a>
              <a href="#" class="team-link" aria-label="Email Daniel Cruz"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><path d="m4 7 8 6 8-6"/></svg></a>
            </div>
          </div>
        </article>
      </div>
      <div class="col-6 col-lg-4">
        <article class="team-card position-relative overflow-hidden">
          <img src="https://i.pravatar.cc/480?img=47" width="480" height="480" loading="lazy" alt="Portrait of Elena Moore" class="team-photo w-100">
          <div class="team-info position-absolute bottom-0 start-0 end-0 p-3 p-md-4 text-white">
            <h3 class="h6 fw-bold mb-0">Elena Moore</h3>
            <p class="small mb-0 opacity-75">Design Director</p>
            <div class="team-social d-flex gap-2 mt-2">
              <a href="#" class="team-link" aria-label="Elena Moore on LinkedIn"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4V21H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.82-2 3.75-2 4 0 4.75 2.6 4.75 6V21h-4v-4.8c0-1.2 0-2.7-1.7-2.7s-1.9 1.3-1.9 2.6V21h-4z"/></svg></a>
              <a href="#" class="team-link" aria-label="Email Elena Moore"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><path d="m4 7 8 6 8-6"/></svg></a>
            </div>
          </div>
        </article>
      </div>
      <div class="col-6 col-lg-4">
        <article class="team-card position-relative overflow-hidden">
          <img src="https://i.pravatar.cc/480?img=45" width="480" height="480" loading="lazy" alt="Portrait of Sofia Lindqvist" class="team-photo w-100">
          <div class="team-info position-absolute bottom-0 start-0 end-0 p-3 p-md-4 text-white">
            <h3 class="h6 fw-bold mb-0">Sofia Lindqvist</h3>
            <p class="small mb-0 opacity-75">Engineering Lead</p>
            <div class="team-social d-flex gap-2 mt-2">
              <a href="#" class="team-link" aria-label="Sofia Lindqvist on LinkedIn"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4V21H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.82-2 3.75-2 4 0 4.75 2.6 4.75 6V21h-4v-4.8c0-1.2 0-2.7-1.7-2.7s-1.9 1.3-1.9 2.6V21h-4z"/></svg></a>
              <a href="#" class="team-link" aria-label="Email Sofia Lindqvist"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><path d="m4 7 8 6 8-6"/></svg></a>
            </div>
          </div>
        </article>
      </div>
      <div class="col-6 col-lg-4">
        <article class="team-card position-relative overflow-hidden">
          <img src="https://i.pravatar.cc/480?img=33" width="480" height="480" loading="lazy" alt="Portrait of Julian Hart" class="team-photo w-100">
          <div class="team-info position-absolute bottom-0 start-0 end-0 p-3 p-md-4 text-white">
            <h3 class="h6 fw-bold mb-0">Julian Hart</h3>
            <p class="small mb-0 opacity-75">Growth Marketing</p>
            <div class="team-social d-flex gap-2 mt-2">
              <a href="#" class="team-link" aria-label="Julian Hart on LinkedIn"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4V21H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.82-2 3.75-2 4 0 4.75 2.6 4.75 6V21h-4v-4.8c0-1.2 0-2.7-1.7-2.7s-1.9 1.3-1.9 2.6V21h-4z"/></svg></a>
              <a href="#" class="team-link" aria-label="Email Julian Hart"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><path d="m4 7 8 6 8-6"/></svg></a>
            </div>
          </div>
        </article>
      </div>
      <div class="col-6 col-lg-4">
        <article class="team-card position-relative overflow-hidden">
          <img src="https://i.pravatar.cc/480?img=49" width="480" height="480" loading="lazy" alt="Portrait of Priya Nair" class="team-photo w-100">
          <div class="team-info position-absolute bottom-0 start-0 end-0 p-3 p-md-4 text-white">
            <h3 class="h6 fw-bold mb-0">Priya Nair</h3>
            <p class="small mb-0 opacity-75">People & Culture</p>
            <div class="team-social d-flex gap-2 mt-2">
              <a href="#" class="team-link" aria-label="Priya Nair on LinkedIn"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9.75h4V21H3zM9.5 9.75h3.8v1.6h.06c.53-1 1.82-2 3.75-2 4 0 4.75 2.6 4.75 6V21h-4v-4.8c0-1.2 0-2.7-1.7-2.7s-1.9 1.3-1.9 2.6V21h-4z"/></svg></a>
              <a href="#" class="team-link" aria-label="Email Priya Nair"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="3"/><path d="m4 7 8 6 8-6"/></svg></a>
            </div>
          </div>
        </article>
      </div>
    </div>
  </div>
</section>

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