Omni Carousel Search Omni docs and demos…

HTML markup

Example HTML markup for a carousel

This page shows example HTML markup for a carousel, similar to what the Omni demos use. The markup includes semantic HTML elements and ARIA attributes for accessibility.

For the accessibility attributes, please also see:

<section
  class="carousel"
  aria-roledescription="carousel"
  aria-label="Example carousel"
>

  <!--
  Optional navigation buttons — handled by Omni if present.

  The nav element is not required:
  Buttons can be placed anywhere, as long as they are
  within the root element (section.carousel in this example).

  You can also add buttons to go to the first/last slide.
  Omni handles those too. Their default selectors are:
  - data-omni-button-start
  - data-omni-button-end
  -->
  <nav>
    <!--
      The previous button should typically be disabled at first (we are at the start).
      Omni manages this and sets the button to disabled when it starts,
      but you can also include the attribute here to avoid
      the initial state mismatch.
    -->
    <button
      disabled
      data-omni-button-prev
      type="button"
      aria-label="Go to previous slide"
      aria-controls="carousel-track"
    >
      Prev
    </button>
    <button
      data-omni-button-next
      type="button"
      aria-label="Go to next slide"
      aria-controls="carousel-track"
    >
      Next
    </button>      
  </nav>

  <ul
    id="carousel-track"
    data-omni-track
    tabindex="0"
  >
    <li
      data-omni-slide
      aria-roledescription="slide"
      aria-posinset="1"
      aria-setsize="2"
    >
      Slide 1
    </li>
    <li
      data-omni-slide
      aria-roledescription="slide"
      aria-posinset="2"
      aria-setsize="2"
    >
      Slide 2
    </li>
  </ul>

  <!--
  Optional
  Omni will autogenerate indicators if the container exists.
  The autogenerated indicators also have ARIA attributes,
  including aria-controls if the track has an id.
  -->
  <div data-omni-indicators></div>

</section>

The data-omni-* attributes tell Omni which elements to manage. You can customize these selectors in the configuration options.