Close
Angular React Web Components Blazor Blazor
Open Source

Blazor Carousel Overview

The Ignite UI for Blazor Carousel is a responsive, lightweight component that provides the most flexible way to create slideshow-like web experience for users who navigate back and forth through a collection of images with text slides, links, and other html elements.

The Blazor Carousel component allows you to use animations, slide transitions, and customization so you can easily tweak the interface and build Blazor custom carousel.

The Blazor Carousel demo you see below shows slides containing only images.

Usage

Before using the IgbCarousel, you need to register it as follows:

// in Program.cs file

builder.Services.AddIgniteUIBlazor(typeof(IgbCarouselModule));

You will also need to link an additional CSS file to apply the styling to the IgbCarousel component. The following needs to be placed in the wwwroot/index.html file in a Blazor Web Assembly project or the Pages/_Host.cshtml file in a Blazor Server project:

<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />

For a complete introduction to the Ignite UI for Blazor, read the Getting Started topic.

Now that you have the Ignite UI for Blazor Carousel imported, you can start with a basic configuration of the IgbCarousel and its slides.

Use the IgbCarousel selector to wrap your slides. The slides may feature any valid html content inside, including other components.

<IgbCarousel>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/ignite-ui-angular-indigo-design.png" alt="ignite-ui-angular-indigo-design" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/slider-image-chart.png" alt="slider-image-chart" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/ignite-ui-angular-charts.png" alt="ignite-ui-angular-charts" />
    </IgbCarouselSlide>
</IgbCarousel>

If you want a slide to be active by default, use the Active attribute:

<IgbCarousel>
    ...
    <IgbCarouselSlide>
        ...
    </IgbCarouselSlide>
    <IgbCarouselSlide Active="true">
        ...
    </IgbCarouselSlide>
</IgbCarousel>

If no active slide is set, the first one will be set by default. If there are multiple active slides on initial rendering or subsequent updates, only the last one will be taken into account.

Examples

By default, the IgbCarousel has its DisableLoop property set to false (looping occurs when the first slide comes after the last by navigating using the Next action, or when the last slide comes after the first by using the Previous action). The looping behavior can be disabled by setting the value of the DisableLoop property to true.

<IgbCarousel DisableLoop="true">
    ...
</IgbCarousel>

To keep track of each slide index, the carousel has indicators that are positioned at the end of the carousel by default. In order to change this behavior, use the IndicatorsOrientation property and assign it to start.

<IgbCarousel IndicatorsOrientation="@CarouselIndicatorsOrientation.Start">
    ...
</IgbCarousel>

By default, the IgbCarousel displays its navigation buttons and indicators. Use the HideIndicators property to hide the indicators and the HideNavigation property to hide the navigation buttons.

<IgbCarousel HideNavigation="true" HideIndicators="true">
    ...
</IgbCarousel>

The IgbCarousel supports vertical mode. Use the Vertical property to enable it.

<IgbCarousel Vertical="true">
    ...
</IgbCarousel>

Custom indicators

To add Blazor custom carousel indicators, use the IgbCarouselIndicator:

<IgbCarousel>
    <IgbCarouselIndicator>
        <span>🤍</span>
        <span slot="active">❤️</span>
    </IgbCarouselIndicator>
    <IgbCarouselIndicator>
        <span>🤍</span>
        <span slot="active">❤️</span>
    </IgbCarouselIndicator>
    <IgbCarouselSlide>
        <img src="assets/images/card/media/the_red_ice_forest.jpg" alt="the_red_ice_forest" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/card/media/yosemite.jpg" alt="yosemite" />
    </IgbCarouselSlide>
</IgbCarousel>

The Ignite UI for Blazor Carousel component allows users to use different elements for the active and inactive states of a single indicator. It is mandatory to provide two elements for each indicator slot (empty and active) when declaring an indicator, even if they are the same. We recommend using a <span> element for symbol or emoji indicators, and an <igc-icon> component for icon indicators.

Custom navigation buttons

The navigation buttons can also be customized. To achieve this, use the previous-button and next-button slots:

<IgbCarousel>
    <IgbIcon slot="previous-button" IconName="previous" Collection="material"></IgbIcon>
    <IgbIcon slot="next-button" IconName="next" Collection="material"></IgbIcon>
    ...
</IgbCarousel>

Just like with the custom indicators, we recommend using a <span> element for symbol or emoji navigation buttons, and an <igc-icon> component for icon navigation buttons.

Slide containing other components

This carousel is going to contain slides with forms and images:

<IgbCarousel>
    <IgbCarouselSlide>
        <div>
            <img src="assets/images/svg/carousel/SignUp.svg">
            <form>
                <IgbInput DisplayType="@InputType.Text" Placeholder="Username">
                    <IgbIcon slot="prefix" IconName="person" Collection="material" @ref="iconRef"></IgbIcon>
                </IgbInput>
                <IgbInput DisplayType="@InputType.Password" Placeholder="Password">
                    <IgbIcon slot="prefix" IconName="password" Collection="material"></IgbIcon>
                </IgbInput>
                <IgbButton DisplayType="@ButtonBaseType.Reset">Sign In</IgbButton>
            </form>
        </div>
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <div>
            <img src="assets/images/svg/carousel/Route.svg">
            <form>
                <IgbInput DisplayType="@InputType.Text" Placeholder="Search">
                    <IgbIcon slot="prefix" IconName="search" Collection="material"></IgbIcon>
                </IgbInput>
                <IgbButton DisplayType="@ButtonBaseType.Reset">Search</IgbButton>
            </form>
        </div>
    </IgbCarouselSlide>
