framer-motion-carousel
v2.0.4
Published
A simple framer motion carousel component for React
Downloads
2,087
Maintainers
Readme
framer-motion-carousel
A simple framer-motion-carousel
, used for framer-motion
, chakra-ui
support click
and swipe
, support custom arrows
, dots
, easy to use.
2.x use framer-motion@6
now
Basic Usage
import * as React from "react";
import Carousel from "framer-motion-carousel";
const colors = ["#f90", "#ef0", "#e0f"];
const App = () => (
<div style={{ width: 600, height: 400 }}>
<Carousel>
{colors.map((item, i) => (
<div
key={i}
style={{
width: "100%",
height: "100%",
backgroundColor: colors[i],
}}
></div>
))}
</Carousel>
</div>
);
export default App;
images carousel
img
element should add draggable=false
<div style={{ width: 600, height: 400, margin: "0 auto" }}>
<Carousel>
{[1, 2, 3, 4].map((item, i) => (
<img
draggable="false"
src={`./${item}.jpg`}
key={i}
width="100%"
alt=""
/>
))}
</Carousel>
</div>
use external control button
// set ref;
const carouselRef = React.useRef();
<div style={{ width: 600, height: 400, margin: "0 auto" }}>
<div style={{display: 'flex', gap: '10px', marginBottom: '10px'}}>
<button onClick={() => carouselRef.current.handlePrev()}>handlePrev</button>
<button onClick={() => carouselRef.current.setIndex(2)}>goto index 2</button>
<button onClick={() => carouselRef.current.handleNext()}>handleNext</button>
</div>
<Carousel ref={carouselRef} autoPlay={false}>
{[1, 2, 3, 4].map((item, i) => (
<img
draggable="false"
src={`./${item}.jpeg`}
key={i}
width="100%"
alt=""
/>
))}
</Carousel>
</div>
Example
props
| props | type | default | description |
|------------------|--------------------------------------------------------------------------------------|---------|----------------------------------------------------------------------|
| loop | boolean | true | loop play |
| autoPlay | boolean | true | auto play |
| interval | number | 2000 | auto play interval |
| renderArrowLeft | ({handlePrev: () => void, activeIndex: number}) => React.ReactNode | null | custom your arrows, activeIndex
is current index |
| renderArrowRight | ({handleNext: () => void, activeIndex: number}) => React.ReactNode | null | custom your arrows, activeIndex
is current index |
| renderDots | ({activeIndex: number, setActiveIndex: (index: number) => void;}) => React.ReactNode | null | custom your dots, activeIndex
is current index |
| ref | React.Ref | null | Carousel ref, support handleNext
, handlePrev
, setIndex
method |
example
cd example && yarn install
yarn dev