A modern, customizable, and responsive React carousel component. Includes touch support, parallax effects, and many features.
- β¨ Parallax effects
- π± Touch and swipe support
- π¨ Customizable theme
- πΌοΈ Thumbnail view
- β¨οΈ Keyboard control
- π Autoplay
- π― Dot navigation
- β‘οΈ Arrow controls
- π Title and description support
- π± Fully responsive design
parallax-carousel-react/
βββ src/
β βββ __tests__/
β βββ components/
β βββ types/
β βββ index.ts
β βββ setupTests.ts
βββ coverage/
βββ README.md
βββ jest.config.js
βββ tsconfig.json
βββ rollup.config.js
βββ package.json
βββ package-lock.json
βββ .gitignore
npm install parallax-carousel-react
# or
yarn add parallax-carousel-react
import { ParallaxCarousel } from "parallax-carousel-react";
const App = () => {
const images = [
{
url: "/path/to/image1.jpg",
alt: "First Slide",
title: "Title 1",
description: "Description 1",
},
{
url: "/path/to/image2.jpg",
alt: "Second Slide",
title: "Title 2",
description: "Description 2",
},
];
return (
<ParallaxCarousel
images={images}
interval={1000}
showArrows={true}
showDots={true}
showThumbnails={true}
autoPlay={true}
pauseOnHover={true}
theme={{
primary: "#007bff",
secondary: "#6c757d",
background: "#000",
textColor: "#fff",
}}
effect="slide"
height="500px"
thumbnailPosition="bottom"
showCaption={true}
infinite={true}
keyboardControl={true}
onSlideChange={(index) => console.log(`Current slide: ${index}`)}
/>
);
};
<ParallaxCarousel images={images} />
<ParallaxCarousel
images={images}
interval={3000}
showArrows={true}
showDots={true}
showThumbnails={true}
thumbnailPosition="left"
effect="zoom"
height="600px"
showCaption={true}
theme={customTheme}
/>
Prop | Type | Default | Description |
---|---|---|---|
images | Array | required | Array of images |
interval | number | 5000 | Auto transition duration (ms) |
showArrows | boolean | true | Show/hide arrow controls |
showDots | boolean | true | Show/hide dot navigation |
showThumbnails | boolean | false | Show/hide thumbnails |
autoPlay | boolean | true | Auto play |
pauseOnHover | boolean | true | Pause on hover |
theme | CarouselTheme | undefined | Custom theme settings |
effect | 'slide' | 'fade' | 'zoom' | 'slide' | Transition effect |
height | string | number | '500px' | Carousel height |
thumbnailPosition | 'top' | 'bottom' | 'left' | 'right' | 'bottom' | Thumbnail position |
showCaption | boolean | false | Show title and description |
infinite | boolean | true | Infinite loop |
keyboardControl | boolean | true | Keyboard control |
onSlideChange | function | undefined | Slide change callback |
interface CarouselImage {
url: string;
alt?: string;
title?: string;
description?: string;
}
interface CarouselTheme {
primary?: string;
secondary?: string;
background?: string;
textColor?: string;
}
const theme = {
primary: "#007bff", // Primary color
secondary: "#6c757d", // Secondary color
background: "#000", // Background color
textColor: "#fff", // Text color
};
<ParallaxCarousel theme={theme} />;
- Touch and swipe gestures
- Responsive design
- Mobile-friendly thumbnail view
- Touch-friendly controls
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'feat: Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Create a Pull Request
Report issues via GitHub Issues.
For a detailed list of changes, please see the CHANGELOG.md.
- Melih Εahin & AI - GitHub
Thanks to everyone who contributed to this project!