</IgbCarousel>

Demo

Animations

Animated slide transitions provide the end-users a nice experience when interacting with the carousel.

The carousel is configured to use the slide animation by default, but it also supports fade as an alternative animation.

Use the AnimationType property to change the animation.

<IgbCarousel AnimationType="@CarouselAnimationType.Fade">
    ...
</IgbCarousel>

Setting none to the AnimationType property disables the animations.

Demo

The demo below demonstrates the different types of animations, which the carousel supports.

Transition and navigation are the most important carousel features.

The navigation in the carousel can be handled by the user through navigation buttons, indicators, keyboard navigation and touch interaction on mobile devices.

Touch gestures

By default, the carousel can be used on any touch-enabled device.

The carousel animations are fully supported on touch devices, which makes the carousel consistent with any platform and great when used in progressive web applications (PWA).

Keyboard navigation

  • Navigation buttons
    • SPACE or ENTER key - navigates to the next/previous slide.
  • Indicators
    • 🡐 key - navigates to the previous (next in Right-to-Left mode) slide.
    • 🡒 key - navigates to the next (previous in Right-to-Left mode) slide.
    • HOME key - navigates to the first (last in Right-to-Left mode) slide.
    • END key - navigates to the last (first in Right-to-Left mode) slide.

Automatic transitioning

The IgbCarousel can be easily configured to change the slides automatically, without any user interaction. This way you can create your own slideshow by only setting a transition interval to the Interval property, which determines the amount of time in milliseconds between slides transition.

Hovering the mouse over any carousel content or moving keyboard focus to any of the carousel content pauses automatic transitioning. Automatic transitioning resumes when the mouse moves away from the carousel or when keyboard focus moves out of the carousel content.

This can be prevented by setting DisablePauseOnInteraction property to true.

<IgbCarousel Interval="2000" DisablePauseOnInteraction="true">
    ...
</IgbCarousel>

Advanced Example

Let’s create a fully automated carousel with looping enabled. We will configure the indicators to be a thumbnail representation of each slide.

To achieve this goal, we have to do the following configurations to the carousel:

Our carousel will look like this in the template:

<IgbCarousel DisablePauseOnInteraction="true"
             HideNavigation="true"
             Interval="2000"
             Vertical="true"
             AnimationType="@CarouselAnimationType.Fade">
    <IgbCarouselIndicator>
        <img class="blurred" src="assets/images/carousel/WonderfulCoastThumb.png" width="50" height="60" />
        <img slot="active" src="assets/images/carousel/WonderfulCoastThumb.png" width="50" height="60" />
    </IgbCarouselIndicator>
    <IgbCarouselIndicator>
        <img class="blurred" src="assets/images/carousel/CulturalDipThumb.png" width="50" height="60" />
        <img slot="active" src="assets/images/carousel/CulturalDipThumb.png" width="50" height="60" />
    </IgbCarouselIndicator>
    <IgbCarouselIndicator>
        <img class="blurred" src="assets/images/carousel/GoldenBeachesThumb.png" width="50" height="60" />
        <img slot="active" src="assets/images/carousel/GoldenBeachesThumb.png" width="50" height="60" />
    </IgbCarouselIndicator>
    <IgbCarouselIndicator>
        <img class="blurred" src="assets/images/carousel/IslandOfHistoryThumb.png" width="50" height="60" />
        <img slot="active" src="assets/images/carousel/IslandOfHistoryThumb.png" width="50" height="60" />
    </IgbCarouselIndicator>
    <IgbCarouselIndicator>
        <img class="blurred" src="assets/images/carousel/AmazingBridgeThumb.png" width="50" height="60" />
        <img slot="active" src="assets/images/carousel/AmazingBridgeThumb.png" width="50" height="60" />
    </IgbCarouselIndicator>

    <IgbCarouselSlide>
        <img src="assets/images/carousel/WonderfulCoast.png" alt="WonderfulCoast" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/CulturalDip.png" alt="CulturalDip" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/GoldenBeaches.png" alt="GoldenBeaches" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/IslandOfHistory.png" alt="IslandOfHistory" />
    </IgbCarouselSlide>
    <IgbCarouselSlide>
        <img src="assets/images/carousel/AmazingBridge.png" alt="AmazingBridge" />
    </IgbCarouselSlide>
</IgbCarousel>

These configurations will have the following result:

Accessibility

WAI-ARIA Roles, States, and Properties

  • The Carousel base element role is region - section containing content that is relevant to specific purpose and users will likely want to be able to navigate easily.
  • Carousel indicators are with role tab - grouping label providing a mechanism for selecting the tab content that is to be rendered to the user
  • The element that serves as the container for the set of tabs (carousel indicators) is with role tablist.
  • Each slide element is set with role tabpanel.

ARIA support

  • Attributes
    • aria-roledescription set to “carousel”.
    • aria-live - used to set the priority with which screen reader should treat updates to live regions - the possible settings are: off and polite. The default setting is polite and is set to the element that serves as the container for the set of slides. When the Interval option is set and the carousel is in playing state, the aria-live attribute would be set to off.
    • aria-label (navigation buttons) - “Previous slide”/“Next slide”.

Slide component

  • Attributes
    • id - follows the pattern "igc-carousel-slide-${incremented_number}".
    • aria-roledescription set to “slide”.
    • aria-label follows the pattern "${index + 1} of ${total}".

Indicator component

  • Attributes
    • aria-label follows the pattern “Slide ${index + 1}
    • aria-selected set to true or false based on the active slide.

API References

Additional Resources