メインコンテンツにスキップ ドキュメント ナビゲーションにスキップ
Check
in English

カルーセル

カルーセルのように要素 (画像またはテキストのスライド) を循環するためのスライドショー コンポーネント。

使い方

カルーセルは、CSS 3D 変換と少しの JavaScript で構築された、一連のコンテンツを循環するためのスライドショーです。一連の画像、テキスト、またはカスタム マークアップで動作します。また、前/次のコントロールとインジケーターのサポートも含まれています。

Page Visibility APIがサポートされているブラウザーでは、Web ページがユーザーに表示されていない場合 (ブラウザー タブが非アクティブである場合、ブラウザー ウィンドウが最小化されている場合など)、カルーセルはスライドを回避します。

このコンポーネントのアニメーション効果は、 prefers-reduced-motionメディア クエリに依存します。アクセシビリティ ドキュメントの縮小モーション セクションを参照してください 。

ネストされたカルーセルはサポートされておらず、通常、カルーセルはアクセシビリティ標準に準拠していないことに注意してください。

カルーセルは、スライドの寸法を自動的に正規化しません。そのため、コンテンツのサイズを適切に設定するには、追加のユーティリティまたはカスタム スタイルを使用する必要がある場合があります。カルーセルは前/次のコントロールとインジケーターをサポートしていますが、明示的に必須ではありません。必要に応じて追加およびカスタマイズします。

.activeクラスをスライドの 1 つに追加する必要があります。そうしないと、カルーセルが表示されません。また、特に 1 つのページで複数のカルーセルを使用している場合は、オプションのコントロールに一意idのを設定してください。.carousel制御要素と標識要素には、要素の と一致するdata-bs-target属性 (またはリンクの場合) が必要です。hrefid.carousel

スライドのみ

これは、スライドのみのカルーセルです。ブラウザのデフォルトの画像配置を防ぐために、カルーセル画像に.d-blockとが存在することに注意してください。.w-100

html
<div id="carouselExampleSlidesOnly" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
</div>

コントロール付き

前と次のコントロールを追加します。要素を使用することをお勧めしますが、要素を とともに<button>使用することもできます。<a>role="button"

html
<div id="carouselExampleControls" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

インジケータ付き

コントロールと一緒に、カルーセルにインジケーターを追加することもできます。

html
<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="true">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

キャプション付き

.carousel-captionany 内の要素を使用して、スライドにキャプションを簡単に追加します.carousel-item。以下に示すように、オプションの表示ユーティリティを使用して、小さなビューポートで簡単に非表示にすることができます。最初は で非表示にし、 で.d-none中規模のデバイスに戻します.d-md-block

html
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="false">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>First slide label</h5>
        <p>Some representative placeholder content for the first slide.</p>
      </div>
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Second slide label</h5>
        <p>Some representative placeholder content for the second slide.</p>
      </div>
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Third slide label</h5>
        <p>Some representative placeholder content for the third slide.</p>
      </div>
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

クロスフェード

カルーセルに追加.carousel-fadeして、スライドの代わりにフェード トランジションでスライドをアニメーション化します。カルーセル コンテンツ (テキストのみのスライドなど) によっては、適切なクロスフェードのため.bg-bodyに にカスタム CSS を追加したり、いくつかのカスタム CSS を追加したりすることが必要な場合があります。.carousel-item

html
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

に追加data-bs-interval=""して.carousel-item、次の項目に自動的に循環するまでの遅延時間を変更します。

html
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active" data-bs-interval="10000">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item" data-bs-interval="2000">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

タッチスワイプを無効にする

カルーセルは、タッチスクリーン デバイスで左右にスワイプしてスライド間を移動することをサポートしています。data-bs-touchこれは、属性を使用して無効にすることができます。以下の例にもdata-bs-ride属性が含まれていないため、自動再生されません。

html
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="false">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

ダークバリアント

暗いコントロール、インジケーター、キャプションに追加.carousel-darkします。コントロールは、 CSS プロパティ.carouselを使用して、デフォルトの白い塗りつぶしから反転されています。filterキャプションとコントロールには、 と をカスタマイズする追加の Sass 変数がcolorありbackground-colorます。

