Brown and green plant in close up photography

Photo: Nicole Geri

Track

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.

Featured Content

    
            <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://placehold.co/1500x750?text=One" alt="Placeholder" />
                        </li>
                        <li class="track__panel">
                            <img src="https://placehold.co/1500x750?text=Two" alt="Placeholder" />
                        </li>
                        <li class="track__panel">
                            <img src="https://placehold.co/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"
                        data-track-prev
                        aria-label="Previous Slide">
                        <span class="icon icon-arrow-left" aria-hidden="true"></span>
                    </button>
    
                    <ul class="track__pagination" data-track-pagination></ul>
    
                    <button
                        class="track__next button button--icon-only"
                        data-track-next
                        aria-label="Next Slide">
                        <span class="icon icon-arrow-right" aria-hidden="true"></span>
                    </button>
    
                </div>
    
            </section>
        
    Figure 1
    Line #Details
    2-3

    The .track class is required. It wraps the entire carousel component.

    The aria-labelledby attribute is recommended. It links the carousel to its title for screen readers.

    6

    Use the h3 element with the .screen-reader-only class to provide a title for screen readers.

    8

    The .track__container class is required. It contains the carousel panels.

    10-24

    The .track__panels class is required. This <ul> holds the carousel's panels.

    The .gap-2 utility class is optional and adds space between the panels.

    28

    The .track__controls class is optional. It holds the navigation buttons.

    30-35

    The .track__prev button is optional. It moves to the previous panel.

    The data-track-prev attribute is required for JavaScript to detect the button.

    The aria-label attribute is recommended to provide context for screen readers.

    37

    The .track__pagination class is optional. It holds pagination, which is generated dynamically with JavaScript.

    The data-track-pagination attribute is required for JavaScript to locate the pagination container.

    39-44

    The .track__next button is optional. It moves to the next panel.

    The data-track-next attribute is required for JavaScript to detect the button.

    The aria-label attribute is recommended to support screen readers.


    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.

    Featured Content

      
              <div class="track 👉 track--column-3--lg">
                  ...
              </div>
          
      Figure 2

      Panel Peeking

      Panel peeking reveals a sliver of the next and previous panels, giving users a visual cue that more content exists in either direction.

      Like responsive columns, peeking supports breakpoint modifiers. Use track--peeking--{bp} to enable peeking only at a specific breakpoint and above. This lets you combine a single-column, no-peeking layout on mobile with a multi-column peeking layout on larger screens.

      The example below is a single panel with no peeking on small screens, then switches to three columns with peeking at the large breakpoint.

      Featured Content

        
                <div class="track 👉 track--column-2--xl track--peeking--xl">
                    ...
                </div>
            
        Figure 3

        When peeking is active, the track bleeds slightly outside its container's padding. Add track--peeking-edge--{bp} at the same breakpoint to apply a negative margin that cancels out the bleed, keeping the track visually flush with the surrounding layout.


        Page Footer

        Natura11y is an inclusive design ecosystem. It's created and maintained by Avidano Digital, a strategic communications agency serving nonprofit and social impact organizations.

        © 2024 - Natura11y Inclusive Framework.All Rights Reserved.