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

Productgalerij met miniaturen New

The photo gallery of a product page: a large image you swipe (scroll-snap, on desktop also mouse drag), thumbnails next to it that follow and show the active photo, arrows and a counter. Arrow keys work on the image, the thumbnails are plain buttons. Without JS it stays a swipeable row of photos. For any webshop with several product photos.

Cognac leren rugzak, voorkant
Rugzak van opzij, met zijvak
Messing gesp en stiksels van dichtbij
Open rugzak van boven met laptopvak
Iemand loopt met de rugzak over een gracht in Utrecht
1 / 5

How to use it

  1. Paste the HTML where the components 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.
<!-- Productgalerij met miniaturen · NedDev · eigen werk. -->
<div class="jouw-container">
<div class="pgm">
<div class="pgm__thumbs" aria-label="Kies een foto">
<button class="pgm__th" type="button" data-i="0" aria-label="Foto 1: voorkant" aria-current="true"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-1.webp" alt="" width="900" height="491" loading="lazy"></button>
<button class="pgm__th" type="button" data-i="1" aria-label="Foto 2: zijkant"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-2.webp" alt="" width="900" height="491" loading="lazy"></button>
<button class="pgm__th" type="button" data-i="2" aria-label="Foto 3: gesp en stiksels"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-3.webp" alt="" width="900" height="491" loading="lazy"></button>
<button class="pgm__th" type="button" data-i="3" aria-label="Foto 4: binnenkant met laptopvak"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-4.webp" alt="" width="900" height="491" loading="lazy"></button>
<button class="pgm__th" type="button" data-i="4" aria-label="Foto 5: gedragen in Utrecht"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-5.webp" alt="" width="900" height="491" loading="lazy"></button>
</div>
<div class="pgm__main">
<div class="pgm__track" tabindex="0" role="region" aria-roledescription="galerij" aria-label="Foto's van rugzak Oudegracht, veeg of gebruik de pijltjestoetsen">
<figure class="pgm__sl"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-1.webp" alt="Cognac leren rugzak, voorkant" width="900" height="491" draggable="false"></figure>
<figure class="pgm__sl"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-2.webp" alt="Rugzak van opzij, met zijvak" width="900" height="491" loading="lazy" draggable="false"></figure>
<figure class="pgm__sl"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-3.webp" alt="Messing gesp en stiksels van dichtbij" width="900" height="491" loading="lazy" draggable="false"></figure>
<figure class="pgm__sl"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-4.webp" alt="Open rugzak van boven met laptopvak" width="900" height="491" loading="lazy" draggable="false"></figure>
<figure class="pgm__sl"><img src="https://neddev.com/lab-media/productgalerij-miniaturen-5.webp" alt="Iemand loopt met de rugzak over een gracht in Utrecht" width="900" height="491" loading="lazy" draggable="false"></figure>
</div>
<button class="pgm__nav pgm__prev" type="button" aria-label="Vorige foto"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.5 6l-6 6 6 6" fill="none" stroke="currentColor" stroke-width="2"/></svg></button>
<button class="pgm__nav pgm__next" type="button" aria-label="Volgende foto"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9.5 6l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2"/></svg></button>
<span class="pgm__cnt" aria-live="polite">1 / 5</span>
</div>
</div>
</div>

More components

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 →