html
<div id="carouselExampleDark" class="carousel carousel-dark slide" data-bs-ride="carousel">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active" data-bs-interval="10000">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>First slide label</h5>
        <p>Some representative placeholder content for the first slide.</p>
      </div>
    </div>
    <div class="carousel-item" data-bs-interval="2000">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Second slide label</h5>
        <p>Some representative placeholder content for the second slide.</p>
      </div>
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
      <div class="carousel-caption d-none d-md-block">
        <h5>Third slide label</h5>
        <p>Some representative placeholder content for the third slide.</p>
      </div>
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

カスタムトランジション

の遷移期間は、コンパイル前.carousel-itemに Sass 変数で変更する$carousel-transition-durationか、コンパイル済みの CSS を使用している場合はカスタム スタイルで変更できます。複数のトランジションが適用される場合は、トランスフォーム トランジションが最初に定義されていることを確認してください (例: transition: transform 2s ease, opacity .5s ease-out)。

サス

変数

すべてのカルーセルの変数:

$carousel-control-color:             $white;
$carousel-control-width:             15%;
$carousel-control-opacity:           .5;
$carousel-control-hover-opacity:     .9;
$carousel-control-transition:        opacity .15s ease;

$carousel-indicator-width:           30px;
$carousel-indicator-height:          3px;
$carousel-indicator-hit-area-height: 10px;
$carousel-indicator-spacer:          3px;
$carousel-indicator-opacity:         .5;
$carousel-indicator-active-bg:       $white;
$carousel-indicator-active-opacity:  1;
$carousel-indicator-transition:      opacity .6s ease;

$carousel-caption-width:             70%;
$carousel-caption-color:             $white;
$carousel-caption-padding-y:         1.25rem;
$carousel-caption-spacer:            1.25rem;

$carousel-control-icon-width:        2rem;

$carousel-control-prev-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>");
$carousel-control-next-icon-bg:      url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>");

$carousel-transition-duration:       .6s;
$carousel-transition:                transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)

ダーク カルーセルの変数:

$carousel-dark-indicator-active-bg:  $black;
$carousel-dark-caption-color:        $black;
$carousel-dark-control-icon-filter:  invert(1) grayscale(100);

使用法

データ属性経由

データ属性を使用して、カルーセルの位置を簡単に制御します。現在の位置に相対的なスライド位置を変更するdata-bs-slideキーワードprevまたはを受け入れます。または、未加工のスライド インデックスをカルーセルに渡すためnextに使用します。これにより、スライドの位置が で始まる特定のインデックスに移動します。data-bs-slide-todata-bs-slide-to="2"0

このdata-bs-ride="carousel"属性は、カルーセルをページの読み込みからアニメーション化するようにマークするために使用されます。カルーセルの初期化に使用しない場合はdata-bs-ride="carousel"、自分で初期化する必要があります。同じカルーセルの (冗長で不要な) 明示的な JavaScript 初期化と組み合わせて使用​​することはできません。

JavaScript 経由

次のように手動でカルーセルを呼び出します。

const carousel = new bootstrap.Carousel('#myCarousel')

オプション

オプションはデータ属性または JavaScript を介して渡すことができるためdata-bs-、 のようにオプション名を に追加できますdata-bs-animation="{value}"。データ属性を介してオプションを渡すときは、オプション名のケース タイプを「camelCase」から「kebab-case 」に変更してください。たとえば、data-bs-custom-class="beautifier"の代わりに を使用しdata-bs-customClass="beautifier"ます。

Bootstrap 5.2.0 の時点で、すべてのコンポーネントは、単純なコンポーネント構成を JSON 文字列として格納できる実験的な予約済みデータ属性をサポートしています。data-bs-config要素にdata-bs-config='{"delay":0, "title":123}'data-bs-title="456"属性がある場合、最終的なtitle値は に456なり、個別のデータ属性が で指定された値をオーバーライドしますdata-bs-config。さらに、既存のデータ属性は、 のような JSON 値を格納できますdata-bs-delay='{"show":0,"hide":150}'

