react-alice-carousel vs react-responsive-carousel vs react-slick
ウェブ開発におけるカルーセルライブラリ
react-alice-carouselreact-responsive-carouselreact-slick類似パッケージ:

ウェブ開発におけるカルーセルライブラリ

カルーセルライブラリは、画像やコンテンツをスライドショー形式で表示するためのコンポーネントを提供します。これにより、ユーザーは視覚的に魅力的な方法で情報を閲覧でき、特にモバイルデバイスでのユーザー体験を向上させることができます。これらのライブラリは、異なる機能やデザイン原則を持っており、プロジェクトのニーズに応じて選択することが重要です。

npmのダウンロードトレンド

3 年

GitHub Starsランキング

統計詳細

パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
react-alice-carousel085295.7 kB92年前MIT
react-responsive-carousel02,677188 kB8-MIT
react-slick011,924775 kB4909ヶ月前MIT

機能比較: react-alice-carousel vs react-responsive-carousel vs react-slick

カスタマイズ性

  • react-alice-carousel:

    react-alice-carouselは、シンプルなAPIを提供し、カスタマイズが容易です。デフォルトのスタイルをオーバーライドしたり、アニメーション効果を追加したりすることが簡単にできます。

  • react-responsive-carousel:

    react-responsive-carouselは、豊富なプロパティを提供し、特定のニーズに応じてカルーセルを調整できます。レスポンシブデザインに特化しており、異なる画面サイズに応じた設定が可能です。

  • react-slick:

    react-slickは、スライドの表示方法や動作を詳細に設定できるオプションが豊富です。カスタムナビゲーションやスライドの遅延時間など、細かい調整が可能です。

パフォーマンス

  • react-alice-carousel:

    軽量で、基本的な機能に特化しているため、パフォーマンスが高く、特に小規模なプロジェクトに適しています。

  • react-responsive-carousel:

    最適化されたレスポンシブデザインにより、モバイルデバイスでのパフォーマンスが向上します。画像の遅延読み込み機能もあり、パフォーマンスをさらに向上させます。

  • react-slick:

    多機能であるため、パフォーマンスに影響を与える可能性がありますが、適切に設定すれば非常にスムーズな体験を提供します。

アニメーション効果

  • react-alice-carousel:

    多様なアニメーション効果をサポートしており、スライドの切り替え時に視覚的な魅力を追加できます。

  • react-responsive-carousel:

    基本的なアニメーション効果を提供しますが、カスタマイズは制限されています。シンプルな切り替えを好む場合に適しています。

  • react-slick:

    多様なアニメーションオプションがあり、スライドの動きや遷移を詳細に設定できます。

ドキュメントとサポート

  • react-alice-carousel:

    ドキュメントは充実しており、基本的な使用法からカスタマイズまで詳細に説明されています。

  • react-responsive-carousel:

    豊富なドキュメントがあり、特にレスポンシブデザインに関する情報が充実しています。

  • react-slick:

    非常に詳細なドキュメントがあり、さまざまな機能やオプションについての情報が豊富です。

コミュニティとメンテナンス

  • react-alice-carousel:

    比較的新しいライブラリですが、活発なコミュニティがあり、定期的に更新されています。

  • react-responsive-carousel:

    広く使用されているため、コミュニティのサポートが充実しています。

  • react-slick:

    非常に人気のあるライブラリで、広範なコミュニティとサポートがあり、定期的なメンテナンスが行われています。

選び方: react-alice-carousel vs react-responsive-carousel vs react-slick

  • react-alice-carousel:

    シンプルでカスタマイズ可能なカルーセルが必要な場合は、react-alice-carouselを選択してください。特に、アニメーションやスワイプ機能を重視するプロジェクトに適しています。

  • react-responsive-carousel:

    レスポンシブデザインを重視し、モバイルデバイスでのパフォーマンスを最適化したい場合は、react-responsive-carouselを選択してください。多くのオプションと設定があり、柔軟性があります。

  • react-slick:

    高機能で多様なオプションを必要とする場合は、react-slickを選択してください。特に、複雑なスライドショーやカスタムナビゲーションが必要なプロジェクトに適しています。

react-alice-carousel のREADME

React Alice Carousel

npm version Build Status

React Alice Carousel is a React component for building content galleries, content rotators and any React carousels.

👉  Live demo (API): v2.x.x

