カルーセル
カルーセルのように要素 (画像またはテキストのスライド) を循環するためのスライドショー コンポーネント。
使い方
カルーセルは、CSS 3D 変換と少しの JavaScript で構築された、一連のコンテンツを循環するためのスライドショーです。一連の画像、テキスト、またはカスタム マークアップで動作します。また、前/次のコントロールとインジケーターのサポートも含まれています。
Page Visibility APIがサポートされているブラウザーでは、Web ページがユーザーに表示されていない場合 (ブラウザー タブが非アクティブである場合、ブラウザー ウィンドウが最小化されている場合など)、カルーセルはスライドを回避します。
prefers-reduced-motion
メディア クエリに依存します。アクセシビリティ ドキュメントの縮小モーション セクションを参照してください
。
ネストされたカルーセルはサポートされておらず、通常、カルーセルはアクセシビリティ標準に準拠していないことに注意してください。
最後に、ソースから JavaScript をビルドする場合はutil.js
、 .
例
カルーセルは、スライドの寸法を自動的に正規化しません。そのため、コンテンツのサイズを適切に設定するには、追加のユーティリティまたはカスタム スタイルを使用する必要がある場合があります。カルーセルは前/次のコントロールとインジケーターをサポートしていますが、明示的に必須ではありません。必要に応じて追加およびカスタマイズします。
.active
クラスをスライドの 1 つに追加する必要があります。そうしないと、カルーセルが表示されません。また、特に 1 つのページで複数のカルーセルを使用している場合は、オプションのコントロールに一意id
のを設定してください。.carousel
制御要素と標識要素には、要素の と一致するdata-target
属性 (またはリンクの場合) が必要です。href
id
.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>
コントロール付き
前と次のコントロールを追加します。要素を使用することをお勧めしますが、要素を とともに<button>
使用することもできます。<a>
role="button"
<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>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleControls" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleControls" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</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>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleIndicators" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleIndicators" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
キャプション付き
.carousel-caption
any 内の要素を使用して、スライドにキャプションを簡単に追加します.carousel-item
。以下に示すように、オプションの表示ユーティリティを使用して、小さなビューポートで簡単に非表示にすることができます。最初は で非表示にし、 で.d-none
中規模のデバイスに戻します.d-md-block
。
<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>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-target="#carouselExampleCaptions" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleCaptions" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
クロスフェード
カルーセルに追加.carousel-fade
して、スライドの代わりにフェード トランジションでスライドをアニメーション化します。カルーセルのコンテンツ (テキストのみのスライドなど) によっては、適切なクロスフェードのため.bg-body
に にカスタム CSS を追加したり、いくつかのカスタム CSS を追加したりすることが必要な場合があります。.carousel-item
<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>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleFade" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleFade" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
個別.carousel-item
インターバル
に追加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>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleInterval" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleInterval" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
タッチスワイプを無効にする
カルーセルは、タッチスクリーン デバイスで左右にスワイプしてスライド間を移動することをサポートしています。data-touch
これは、属性を使用して無効にすることができます。以下の例にもdata-ride
属性が含まdata-interval="false"
れていないため、自動再生されません。
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-touch="false" data-interval="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-target="#carouselExampleControlsNoTouching" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleControlsNoTouching" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</button>
</div>
使用法
データ属性経由
データ属性を使用して、カルーセルの位置を簡単に制御します。現在の位置に相対的なスライド位置を変更するdata-slide
キーワードprev
またはを受け入れます。または、未加工のスライド インデックスをカルーセルに渡すためnext
に使用します。これにより、スライドの位置が で始まる特定のインデックスに移動します。data-slide-to
data-slide-to="2"
0
このdata-ride="carousel"
属性は、カルーセルをページの読み込みからアニメーション化するようにマークするために使用されます。カルーセルの初期化に使用しない場合はdata-ride="carousel"
、自分で初期化する必要があります。同じカルーセルの (冗長で不要な) 明示的な JavaScript 初期化と組み合わせて使用することはできません。
JavaScript 経由
次のように手動でカルーセルを呼び出します。
$('.carousel').carousel()
オプション
オプションは、データ属性または JavaScript を介して渡すことができます。data-
データ属性の場合、オプション名をのようにに追加しますdata-interval=""
。
名前 | タイプ | デフォルト | 説明 |
---|---|---|---|
間隔 | 番号 | 5000 | アイテムを自動的に循環させるまでの遅延時間。の場合false 、カルーセルは自動的に循環しません。 |
キーボード | ブール値 | 真実 | カルーセルがキーボード イベントに反応するかどうか。 |
一時停止 | 文字列 | ブール値 | 「ホバー」 | に設定すると タッチ対応デバイスでは、 に設定すると、自動的に再開する前に (ユーザーがカルーセルとの対話を終了すると) 2 つの間隔で |
乗る | ストリング | 間違い | ユーザーが最初のアイテムを手動で循環させた後、カルーセルを自動再生します。に設定すると'carousel' 、ロード時にカルーセルが自動再生されます。 |
包む | ブール値 | 真実 | カルーセルが連続して循環するか、ハードストップを行うか。 |
接する | ブール値 | 真実 | カルーセルがタッチスクリーン デバイスでの左右のスワイプ インタラクションをサポートするかどうか。 |
メソッド
非同期メソッドと遷移
すべての API メソッドは非同期であり、遷移を開始し���す。トランジションが開始されるとすぐに呼び出し元に戻りますが、トランジションが終了する前に戻ります。さらに、遷移中のコンポーネントでのメソッド呼び出しは無視されます。
.carousel(options)
オプションのオプションでカルーセルを初期化し、object
アイテムの循環を開始します。
$('.carousel').carousel({
interval: 2000
})
.carousel('cycle')
カルーセル アイテムを左から右に循環します。
.carousel('pause')
カルーセルがアイテムを循環するのを止めます。
.carousel(number)
カルーセルを特定のフレーム (0 ベース、配列と同様) に切り替えます。ターゲット アイテムが表示される前 (つまり、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel
.carousel('prev')
前の項目に循環します。前の項目が表示される前 (つまり、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel
.carousel('next')
次のアイテムに循環します。次の項目が表示される前 (つまり、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel
.carousel('dispose')
要素のカルーセルを破棄します。
.carousel('nextWhenVisible')
ページが表示されていない場合、またはカルーセルまたはその親が表示されていない場合は、カルーセルを次へ循環させないでください。次の項目が表示される前 (つまり、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel
.carousel('to')
カルーセルを特定のフレーム (0 ベース、配列と同様) に切り替えます。次の項目が表示される前 (つまり、イベントが発生する前)に呼び出し元に戻ります。slid.bs.carousel
イベント
Bootstrap のカルーセル クラスは、カルーセル機能にフックするための 2 つのイベントを公開します。両方のイベントには、次の追加のプロパティがあります。
direction
: カルーセルがスライドする方向 ("left"
または"right"
)。relatedTarget
: アクティブなアイテムとして配置される DOM 要素。from
: 現在のアイテムのインデックスto
: 次の項目のインデックス
すべてのカルーセル イベントは、カルーセル自体 (つまり<div class="carousel">
) で発生します。
イベントタイプ | 説明 |
---|---|
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
)。