Introduction
Introducing Track, Naturally's accessible carousel component. It gives you full control with responsive panels that switch between single and multi-panel views at different screen sizes.
Tab navigation highlights only visible, interactive elements, ensuring smooth navigation for keyboard users.
Users can move between slides using arrow keys when focused on the "previous" or "next" buttons. This keeps navigation inside the carousel.
The carousel uses ARIA live regions to announce the current page. This keeps screen reader users updated on page changes in real-time.
<section
class="track"
aria-labelledby="carousel-heading"
>
<h3 id="carousel-heading" class="screen-reader-only">Section Title</h3>
<div class="track__container">
<ul class="track__panels gap-2">
<li class="track__panel">
<img src="https://via.placeholder.com/1500x750?text=One" alt="Placeholder" />
</li>
<li class="track__panel">
<img src="https://via.placeholder.com/1500x750?text=Two" alt="Placeholder" />
</li>
<li class="track__panel">
<img src="https://via.placeholder.com/1500x750?text=Three" alt="Placeholder" />
</li>
<!-- Add more panels as needed -->
</ul>
</div>
<div class="track__controls margin-y-3">
<button
class="track__prev button button--icon-only"
aria-label="Previous Slide">
<span class="icon icon-arrow-left" aria-hidden="true"></span>
</button>
<ul class="track__pagination"></ul>
<button
class="track__next button button--icon-only"
aria-label="Next Slide">
<span class="icon icon-arrow-right" aria-hidden="true"></span>
</button>
</div>
</section>
Line # | Details |
---|---|
2-3 | The The |
6 | Use the |
8 | The |
10-24 | The The |
28 | The |
30-34 | The The |
36 | The |
38-42 | The The |
Responsive Columns
To change the number of visible panels per page, add track--column-{x}
to the .track
selector. Replace {x}
with the number of columns (from 1 to 8) you want.
To adjust for specific breakpoints, add a breakpoint modifier (e.g., track--column-3--lg
) displays 3 columns on large screens.
<div class="track 👉 track--column-3--lg">
...
</div>
Panel Peeking
Panel peeking shows a small part of the next or previous panel, helping users know there is more content to explore in either direction. To enable panel peeking, add the .track--peeking
class to your .track
element.
<div class="track 👉 track--peeking track--column-3--lg">
...
</div>