React carousel is a slideshow component for cycling through elements—images or slides of text—like a carousel.
Available in Other JavaScript Frameworks
CoreUI React Carousel Component is also available for Angular, Bootstrap, and Vue. Explore framework-specific implementations below:
How it works
The React carousel is a slideshow for cycling within a group of content. It runs with a group of images, text, or html elements. It also incorporates support for previous/next buttons.
In browsers where the Page Visibility API is supported, the carousel will avoid sliding when the webpage is not visible to the user (such as when the browser tab is inactive, the browser window is minimized, etc.).
Example
Carousels don’t automatically normalize slide dimensions. As such, you may want to use extra utilities or custom methods to properly size content. While carousels support previous/next controls and indicators, they’re not explicitly expected. Add and customize as you see fit.
Slides only
import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselSlidesOnlyExample = () => {
return (
<CCarousel>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselSlidesOnlyExample = () => {
return (
<CCarousel>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} With controls
Adding in the previous and next controls by controls property.
import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselWithControlsExample = () => {
return (
<CCarousel controls>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselWithControlsExample = () => {
return (
<CCarousel controls>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} With indicators
You can attach the indicators to the carousel, lengthwise the controls, too.
import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselWithIndicatorsExample = () => {
return (
<CCarousel controls indicators>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselWithIndicatorsExample = () => {
return (
<CCarousel controls indicators>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} With captions
You can add captions to slides with the <CCarouselCaption> element within any <CCarouselItem>. They can be immediately hidden on smaller viewports, as shown below, with optional display utilities. We hide them with .d-none and draw them back on medium-sized devices with .d-md-block.
import React from 'react'
import { CCarousel, CCarouselCaption, CCarouselItem, CImage } from '@coreui/react'
export const CarouselWithCaptionsExample = () => {
return (
<CCarousel controls indicators>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
<CCarouselCaption className="d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
<CCarouselCaption className="d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
<CCarouselCaption className="d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
</CCarousel>
)
} import React from 'react'
import { CCarousel, CCarouselCaption, CCarouselItem, CImage } from '@coreui/react'
export const CarouselWithCaptionsExample = () => {
return (
<CCarousel controls indicators>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
<CCarouselCaption className="d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
<CCarouselCaption className="d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
<CCarouselCaption className="d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
</CCarousel>
)
} Crossfade
Add transition="crossfade" to your carousel to animate slides with a fade transition instead of a slide.
import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselCrossfadeExample = () => {
return (
<CCarousel controls transition="crossfade">
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} import React from 'react'
import { CCarousel, CCarouselItem, CImage } from '@coreui/react'
export const CarouselCrossfadeExample = () => {
return (
<CCarousel controls transition="crossfade">
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
</CCarouselItem>
</CCarousel>
)
} Dark variant
Add dark property to the CCarousel for darker controls, indicators, and captions. Controls have been inverted from their default white fill with the filter CSS property. Captions and controls have additional Sass variables that customize the color and background-color.
import React from 'react'
import { CCarousel, CCarouselCaption, CCarouselItem, CImage } from '@coreui/react'
export const CarouselDarkVariantExample = () => {
return (
<CCarousel controls indicators dark>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
<CCarouselCaption className="d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
<CCarouselCaption className="d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
<CCarouselCaption className="d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
</CCarousel>
)
} import React from 'react'
import { CCarousel, CCarouselCaption, CCarouselItem, CImage } from '@coreui/react'
export const CarouselDarkVariantExample = () => {
return (
<CCarousel controls indicators dark>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/react.jpg'} alt="slide 1" />
<CCarouselCaption className="d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/vue.jpg'} alt="slide 2" />
<CCarouselCaption className="d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
<CCarouselItem>
<CImage className="d-block w-100" src={'/images/angular.jpg'} alt="slide 3" />
<CCarouselCaption className="d-none d-md-block">
<h5>Third slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</CCarouselCaption>
</CCarouselItem>
</CCarousel>
)
} API
Check out the documentation below for a comprehensive guide to all the props you can use with the components mentioned here.