Source

カルーセル

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

使い方

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

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

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

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

最後に、ソースから JavaScript をビルドする場合util.js、 .

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

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

スライドのみ

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

<div id="carouselExampleSlidesOnly" class="carousel slide" data-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>

コントロール付き

前のコントロールと次のコントロールを追加します。

<div id="carouselExampleControls" class="carousel slide" data-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>
  <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

インジケータ付き

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

<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
  </ol>
  <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>
  <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

キャプション付き

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

<div class="bd-example">
  <div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
    <ol class="carousel-indicators">
      <li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
      <li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
      <li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
    </ol>
    <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>Nulla vitae elit libero, a pharetra augue mollis interdum.</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>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</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>Praesent commodo cursus magna, vel scelerisque nisl consectetur.</p>
        </div>
      </div>
    </div>
    <a class="carousel-control-prev" href="#carouselExampleCaptions" role="button" data-slide="prev">
      <span class="carousel-control-prev-icon" aria-hidden="true"></span>
      <span class="sr-only">Previous</span>
    </a>
    <a class="carousel-control-next" href="#carouselExampleCaptions" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
    </a>
  </div>
</div>

クロスフェード

カルーセルに追加.carousel-fadeして、スライドの代わりにフェード トランジションでスライドをアニメーション化します。

<div id="carouselExampleFade" class="carousel slide carousel-fade" data-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>
  <a class="carousel-control-prev" href="#carouselExampleFade" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleFade" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

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

<div id="carouselExampleInterval" class="carousel slide" data-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active" data-interval="10000">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item" data-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>
  <a class="carousel-control-prev" href="#carouselExampleInterval" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleInterval" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

使用法

データ属性経由

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

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

JavaScript 経由

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

$('.carousel').carousel()

オプション

オプションは、データ属性または JavaScript を介して渡すことができます。data-データ属性の場合、オプション名をのようにに追加しますdata-interval=""

名前 タイプ デフォルト 説明
間隔 番号 5000 アイテムを自動的に循環させるまでの遅延時間。false の場合、カルーセルは自動的に循環しません。
キーボード ブール値 真実 カルーセルがキーボード イベントに反応するかどうか。
一時停止 文字列 | ブール値 「ホバー」

に設定すると"hover"、 でカルーセルの循環を一時停止し、 でカルーセルmouseenterの循環を再開しmouseleaveます。に設定するとfalse、カルーセルにカーソルを合わせても一時停止しません。

タッチ対応デバイスでは、 に設定すると、自動的に再開する前に (ユーザーがカルーセルとの対話を終了すると) 2 つの間隔で"hover"サイクリングが一時停止します。touchendこれは、上記のマウスの動作に追加されることに注意してください。

乗る ストリング 間違い ユーザーが最初のアイテムを手動で循環させた後、カルーセルを自動再生します。「カルーセル」の場合、読み込み時にカルーセルを自動再生します。
包む ブール値 真実 カルーセルが連続して循環するか、ハードストップを行うか。
接する ブール値 真実 カルーセルがタッチスクリーン デバイスでの左右のスワイプ インタラクションをサポートするかどうか。

メソッド

非同期メソッドと遷移

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

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

.carousel(options)

オプションのオプションでカルーセルを初期化し、objectアイテムの循環を開始します。

$('.carousel').carousel({
  interval: 2000
})

.carousel('cycle')

カルーセル アイテムを左から右に循環します。

.carousel('pause')

カルーセルがアイテムを循環するのを止めます。

.carousel(number)

カルーセルを特定のフレーム (0 ベース、配列と同様) に切り替えます。ターゲット アイテムが表示される前 (つまり、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel

.carousel('prev')

Cycles to the previous item. Returns to the caller before the previous item has been shown (i.e. before the slid.bs.carousel event occurs).

.carousel('next')

Cycles to the next item. Returns to the caller before the next item has been shown (i.e. before the slid.bs.carousel event occurs).

.carousel('dispose')

Destroys an element’s carousel.

Events

Bootstrap’s carousel class exposes two events for hooking into carousel functionality. Both events have the following additional properties:

  • direction: The direction in which the carousel is sliding (either "left" or "right").
  • relatedTarget: The DOM element that is being slid into place as the active item.
  • from: The index of the current item
  • to: The index of the next item

All carousel events are fired at the carousel itself (i.e. at the <div class="carousel">).

Event Type Description
slide.bs.carousel slideこのイベントは、インスタンス メソッドが呼び出されるとすぐに発生します。
スライド bs カルーセル このイベントは、カルーセルがスライド遷移を完了したときに発生します。
$('#myCarousel').on('slide.bs.carousel', function () {
  // do something...
})

遷移時間を変更する

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