👉  Previous version (API): v1.x.x

demo gif

demo gif

Features

  • Auto Height
  • Auto Play
  • Auto Width
  • Custom animation modes
  • Custom rendered slides
  • Infinite loop
  • Lazy loading
  • Mobile friendly
  • Multiple items in the slide
  • Responsive design
  • Stage padding
  • Show / hide anything (indicators, arrows, slides indexes)
  • Swipe to slide
  • Server side rendering friendly
  • Touch and Drag support
  • TypeScript

Installation

npm i react-alice-carousel

Style import

# CSS
@import "react-alice-carousel/lib/alice-carousel.css";
# SCSS
@import "react-alice-carousel/lib/scss/alice-carousel.scss";

Usage

import React from 'react';
import AliceCarousel from 'react-alice-carousel';
import 'react-alice-carousel/lib/alice-carousel.css';

const handleDragStart = (e) => e.preventDefault();

const items = [
	<img src="https://raw.githubusercontent.com/maxmarinich/react-alice-carousel/HEAD/path-to-img" onDragStart={handleDragStart} role="presentation" />,
	<img src="https://raw.githubusercontent.com/maxmarinich/react-alice-carousel/HEAD/path-to-img" onDragStart={handleDragStart} role="presentation" />,
	<img src="https://raw.githubusercontent.com/maxmarinich/react-alice-carousel/HEAD/path-to-img" onDragStart={handleDragStart} role="presentation" />,
];

const Gallery = () => <AliceCarousel mouseTracking items={items} />;

Options

  • activeIndex : Number, default 0 - Set carousel at the specified position.

  • animationDuration: Number, default 400 - Set duration of animation.

  • animationEasingFunction: String or Function, default ease - Property sets how an animation progresses through the duration of each cycle.

  • animationType: String(slide, fadeout), default slide - Set type of animation.

  • autoHeight: Boolean, default false - Set auto height mode.

  • autoWidth: Boolean, default false - Set auto width mode.

  • autoPlay: Boolean, default false - Set autoplay mode.

  • autoPlayControls: Boolean, default false - Show/hide play/pause buttons.

  • autoPlayDirection: String(ltr, rtl), default ltr - Set autoplay direction value.

  • autoPlayInterval: Number, default 400 - Set autoplay interval value.

  • autoPlayStrategy: String(default, action, all, none) - Set a strategy for autoplay mode

    • default - pause automatic playback on the hover
    • action - stop automatic playback if user action was detected
    • all - merge default && action strategies
    • none - ignore any user actions when the autoPlay property was specified
  • controlsStrategy: String (default, responsive, alternate or combined string "default,alternate") - Set a strategy for gallery controls.

    • default - use controls as is
    • alternate - show each dot for each slide
    • responsive - navigation will be hidden if the number of gallery elements is equal to the number of items in the slide.
  • disableButtonsControls: Boolean, default false - Disable buttons controls.

  • disableDotsControls: Boolean, default false - Disable dots controls.

  • disableSlideInfo: Boolean, default true - Disable information about current slide.

  • infinite: Boolean, default false - Set infinite mode.

  • innerWidth: Number, default 0 - Set a static value for a breakpoint(key) of the "responsive" property. For example, if you can't use 'window.innerWidth' during SSR.

  • items: Array, default undefined - Set gallery items, preferable to use this property instead of children.

  • keyboardNavigation: Boolean, default false - Enable keyboard navigation

    • ArrowLeft - go to the prev slide
    • ArrowRight - go to the next slide
    • Space - run/stop autoplay mode if autoPlay property is equal true
  • mouseTracking: Boolean, default false - Enable mouse drag animation. Consider the problem with links, see the example of using the <Link/> component below.

  • paddingLeft: Number, default 0 - Set the gallery offset from the left.

  • paddingRight: Number, default 0 - Set the gallery offset from the right.

  • renderKey: Number, default undefined - Auxiliary property, allows call the render method without changing the state inside the gallery instance.

  • responsive: Object, default undefined - The key is the breakpoint (default is the result of: () => window.innerWidth or innerWidth property if the last presented).

    • items - set number of items in the slide. Default: 1

    • itemsFit: one of (contain | fill | undefined) - defines, how item should fill the container according slide's width. Default: fill.

      If contain is specified, the gallery will use the value from the items property to determine the width of the element for each slide and fill in the empty space as needed.

          {
            0: {
                items: 1,
            },
            1024: {
                items: 3,
                itemsFit: 'contain',
            }
          }
    
  • syncStateOnPropsUpdate: Boolean, default true - Sync some props (like activeIndex) with carousel state while new props passed. This allows you to avoid resetting the carousel position while updating the props (e.g.: children or items).

  • swipeDelta: Number, default 20 - Set minimum distance to the start of the swiping (px).

  • swipeExtraPadding: Number, default 200 - Set maximum distance from initial place before swipe action will be stopped (px).

  • ssrSilentMode: Boolean, default true - Disable classnames modifiers for server side rendering.

  • touchTracking: Boolean, default true - Enable touch move animation.

  • touchMoveDefaultEvents: Boolean, default true - Enable touch move default events on swiping. If false was specified, this prevents vertical scrolling of the parent elements during the swipe.

  • onInitialized(e: EventObject): Function - Fired as callback after the gallery was created.

  • onResizeEvent(e: Event): Function, default shouldProcessResizeEvent method - Fired during the "resize" event to determine whether to call the event handler. Default method checks is the root element width has changed.

  • onResized(e: EventObject): Function - Fired as callback after the gallery was resized.

  • onUpdated(e: EventObject): Function - Fired as callback after updating the gallery props.

  • onSlideChange(e: EventObject): Function - Fired before the event object changes.

  • onSlideChanged(e: EventObject): Function - Fired after the event object was changed.

  • renderSlideInfo(e: SlideInfo): Rendering function - create a custom component.

  • renderDotsItem(e: DotsItem): Rendering function - create a custom component.

  • renderPrevButton({ isDisabled }): Rendering function - create a custom component.

  • renderNextButton({ isDisabled }): Rendering function - create a custom component.

  • renderPlayPauseButton({ isPlaying }): Rendering function - create a custom component.

