Home Work
SaaS developmentAI developmentAPI developmentMobile app developmentGoogle Ads managementHeadless ShopifyLaravel developmentNext.js developmentReact developmentTypeScript engineeringUI/UX designSEO & AEOEcommerce development
AI solutionsB2B platformsE-commerceHospitalityLead generationLogisticsEducationProcess automationSaaS platformsStartup MVPReal estateHealthcare
LegalHealthcareReal estateFinanceHospitality
The HagueRotterdamAmsterdamUtrechtEindhovenAlmereBredaArnhemNijmegenTilburgEnschedeGroningenLeidenDelftZoetermeerDen Bosch
Studio
AboutProcessLabBlogContact

Projectkaart wordt hero New

Click a project card and its photo grows into the detail page hero while the title travels along; back reverses it (Esc too). Shared element via View Transitions, without support the view swaps instantly. Multi-page: @view-transition { navigation: auto; } and the same view-transition-name on the photo on both overview and detail page (e.g. project-12-photo).

Bouwbedrijf Van Dam · projecten3 van 48

How to use it

  1. Paste the HTML where the navigation & menus should appear.
  2. Add the CSS to your stylesheet. All classes are prefixed, so nothing clashes with your own styles.
  3. Add the JavaScript and call init() with the element that contains the HTML.
<!-- Projectkaart wordt hero · NedDev · eigen werk. -->
<div class="jouw-container">
<!-- Echte multi-page site:
  1. CSS op beide pagina's:  @view-transition { navigation: auto; }
  2. Overzicht: geef ALLEEN de aangeklikte kaartfoto een naam, bv. style="view-transition-name: project-12-foto" (uniek per kaart)
  3. Detailpagina: dezelfde naam op de hero-foto. De browser morpht positie en formaat zelf.
  4. Neem de ::view-transition-old/new(vth-img) regels over (height: 100%; object-fit: cover)
  5. Reduced motion: @media (prefers-reduced-motion: reduce) { ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; } } -->
<div class="vth">
  <div class="vth__list">
    <div class="vth__top"><span class="vth__kick">Bouwbedrijf Van Dam · projecten</span><span class="vth__count">3 van 48</span></div>
    <div class="vth__grid">
      <button class="vth__card" data-i="0"><span class="vth__img" style="background-image:url(https://neddev.com/lab-media/vt-thumbnail-naar-hero-1.webp)"></span><span class="vth__t">Aanbouw met schuifpui</span><span class="vth__m">Zwolle · 2026</span></button>
      <button class="vth__card" data-i="1"><span class="vth__img" style="background-image:url(https://neddev.com/lab-media/vt-thumbnail-naar-hero-2.webp)"></span><span class="vth__t">Dakkapel jaren dertig</span><span class="vth__m">Amersfoort · 2026</span></button>
      <button class="vth__card" data-i="2"><span class="vth__img" style="background-image:url(https://neddev.com/lab-media/vt-thumbnail-naar-hero-3.webp)"></span><span class="vth__t">Badkamer met terrazzo</span><span class="vth__m">Delft · 2025</span></button>
    </div>
  </div>
  <div class="vth__detail" hidden>
    <span class="vth__hero"></span>
    <button class="vth__back"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M10 3L5 8l5 5"/></svg>Alle projecten</button>
    <div class="vth__body">
      <h3 class="vth__dt" tabindex="-1"></h3>
      <dl class="vth__facts"></dl>
      <p class="vth__dp"></p>
    </div>
  </div>
  <span class="vth__sr" aria-live="polite"></span>
</div>
</div>

More navigation & menus

Seen something you like?

Add it to your selection and send it over. We build your site around it, in your brand.

Get in touch →