Fetching latest headlinesโ€ฆ
I Built a Carousel With Zero Libraries (Swipe + Autoplay)
NORTH AMERICA
๐Ÿ‡บ๐Ÿ‡ธ United Statesโ€ขJune 27, 2026

I Built a Carousel With Zero Libraries (Swipe + Autoplay)

0 views0 likes0 comments
Originally published byDev.to

A carousel is one of the most-requested UI components โ€” and you don't need Swiper or a framework for the basics. It's one flex row and a translateX. Here's a live one with arrows, dots, autoplay, and swipe, in vanilla JS.

๐ŸŽ  Try it (drag/swipe, dots, autoplay): https://dev48v.infy.uk/design/day18-carousel.html

The core trick

Put all slides in one flex row (.track), each width: 100%. To show slide N, set track.style.transform = translateX(-N * 100%) with a CSS transition. That's the whole carousel.

Then layer on the features

  • Arrows / dots: change the index, re-apply the transform, sync the active dot.
  • Wrap-around: (index + 1) % count and (index - 1 + count) % count.
  • Autoplay: a setInterval that advances; clear it on hover, restart on leave.
  • Swipe: on pointerdown record X and disable the transition; on pointermove drag the track; on pointerup snap to the nearest slide if you dragged past ~20%.

When to reach for a library

Hand-rolled is great for learning and simple cases. For virtualized, accessible, touch-perfect carousels, use Embla or Swiper โ€” but now you know what they're doing.

๐Ÿ”จ Full build (track โ†’ goTo() โ†’ arrows โ†’ dots โ†’ autoplay โ†’ swipe) on the page: https://dev48v.infy.uk/design/day18-carousel.html

Part of DesignFromZero. ๐ŸŒ https://dev48v.infy.uk

Comments (0)

Sign in to join the discussion

Be the first to comment!