1.1.0 • Published 4 years ago

distortion-effect-carousel v1.1.0

Weekly downloads
4
License
-
Repository
github
Last release
4 years ago

Distortion Effect Carousel

HTML carousel with distortion effect for React and Vanilla Javascript.\ Inspired by hover-effect.

DEMO

Build CI

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

NameTypeDefaultDescription
imagesstring[]Array of image sources
displacementImagestringThe 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?number1Used to determine the intensity of the distortion effect. 0 is no effect and 1 is full distortion.
commonAngle?numberMath.PI / 4Angle of the distortion effect in Radians. Defaults to Pi / 4 (45 degrees).
angle1?numbercommonAngleOverrides the distortion angle for the first image.
angle2?number-commonAngle * 3Overrides the distortion angle for the second image.
speed?number1.6Speed of the animation (in seconds).
easing?EasingeaseOut'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?number0The index of first image to display
resizeDebounce?number250Resize debounce in ms
dpr?numberwindow.devicePixelRatioThe pixel ratio of the canvas

Return value

NameTypeDescription
next() => voidTransition to next image.
prev() => voidTransition to previous image.
jump(index: number) => voidTransition to specific image.
currentIndexnumberThe current index of carousel.
refMutableRefObject<T extends HTMLElement = HTMLDivElement>The ref of the parent DOM element.
loadedImagesPartial<Record<number, boolean>>An object that represents the loaded images by their indexes.