distortion-effect-carousel
v1.1.0
Published
HTML carousel with distortion effect for React and Vanilla Javascript.\ Inspired by [hover-effect](https://github.com/robin-dela/hover-effect).
Downloads
3
Readme
Distortion Effect Carousel
HTML carousel with distortion effect for React and Vanilla Javascript.
Inspired by hover-effect.
Install
With yarn.
yarn add distortion-effect-carousel
With NPM.
npm install distortion-effect-carousel
Basic usage
import React from 'react';
import { useDistortionEffectCarousel } from 'distortion-effect-carousel';
interface MyCarouselProps {
images: string[];
displacmentImage: string;
}
const MyCarousel: React.FC<MyCarouselProps> = ({
displacmentImage,
images,
}) => {
const { ref, next, prev } = useDistortionEffectCarousel({
images,
displacmentImage,
});
// ... do something with next() and prev()
return (
<div
style={{
height: '350px',
}}
ref={ref}
/>
);
};
Hook
Parameters
| Name | Type | Default | Description |
| ---------------------------- | ---------------------------------------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------- |
| images
| string[]
| | Array of image sources |
| displacementImage
| string
| | The source of displacementImage
used to do the transition between two images. |
| ref?
| MutableRefObject<T extends HTMLElement = HTMLDivElement>
| | The ref of the parent DOM element |
| intensity?
| number
| 1
| Used to determine the intensity of the distortion effect. 0 is no effect and 1 is full distortion. |
| commonAngle?
| number
| Math.PI / 4
| Angle of the distortion effect in Radians. Defaults to Pi / 4 (45 degrees). |
| angle1?
| number
| commonAngle
| Overrides the distortion angle for the first image. |
| angle2?
| number
| -commonAngle * 3
| Overrides the distortion angle for the second image. |
| speed?
| number
| 1.6
| Speed of the animation (in seconds). |
| easing?
| Easing
| easeOut
| 'easeIn' \| 'easeOut' \| 'easeInOut'
|
| backgroundSize?
| BackgroundSize
| 'cover'
| The background size of images, 'contain' \| 'cover' \| 'repeat' \| 'stretch'
|
| displacmentBackgroundSize?
| BackgroundSize
| 'cover'
| The background size of displacement image, 'contain' \| 'cover' \| 'repeat' \| 'stretch'
|
| initialIndex?
| number
| 0
| The index of first image to display |
| resizeDebounce?
| number
| 250
| Resize debounce in ms |
| dpr?
| number
| window.devicePixelRatio
| The pixel ratio of the canvas |
Return value
| Name | Type | Description |
| -------------- | ---------------------------------------------------------- | ------------------------------------------------------------- |
| next
| () => void
| Transition to next image. |
| prev
| () => void
| Transition to previous image. |
| jump
| (index: number) => void
| Transition to specific image. |
| currentIndex
| number
| The current index of carousel. |
| ref
| MutableRefObject<T extends HTMLElement = HTMLDivElement>
| The ref of the parent DOM element. |
| loadedImages
| Partial<Record<number, boolean>>
| An object that represents the loaded images by their indexes. |