名前 タイプ デフォルト 説明
interval 番号 5000 アイテムを自動的に循環させるまでの遅延時間。
keyboard ブール値 true カルーセルがキーボード イベントに反応するかどうか。
pause 文字列、ブール値 "hover" に設定すると"hover"、 でカルーセルのサイクリングを一時停止し、 でカルーセルmouseenterのサイクリングを再開しmouseleaveます。に設定するとfalse、カルーセルにカーソルを合わせても一時停止しません。タッチ対応デバイスでは、 に設定すると、自動的に再開する前に (ユーザーがカルーセルとの対話を終了すると) 2 つの間隔で"hover"サイクリングが一時停止します。touchendこれは、マウスの動作に追加されます。
ride 文字列、ブール値 false に設定するとtrue、ユーザーが最初の項目を手動で切り替えた後にカルーセルが自動再生されます。に設定すると"carousel"、ロード時にカルーセルが自動再生されます。
touch ブール値 true カルーセルがタッチスクリーン デバイスでの左右のスワイプ インタラクションをサポートするかどうか。
wrap ブール値 true カルーセルが連続して循環するか、ハードストップするか。

メソッド

非同期メソッドと遷移

すべての API メソッドは非同期であり、遷移を開始します。トランジションが開始されるとすぐに呼び出し元に戻りますが、トランジションが終了する前に戻ります。さらに、遷移中のコンポーネントでのメソッド呼び出しは無視されます。

詳細については、JavaScript のドキュメントを参照してください

たとえば、カルーセル コンストラクターを使用してカルーセル インスタンスを作成し、追加のオプションで初期化して項目の循環を開始できます。

const myCarouselElement = document.querySelector('#myCarousel')
const carousel = new bootstrap.Carousel(myCarouselElement, {
  interval: 2000,
  wrap: false
})
方法 説明
cycle カルーセル アイテムを左から右に循環します。
dispose 要素のカルーセルを破棄します。(DOM要素に格納されたデータを削除します)
getInstance DOM 要素に関連付けられたカルーセル インスタンスを取得できる静的メソッド。次のように使用できますbootstrap.Carousel.getInstance(element)
getOrCreateInstance DOM 要素に関連付けられたカルーセル インスタンスを返すか、初期化されていない場合は新しいインスタンスを作成する静的メソッド。次のように使用できますbootstrap.Carousel.getOrCreateInstance(element)
next 次のアイテムに循環します。次の項目が表示される前に (たとえば、イベントが発生する前に)呼び出し元に戻ります。slid.bs.carousel
nextWhenVisible ページが表示されていない場合、またはカルーセルまたはその親が表示されていない場合は、カルーセルを次に循環させません。対象のアイテムが表示される前に呼び出し元に戻ります
pause カルーセルがアイテムを循環するのを止めます。
prev 前のアイテムに循環します。前の項目が表示される前 (たとえば、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel
to カルーセルを特定のフレーム (0 ベース、配列と同様) に切り替えます。ターゲット アイテムが表示される前 (たとえば、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel

イベント

Bootstrap のカルーセル クラスは、カルーセル機能にフックするための 2 つのイベントを公開します。両方のイベントには、次の追加のプロパティがあります。

  • direction: カルーセルがスライドする方向 ("left"または"right")。
  • relatedTarget: アクティブなアイテムとして配置される DOM 要素。
  • from: 現在のアイテムのインデックス
  • to: 次の項目のインデックス

すべてのカルーセル イベントは、カルーセル自体 (つまり<div class="carousel">) で発生します。

イベントタイプ 説明
slid.bs.carousel カルーセルがスライド遷移を完了したときに発生します。
slide.bs.carousel slideインスタンス メソッドが呼び出されるとすぐに発生します。
const myCarousel = document.getElementById('myCarousel')

myCarousel.addEventListener('slide.bs.carousel', event => {
  // do something...
})