カルーセル / スライダー(Carousel / Slider)

Swiper・Embla Carousel・Keen Sliderなどのカルーセル実装比較。自動再生・複数アイテム表示・フェードなど実践的なパターンをインタラクティブに確認できます。

💡 このページでは、Ant Design・Mantine・shadcn/ui(UIコンポーネントライブラリ)と Swiper・Embla Carousel・Keen Slider(カルーセル専用ライブラリ)の実装を比較できます。

Ant Design Carousel

Ant Design に組み込みの Carousel コンポーネント(rc-slick ベース)。autoplay・dots・arrows・effect など充実した Props で、外部プラグイン不要で多彩な表現が可能。 slidesToShow で複数アイテム同時表示にも対応。

autoplayeffect="fade"slidesToShowdots / arrowsプラグイン不要
読み込み中...
tsx
'use client';
import { Carousel } from 'antd';
import { ConfigProvider } from 'antd';

const slides = [
  { color: '#4f46e5', label: 'Slide 1' },
  { color: '#0891b2', label: 'Slide 2' },
  { color: '#16a34a', label: 'Slide 3' },
  { color: '#dc2626', label: 'Slide 4' },
];

export function AntCarouselDemo() {
  return (
    <ConfigProvider>
      {/* 基本カルーセル(自動再生・矢印・ドット) */}
      <Carousel autoplay autoplaySpeed={3000} dots arrows loop>
        {slides.map(s => (
          <div key={s.label}>
            <div style={{ background: s.color, height: 220 }}
              className="flex items-center justify-center text-white text-2xl font-bold">
              {s.label}
            </div>
          </div>
        ))}
      </Carousel>

      {/* フェードトランジション */}
      <Carousel autoplay effect="fade" autoplaySpeed={2500} dots>
        {slides.map(s => (
          <div key={s.label}>
            <div style={{ background: s.color, height: 180 }}
              className="flex items-center justify-center text-white text-2xl font-bold">
              {s.label}
            </div>
          </div>
        ))}
      </Carousel>

      {/* 複数アイテム表示 */}
      <Carousel slidesToShow={3} slidesToScroll={1} autoplay dots arrows>
        {slides.map(s => (
          <div key={s.label} className="px-1">
            <div style={{ background: s.color, height: 140 }}
              className="flex items-center justify-center text-white font-bold rounded-lg">
              {s.label}
            </div>
          </div>
        ))}
      </Carousel>
    </ConfigProvider>
  );
}

🤖 AIプロンプトテンプレート

React + Tailwind CSSで、Ant Designを使ったカルーセルを実装してください。
- 使用ライブラリ: antd の Carousel コンポーネント
- autoplay prop で自動再生を有効化、autoplaySpeed で切り替え間隔(ms)を設定
- dots prop でドットインジケーターを表示
- arrows prop(v5.17+)で前へ/次へ矢印ナビゲーションを表示
- effect="fade" でフェードトランジションに切り替え
- slidesToShow で1画面に表示するスライド数を設定(複数アイテム表示)
- loop prop でループ(無限スクロール)を有効化
- ref + CarouselRef でプログラムからスクロールを制御(goTo, prev, next)

⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。

ライブラリ比較

項目Ant DesignMantineshadcn/uiSwiperEmblaKeen Slider
自動再生✅ autoplay prop✅ Embla Autoplay✅ Embla Autoplay✅ Autoplay モジュール✅ Autoplay プラグイン⚠️ 自作プラグイン
フェード切り替え✅ effect="fade"❌ 非対応❌ 非対応✅ effect="fade"❌ 非対応❌ 非対応
複数アイテム表示✅ slidesToShow✅ slideSize✅ basis-1/3✅ slidesPerView✅ flex-[0_0_32%]✅ slides.perView
レスポンシブ⚠️ 手動実装⚠️ 手動実装✅ CSS(Tailwind)✅ breakpoints prop⚠️ 手動実装✅ breakpoints prop
外部依存antd のみ@mantine/carousel + Emblaembla-carousel-reactswiper のみembla-carousel-reactkeen-slider のみ
スタイル自由度⚠️ antd スタイルに依存⚠️ Mantine デザインシステム✅ Tailwind 完全対応✅ CSS 上書き可✅ 完全自由✅ 完全自由
バンドルサイズ⚠️ antd 全体に依存⚠️ @mantine/carousel のみ小✅ 小(Emblaと同等)✅ 使ったモジュールのみ✅ 超軽量✅ 軽量

選択のポイント

  • Ant Design — antd を既に使っているプロジェクトなら追加依存なしで使える。autoplay・effect・slidesToShow など 必要な機能が Props で揃っており、外部プラグイン不要で即実装できるのが強み。
  • Mantine Carousel — @mantine/carousel は Embla Carousel の高品質なラッパー。withIndicators・withControls・slideSize など Mantine らしい宣言的 API で書けるのが魅力。Mantine を採用しているプロジェクトで特に相性が良い。
  • shadcn/ui Carousel — Embla Carousel ベースで、CarouselItem の basis-1/3 のように Tailwind の CSS を直接使って レイアウトを制御できる。デザインシステムを Tailwind で統一しているプロジェクトに最適。
  • Swiper — 週700万DLの圧倒的シェアを誇る最も機能豊富なライブラリ。フェード・キューブ・カードなど 豊富なエフェクト、breakpoints によるレスポンシブ設定、縦スクロールなど高度な要件に対応。 ドキュメントが充実しており、ECサイトや LP に特に向いている。
  • Embla Carousel — 依存ゼロ・超軽量のヘッドレスカルーセル。スタイルを完全に自前で制御できるため、 デザインシステムへの完全準拠が必要な場面に向いている。 Mantine・shadcn/ui の内部エンジンでもあるため信頼性が高い。
  • Keen Slider — React Hooks ベースで簡潔に書けるカルーセル。slides: { perView, spacing } の直感的な API と タッチ操作対応が特徴。オートプレイはプラグインを自作する必要があるが、 シンプルなスライダー・ギャラリーには手軽に使える。

カルーセル(スライダー)は、複数のコンテンツを横方向にスライドして切り替えるUI。商品画像・ヒーローバナー・お客様の声・ニュース記事のハイライトなど、限られたスペースに複数のコンテンツを収めたい場面で使われる。

ECサイトの商品画像ギャラリー・LP のヒーローバナー・ポートフォリオのビジュアル・証言・口コミの一覧表示・ニュースや記事のハイライト。

主なバリエーション
  • 単一スライド型(1枚ずつ表示)
  • 複数アイテム表示型(3〜5枚同時表示)
  • 自動再生型(オートプレイ)
  • フェード切り替え型
  • サムネイル連動型
  • 無限ループ型