flickity vs @splidejs/splide vs slick-carousel vs swiper
カルーセルとスライダーライブラリ
flickity@splidejs/splideslick-carouselswiper類似パッケージ:

カルーセルとスライダーライブラリ

カルーセルとスライダーライブラリは、ウェブサイトやアプリケーションで画像やコンテンツをスライドショー形式で表示するためのツールです。これらのライブラリは、ユーザーが複数のアイテムをスクロールしたり、スワイプしたりできるインタラクティブなインターフェースを提供します。@splidejs/splideは軽量でレスポンシブなスライダーライブラリで、カスタマイズ性が高く、アクセシビリティにも配慮しています。flickityはモバイルフレンドリーで、ドラッグやスワイプ操作がスムーズなカルーセルライブラリです。slick-carouselは多機能で、無限ループや自動再生などの高度な機能を備えたカルーセルライブラリです。swiperはモバイルデバイス向けに最適化されたスライダーライブラリで、タッチ操作やジェスチャーに対応しています。

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

3 年

GitHub Starsランキング

統計詳細

パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
flickity83,5707,590338 kB123-GPL-3.0
@splidejs/splide05,3391.21 MB143-MIT
slick-carousel028,604-1,3378年前MIT
swiper041,8253.38 MB24718時間前MIT

機能比較: flickity vs @splidejs/splide vs slick-carousel vs swiper

サイズとパフォーマンス

  • flickity:

    flickityはモバイルフレンドリーで、軽量なカルーセルを提供しますが、複雑なアニメーションや多くのアイテムを表示する場合はパフォーマンスに影響が出る可能性があります。

  • @splidejs/splide:

    @splidejs/splideは非常に軽量で、パフォーマンスに優れたスライダーを提供します。特に、ページの読み込み速度を重視するプロジェクトに適しています。

  • slick-carousel:

    slick-carouselは多機能ですが、その分ファイルサイズが大きくなることがあります。パフォーマンスを最適化するためには、必要な機能だけを使用することが推奨されます。

  • swiper:

    swiperはモバイルデバイス向けに最適化されており、タッチ操作に特化した軽量なスライダーを提供します。特に、モバイル環境でのパフォーマンスが優れています。

カスタマイズ性

  • flickity:

    flickityはシンプルで直感的なカスタマイズが可能ですが、複雑な設定や高度なカスタマイズには限界があります。特に、ドラッグやスワイプの動作を調整することができます。

  • @splidejs/splide:

    @splidejs/splideは高度なカスタマイズが可能で、CSSやJavaScriptを使ってスライダーの外観や動作を自由に変更できます。特に、アクセシビリティやレスポンシブデザインに配慮したカスタマイズが容易です。

  • slick-carousel:

    slick-carouselは非常に多機能で、幅広いカスタマイズが可能です。特に、無限ループや自動再生、レスポンシブ設定など、多くのオプションを細かく調整できます。

  • swiper:

    swiperはモバイルフレンドリーな設計で、タッチ操作やジェスチャーに対応したカスタマイズが可能です。特に、スライダーの動作や外観を細かく調整できる柔軟性があります。

アクセシビリティ

  • flickity:

    flickityは基本的なアクセシビリティ機能を提供していますが、特にアクセシビリティに特化した設計ではありません。キーボード操作やスクリーンリーダー対応はありますが、追加の調整が必要な場合があります。

  • @splidejs/splide:

    @splidejs/splideはアクセシビリティに配慮した設計が特徴で、キーボード操作やスクリーンリーダーに対応しています。特に、WCAG(Web Content Accessibility Guidelines)に準拠した機能が組み込まれています。

  • slick-carousel:

    slick-carouselはアクセシビリティ機能を備えていますが、設定やカスタマイズが必要な場合があります。特に、キーボード操作やスクリーンリーダー対応を強化するためには、追加のコーディングが必要になることがあります。

  • swiper:

    swiperはアクセシビリティに配慮した設計がされており、キーボード操作やスクリーンリーダーに対応しています。特に、モバイルデバイスでの操作性を考慮した設計が特徴です。

コード例

  • flickity:

    flickityの基本的な使用例

    <div class="carousel" data-flickity='{ "wrapAround": true }'>
      <div class="carousel-cell">Cell 1</div>
      <div class="carousel-cell">Cell 2</div>
      <div class="carousel-cell">Cell 3</div>
    </div>
    <script>
      var elem = document.querySelector('.carousel');
      var flkty = new Flickity(elem, {
        // options
        cellAlign: 'left',
        contain: true
      });
    </script>
    
  • @splidejs/splide:

    @splidejs/splideの基本的な使用例

    <div id="splide" class="splide">
      <div class="splide__track">
        <ul class="splide__list">
          <li class="splide__slide">Slide 1</li>
          <li class="splide__slide">Slide 2</li>
          <li class="splide__slide">Slide 3</li>
        </ul>
      </div>
    </div>
    <script>
      new Splide('#splide', {
        type   : 'loop',
        perPage: 3,
        autoplay: true,
      }).mount();
    </script>
    
  • slick-carousel:

    slick-carouselの基本的な使用例

    <div class="your-class">
      <div>Slide 1</div>
      <div>Slide 2</div>
      <div>Slide 3</div>
    </div>
    <script>
      $(document).ready(function(){
        $('.your-class').slick({
          infinite: true,
          slidesToShow: 3,
          slidesToScroll: 1,
          autoplay: true,
          autoplaySpeed: 2000,
        });
      });
    </script>
    
  • swiper:

    swiperの基本的な使用例

    <div class="swiper-container">
      <div class="swiper-wrapper">
        <div class="swiper-slide">Slide 1</div>
        <div class="swiper-slide">Slide 2</div>
        <div class="swiper-slide">Slide 3</div>
      </div>
      <!-- Add Pagination -->
      <div class="swiper-pagination"></div>
      <!-- Add Navigation -->
      <div class="swiper-button-next"></div>
      <div class="swiper-button-prev"></div>
    </div>
    <script>
      var swiper = new Swiper('.swiper-container', {
        slidesPerView: 1,
        spaceBetween: 10,
        loop: true,
        pagination: {
          el: '.swiper-pagination',
          clickable: true,
        },
        navigation: {
          nextEl: '.swiper-button-next',
          prevEl: '.swiper-button-prev',
        },
      });
    </script>
    

