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

Carrousel basis (snap, autoplay met pauze) New

Project carousel on scroll-snap with arrows, dots, 01/05 counter, progress bar (scroll-driven animation), swipe, mouse drag, arrow keys and autoplay with a visible pause button (WCAG 2.2.2). Also pauses on hover, focus and off-screen; no autoplay with reduced motion. Where ::scroll-button and ::scroll-marker are supported the native controls take over; elsewhere small JS controls do the same.

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.
<!-- Carrousel basis (snap, autoplay met pauze) · NedDev · eigen werk. -->
<div class="jouw-container">
<div class="crb" role="region" aria-roledescription="carrousel" aria-label="Recente projecten">
  <div class="crb__track" tabindex="0" aria-label="Projecten, gebruik de pijltjestoetsen">
    <figure class="crb__slide" role="group" aria-roledescription="dia" aria-label="1 van 5"><img src="https://neddev.com/lab-media/carousel-basis-1.webp" alt="Gerenoveerde woonkamer met brede eiken vloer in een grachtenpand" width="800" height="436" draggable="false"><figcaption class="crb__cap"><span class="crb__tag">Renovatie · 2026</span><strong>Grachtenpand, Amsterdam</strong></figcaption></figure>
    <figure class="crb__slide" role="group" aria-roledescription="dia" aria-label="2 van 5"><img src="https://neddev.com/lab-media/carousel-basis-2.webp" alt="Nieuwe antraciet dakkapel op een bakstenen rijtjeshuis" width="800" height="436" loading="lazy" draggable="false"><figcaption class="crb__cap"><span class="crb__tag">Dakkapel · 2026</span><strong>Rijtjeshuis, Utrecht</strong></figcaption></figure>
    <figure class="crb__slide" role="group" aria-roledescription="dia" aria-label="3 van 5"><img src="https://neddev.com/lab-media/carousel-basis-3.webp" alt="Badkamer met grijze tegels en inloopdouche met zwart kozijn" width="800" height="436" loading="lazy" draggable="false"><figcaption class="crb__cap"><span class="crb__tag">Badkamer · 2025</span><strong>Jaren-dertigwoning, Den Haag</strong></figcaption></figure>
    <figure class="crb__slide" role="group" aria-roledescription="dia" aria-label="4 van 5"><img src="https://neddev.com/lab-media/carousel-basis-4.webp" alt="Keuken met lichte houten fronten en betonlook werkblad" width="800" height="436" loading="lazy" draggable="false"><figcaption class="crb__cap"><span class="crb__tag">Keuken · 2025</span><strong>Tussenwoning, Haarlem</strong></figcaption></figure>
    <figure class="crb__slide" role="group" aria-roledescription="dia" aria-label="5 van 5"><img src="https://neddev.com/lab-media/carousel-basis-5.webp" alt="Gerestaureerde bakstenen gevel met nieuwe witte houten kozijnen" width="800" height="436" loading="lazy" draggable="false"><figcaption class="crb__cap"><span class="crb__tag">Gevel · 2025</span><strong>Monumentaal pand, Leiden</strong></figcaption></figure>
  </div>
  <div class="crb__dots" role="group" aria-label="Kies een project"></div>
  <div class="crb__bar">
    <button class="crb__play" type="button" aria-label="Pauzeer automatisch afspelen"><svg class="crb__ring" viewBox="0 0 36 36" aria-hidden="true"><circle cx="18" cy="18" r="16"/></svg><svg class="crb__ic crb__ic--pause" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6v12M15 6v12"/></svg><svg class="crb__ic crb__ic--play" viewBox="0 0 24 24" aria-hidden="true"><path d="M8 5v14l11-7z"/></svg></button>
    <span class="crb__count" aria-hidden="true"><b>01</b> / 05</span>
    <span class="crb__prog" aria-hidden="true"><span class="crb__fill"></span></span>
    <button class="crb__nav crb__prev" type="button" aria-label="Vorig project"><span aria-hidden="true">←</span></button>
    <button class="crb__nav crb__next" type="button" aria-label="Volgend project"><span aria-hidden="true">→</span></button>
  </div>
  <p class="crb__sr" aria-live="off"></p>
</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 →