Methods (Refs example)

  • slidePrev(e: Event) => void : Go to the prev slide.
  • slideNext(e: Event) => void : Go to the next slide.
  • slideTo(activeIndex?: number) => void : Go to the specified slide.

Components (Links example)

  • <Link /> : allows properly handle click and drag events when mouseTracking enabled, extends base HTMLAnchorElement
import React from 'react';
import AliceCarousel, { Link } from 'react-alice-carousel';
import 'react-alice-carousel/lib/alice-carousel.css';

const Gallery = () => {
  return (
    <AliceCarousel mouseTracking>
      <Link href="#">
        <img src="https://raw.githubusercontent.com/maxmarinich/react-alice-carousel/HEAD/path-to-image" />
      </Link>
    </AliceCarousel>
  );
};

Types

type EventObject = {
	item: number;
	slide: number;
	itemsInSlide: number;
	isPrevSlideDisabled: boolean;
	isNextSlideDisabled: boolean;
	type: EventType;
};

type SlideInfo = {
	item: number;
	itemsCount: number;
};

type DotsItem = {
	isActive: boolean;
	activeIndex: number;
};

enum EventType {
	ACTION = 'action', // used if a general user action (button click or swipe)
	INIT = 'init', // used if the initial event was triggered
	RESIZE = 'resize', // used if the gallery size was changed
	UPDATE = 'update', // used if the gallery was updated with props
}

CSS classes

.alice-carousel
	.alice-carousel__stage
	.alice-carousel__stage-item
	.alice-carousel__prev-btn
	.alice-carousel__prev-btn-item
	.alice-carousel__next-btn
	.alice-carousel__next-btn-item
	.alice-carousel__play-btn
	.alice-carousel__play-btn-item
	.alice-carousel__dots
	.alice-carousel__dots-item
	.alice-carousel__slide-info
	.alice-carousel__slide-info-item;

CSS modifiers

.alice-carousel.__ssr
	.alice-carousel__stage-item.__active
	.alice-carousel__stage-item.__cloned
	.alice-carousel__stage-item.__target
	.alice-carousel__next-btn-item.__inactive
	.alice-carousel__prev-btn-item.__inactive
	.alice-carousel__play-btn-item.__pause
	.alice-carousel__dots-item.__active
	.alice-carousel__dots-item.__custom
	.alice-carousel__slide-info-item.__separator;

Build the project locally

Clone

git clone https://github.com/maxmarinich/react-alice-carousel
cd react-alice-carousel

Run

npm ci
npm start

Test

npm test

License

MIT