選び方: flickity vs @splidejs/splide vs slick-carousel vs swiper

  • flickity:

    flickityは、モバイルフレンドリーでドラッグやスワイプ操作がスムーズなカルーセルを必要とするプロジェクトに適しています。特に、ユーザーが直感的に操作できるインターフェースを提供したい場合におすすめです。

  • @splidejs/splide:

    @splidejs/splideは、軽量でレスポンシブなスライダーを必要とし、アクセシビリティやカスタマイズ性を重視するプロジェクトに最適です。特に、SEOやユーザーエクスペリエンスに配慮した設計が求められる場合に適しています。

  • slick-carousel:

    slick-carouselは、多機能で高度な設定が可能なカルーセルを必要とするプロジェクトに適しています。無限ループや自動再生などの機能を活用したい場合に最適です。

  • swiper:

    swiperは、モバイルデバイス向けに最適化されたスライダーを必要とし、タッチ操作やジェスチャーに対応したインターフェースを提供したい場合に適しています。特に、モバイルファーストのデザインを重視するプロジェクトにおすすめです。

flickity のREADME

Flickity

Touch, responsive, flickable carousels

See flickity.metafizzy.co for complete docs and demos.

Install

Download

CDN

Link directly to Flickity files on unpkg.

<link rel="stylesheet" href="https://unpkg.com/flickity@2/dist/flickity.min.css">
<script src="https://unpkg.com/flickity@2/dist/flickity.pkgd.min.js"></script>

Package managers

Bower: bower install flickity --save

npm: npm install flickity --save

License

Commercial license

If you want to use Flickity to develop commercial sites, themes, projects, and applications, the Commercial license is the appropriate license. With this option, your source code is kept proprietary. Purchase a Flickity Commercial License at flickity.metafizzy.co

Open source license

If you are creating an open source application under a license compatible with the GNU GPL license v3, you may use Flickity under the terms of the GPLv3.

Read more about Flickity's license.

Usage

Flickity works with a container element and a set of child cell elements

<div class="carousel">
  <div class="carousel-cell">...</div>
  <div class="carousel-cell">...</div>
  <div class="carousel-cell">...</div>
  ...
</div>

Options

var flky = new Flickity( '.gallery', {
  // options, defaults listed

  accessibility: true,
  // enable keyboard navigation, pressing left & right keys

  adaptiveHeight: false,
  // set carousel height to the selected slide

  autoPlay: false,
  // advances to the next cell
  // if true, default is 3 seconds
  // or set time between advances in milliseconds
  // i.e. `autoPlay: 1000` will advance every 1 second

  cellAlign: 'center',
  // alignment of cells, 'center', 'left', or 'right'
  // or a decimal 0-1, 0 is beginning (left) of container, 1 is end (right)

  cellSelector: undefined,
  // specify selector for cell elements

  contain: false,
  // will contain cells to container
  // so no excess scroll at beginning or end
  // has no effect if wrapAround is enabled

  draggable: '>1',
  // enables dragging & flicking
  // if at least 2 cells

  dragThreshold: 3,
  // number of pixels a user must scroll horizontally to start dragging
  // increase to allow more room for vertical scroll for touch devices

  freeScroll: false,
  // enables content to be freely scrolled and flicked
  // without aligning cells

  friction: 0.2,
  // smaller number = easier to flick farther

  groupCells: false,
  // group cells together in slides

  initialIndex: 0,
  // zero-based index of the initial selected cell

  lazyLoad: true,
  // enable lazy-loading images
  // set img data-flickity-lazyload="src.jpg"
  // set to number to load images adjacent cells

  percentPosition: true,
  // sets positioning in percent values, rather than pixels
  // Enable if items have percent widths
  // Disable if items have pixel widths, like images

  prevNextButtons: true,
  // creates and enables buttons to click to previous & next cells

  pageDots: true,
  // create and enable page dots

  resize: true,
  // listens to window resize events to adjust size & positions

  rightToLeft: false,
  // enables right-to-left layout

  setGallerySize: true,
  // sets the height of gallery
  // disable if gallery already has height set with CSS

  watchCSS: false,
  // watches the content of :after of the element
  // activates if #element:after { content: 'flickity' }

  wrapAround: false
  // at end of cells, wraps-around to first for infinite scrolling

});

By Metafizzy 🌈🐻