<template>
<div>
<b-carousel
id="carousel-1"
v-model="slide"
:interval="4000"
controls
indicators
background="#ababab"
img-width="1024"
img-height="480"
style="text-shadow: 1px 1px 2px #333;"
@sliding-start="onSlideStart"
@sliding-end="onSlideEnd"
>
<b-carousel-slide
caption="First slide"
text="Nulla vitae elit libero, a pharetra augue mollis interdum."
img-src="https://picsum.photos/1024/480/?image=52"
></b-carousel-slide>
<b-carousel-slide img-src="https://picsum.photos/1024/480/?image=54">
<h1>Hello world!</h1>
</b-carousel-slide>
<b-carousel-slide img-src="https://picsum.photos/1024/480/?image=58"></b-carousel-slide>
<b-carousel-slide>
<template #img>
<img
class="d-block img-fluid w-100"
width="1024"
height="480"
src="https://picsum.photos/1024/480/?image=55"
alt="image slot"
>
</template>
</b-carousel-slide>
<b-carousel-slide caption="Blank Image" img-blank img-alt="Blank image">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse eros felis, tincidunt
a tincidunt eget, convallis vel est. Ut pellentesque ut lacus vel interdum.
</p>
</b-carousel-slide>
</b-carousel>
<p class="mt-4">
Slide #: {{ slide }}<br>
Sliding: {{ sliding }}
</p>
</div>
</template>
<script>
export default {
data() {
return {
slide: 0,
sliding: null
}
},
methods: {
onSlideStart(slide) {
this.sliding = true
},
onSlideEnd(slide) {
this.sliding = false
}
}
}
</script>
ネストされたカルーセルはサポートされていませんのでご注意ください。
サイズ
カルーセルは、スライドのサイズを自動的に正規化しません。そのため、コンテンツを適切にサイズ調整するには、追加のユーティリティまたはカスタムスタイルを使用する必要がある場合があります。各スライドで画像を使用する場合は、すべての画像が同じ寸法(またはアスペクト比)であることを確認してください。
img-src
またはimg-blank
を<b-carousel-slide>
で使用する場合、img-width
およびimg-height
プロパティを<b-carousel>
で設定し、これらの値を各carousel-slide
画像に自動的に適用させることができます。
画像はまだレスポンシブであり、親コンテナの幅に合わせて自動的に拡大または縮小されることに注意してください。
内部的に、<b-carousel-slide>
は<b-img>
コンポーネントを使用して画像をレンダリングします。img-*
プロパティは、<b-img>
で使用可能な対応するプロパティにマップされます。
間隔
カルーセルは、デフォルトで5000
ms(5秒)の間隔を使用します。スライド間の間隔を変更するには、interval
プロパティを目的のミリ秒数に設定します。サポートされる最小のスライド間隔は1000ms(1秒)です。
ページの可視性APIがサポートされているブラウザでは、ウェブページがユーザーに表示されていない場合(ブラウザタブが非アクティブな場合、ブラウザウィンドウが最小化されている場合など)、カルーセルはスライドしません。ブラウザタブがアクティブになると、スライドが再開されます。
カルーセルの一時停止
カルーセルの自動スライドを一時停止するには、interval
プロパティを0
に設定します。一時停止したカルーセルを再開するには、interval
を目的のms数に戻します。
カルーセルが一時停止している場合でも、ユーザーはコントロール(有効になっている場合)またはタッチスワイプ(タッチ対応デバイスの場合、無効になっていない場合)を使用してスライドを切り替えることができます。
ユーザーがマウスカーソルをカルーセルに重ねると、自動的に一時停止し、マウスカーソルがカルーセルから離れると自動的に再開されます。この機能を無効にするには、<b-carousel>
でno-hover-pause
プロパティを設定します。
コントロールとインジケーター
controls
プロパティを設定して、前と次のコントロールボタンを有効にします。
indicators
プロパティを設定して、スライドインジケーターボタンを表示します。
インジケーターとコントロールの両方を同時に、または個別に設定できます。
カルーセルのスライドコンテンツ
b-carousel-slide
は、スライドにコンテンツを配置するためのいくつかのプロパティとスロットを提供します。
プロパティ
caption
スライドのメインタイトルとして使用するテキスト(carousel-caption
クラスを持つ内部要素内に配置) text
タイトルの下に配置されるテキスト(carousel-caption
クラスを持つ内部要素内に配置) img-src
スライドの背景に配置される画像のURL caption-html
caption
プロパティの代替プロパティで、HTML文字列をサポートします。 html
text
プロパティの代替プロパティで、HTML文字列をサポートします。
警告:ユーザーが提供したコンテンツを表示するためにcaption-html
とhtml
プロパティを使用する場合は注意してください。ユーザーが提供した文字列を事前にサニタイズしない場合、 XSS攻撃に対してアプリケーションが脆弱になる可能性があります。
名前付きスロット
default
carousel-caption
クラスを持つ内部要素内に配置されるコンテンツ。caption
およびtext
プロパティのコンテンツの後に表示されます。 img
スライドの背景に配置するコンテンツ。スロットの名前にもかかわらず、default
スロットまたはcaption
およびtext
プロパティを使用する代わりに、このスロットにほぼすべてのコンテンツを配置できます。
カルーセルのアニメーション
カルーセルは、デフォルトでスライドアニメーションを使用します。スライドアニメーションをクロスフェードアニメーションに変更するか、アニメーションを完全に無効にすることができます。
クロスフェードアニメーション
<b-carousel>
のfade
プロパティをtrue
に設定して、デフォルトのスライドアニメーションではなく、フェードトランジションを使用してスライドをアニメーション化します。
<div>
<b-carousel
id="carousel-fade"
style="text-shadow: 0px 0px 2px #000"
fade
indicators
img-width="1024"
img-height="480"
>
<b-carousel-slide
caption="First Slide"
img-src="https://picsum.photos/1024/480/?image=10"
></b-carousel-slide>
<b-carousel-slide
caption="Second Slide"
img-src="https://picsum.photos/1024/480/?image=12"
></b-carousel-slide>
<b-carousel-slide
caption="Third Slide"
img-src="https://picsum.photos/1024/480/?image=22"
></b-carousel-slide>
</b-carousel>
</div>
アニメーションの無効化
<b-carousel>
のno-animation
プロパティをtrue
に設定して、スライドアニメーションを無効にします。
<div>
<b-carousel
id="carousel-no-animation"
style="text-shadow: 0px 0px 2px #000"
no-animation
indicators
img-width="1024"
img-height="480"
>
<b-carousel-slide
caption="First Slide"
img-src="https://picsum.photos/1024/480/?image=10"
></b-carousel-slide>
<b-carousel-slide
caption="Second Slide"
img-src="https://picsum.photos/1024/480/?image=12"
></b-carousel-slide>
<b-carousel-slide
caption="Third Slide"
img-src="https://picsum.photos/1024/480/?image=22"
></b-carousel-slide>
<b-carousel-slide
caption="Fourth Slide"
img-src="https://picsum.photos/1024/480/?image=23"
></b-carousel-slide>
</b-carousel>
</div>
スライドの折り返し
通常、カルーセルがスライドリストの一方の端またはもう一方の端に達すると、スライドリストの反対の端に折り返して、循環を続けます。
カルーセルのスライドの折り返しを無効にするには、no-wrap
プロパティをtrueに設定します。
小型画面でのスライドテキストコンテンツの非表示
小型画面では、キャプションと見出しを非表示にする場合があります。<b-carousel-slide>
のcontent-visible-up
プロパティを使用して、それを行うことができます。このプロパティはブレークポイント名(つまり、sm
、md
、lg
、xl
、またはカスタムブレークポイント名(定義済みの場合))を受け入れ、ブレークポイントより小さい画面で、見出しとキャプションを非表示にします。
タッチスワイプサポート
タッチ対応デバイスでは、ユーザーはカルーセルを左右にスワイプしてスライドを切り替えることができます。タッチコントロールを無効にするには、no-touch
プロパティをtrue
に設定します。
v-model
サポート
v-model
(value
プロパティにバインドされます)を使用して、表示されているスライドをプログラムで制御します。スライドのインデックスは0
から始まることに注意してください。
プログラムによるスライド制御
<b-carousel>
インスタンスは、スライドを制御するためのいくつかの公開メソッドを提供します。
メソッド | 説明 |
setSlide(index) | index で指定されたスライドに移動します。 |
next() | 次のスライドに移動します。 |
prev() | 前のスライドに移動します。 |
pause() | スライドの循環を一時停止します。 |
start() | スライドの自動再生を開始します(プロパティinterval に値を設定する必要があります) |
これらのメソッドを呼び出すには、カルーセルインスタンスへの参照(this.$refs
経由)が必要です。
<template>
<b-carousel ref="myCarousel" .... >
</b-carousel>
</template>
<script>
export default {
methods: {
prev() {
this.$refs.myCarousel.prev()
},
next() {
this.$refs.myCarousel.next()
}
}
}
</script>
アクセシビリティ
カルーセルは、一般的にアクセシビリティ標準に完全に準拠していませんが、可能な限りアクセシビリティを向上させるよう努めています。
id
プロパティを介してドキュメント固有の値を提供することにより、<b-carousel>
はアクセシビリティ機能を有効にします。すべてのコンポーネントにIDを追加することを強くお勧めします。
すべてのカルーセルのコントロールとインジケーターには、ariaラベルがあります。これらは、さまざまなlabel-*
プロパティを設定することでカスタマイズできます。
注記:このコンポーネントのアニメーション効果は、prefers-reduced-motion
メディアクエリに依存します。詳細は、アクセシビリティドキュメントの低モーションに関するセクションを参照してください。