2.0.4 • Published 8 months ago

framer-motion-carousel v2.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

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

Live Demo

example repo

example

props

propstypedefaultdescription
loopbooleantrueloop play
autoPlaybooleantrueauto play
intervalnumber2000auto play interval
renderArrowLeft({handlePrev: () => void, activeIndex: number}) => React.ReactNodenullcustom your arrows, activeIndex is current index
renderArrowRight({handleNext: () => void, activeIndex: number}) => React.ReactNodenullcustom your arrows, activeIndex is current index
renderDots({activeIndex: number, setActiveIndex: (index: number) => void;}) => React.ReactNodenullcustom your dots, activeIndex is current index
refReact.RefnullCarousel ref, support handleNext, handlePrev, setIndex method

example

cd example && yarn install

yarn dev
2.0.4

8 months ago

2.0.3

1 year ago

2.0.2

1 year ago

2.0.0-beta.0

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.7

2 years ago

1.0.6

3 years ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago