Blazor Carousel (カルーセル) の概要
Ignite UI for Blazor カルーセルは、レスポンシブで軽量なコンポーネントであり、テキスト スライド、リンク、およびその他の html 要素を含む画像のコレクションを前後に移動するユーザーに、スライドショーのような Web エクスペリエンスを作成する最も柔軟な方法を提供します。
Blazor カルーセル コンポーネントを使用すると、アニメーション、スライド トランジション、およびカスタマイズを使用できるため、インターフェイスを簡単に微調整して Blazor カスタム カルーセルを構築できます。
Blazor Carousel の例
以下に示す Blazor カルーセルのデモは、画像のみを含むスライドを示しています。
使用方法
IgbCarousel
を使用する前に、次のように登録する必要があります:
// in Program.cs file
builder.Services.AddIgniteUIBlazor(typeof(IgbCarouselModule));
スタイルを IgbCarousel
コンポーネントに適用するには、追加の CSS ファイルをリンクする必要もあります。以下は、Blazor Web Assembly プロジェクトの wwwroot/index.html ファイルまたは Blazor Server プロジェクトの Pages/_Host.cshtml ファイルに配置する必要があります:
<link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
Ignite UI for Blazor の完全な概要については、作業の開始トピックを参照してください。
Ignite UI for Blazor カルーセルがインポートされたので、IgbCarousel
とそのボタンの基本構成を開始できます。
IgbCarousel
セレクターを使用してスライドをラップします。スライドに有効な HTML コンテンツ、その他のコンポーネントなども含めることができます。
<IgbCarousel>
<IgbCarouselSlide>
<img src="assets/images/carousel/ignite-ui-angular-indigo-design.png" />
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/carousel/slider-image-chart.png" />
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/carousel/ignite-ui-angular-charts.png" />
</IgbCarouselSlide>
</IgbCarousel>
スライドをデフォルトでアクティブにしたい場合は、Active
属性を使用します。
<IgbCarousel>
...
<IgbCarouselSlide>
...
</IgbCarouselSlide>
<IgbCarouselSlide Active="true">
...
</IgbCarouselSlide>
</IgbCarousel>
[!NOTE] アクティブなスライドが設定されていない場合は、最初のスライドがデフォルトで設定されます。最初のレンダリングまたは後続の更新時にアクティブなスライドが複数ある場合は、最後のスライドだけが考慮されます。
例
カルーセルの構成
デフォルトでは、IgbCarousel
の DisableLoop
プロパティは false に設定されています (ループは、Next 動作でナビゲートするときに最初のスライドが最後のスライドの後に来るか、Previous 動作を使用して最後のスライドが最初のスライドの後に来るときに起こります)。ループ動作を無効にするには、DisableLoop
プロパティの値を true に設定します。
<IgbCarousel DisableLoop="true">
...
</IgbCarousel>
各スライド インデックスを追跡するために、カルーセルには、デフォルトでカルーセルの end
に配置されるインジケーターがあります。この動作を変更するには、IndicatorsOrientation
プロパティを使用して、start
に割り当てる必要があります。
<IgbCarousel IndicatorsOrientation="@CarouselIndicatorsOrientation.Start">
...
</IgbCarousel>
デフォルトでは、IgbCarousel
にはナビゲーション ボタンとインジケーターが表示されます。インジケーターを非表示にするには HideIndicators
プロパティを使用し、ナビゲーション ボタンを非表示にするには HideNavigation
プロパティを使用します。
<IgbCarousel HideNavigation="true" HideIndicators="true">
...
</IgbCarousel>
IgbCarousel
は垂直モードをサポートしています。これを有効にするには、Vertical
プロパティを使用します。
<IgbCarousel Vertical="true">
...
</IgbCarousel>
カスタム インジケーター
Blazor カスタム カルーセル インジケーターを追加するには、IgbCarouselIndicator
を使用します:
<IgbCarousel>
<IgbCarouselIndicator>
<span>🤍</span>
<span slot="active">❤️</span>
</IgbCarouselIndicator>
<IgbCarouselIndicator>
<span>🤍</span>
<span slot="active">❤️</span>
</IgbCarouselIndicator>
<IgbCarouselSlide>
<img src="assets/images/card/media/the_red_ice_forest.jpg"/>
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/card/media/yosemite.jpg"/>
</IgbCarouselSlide>
</IgbCarousel>
Ignite UI for Blazor カルーセル コンポーネントを使用すると、ユーザーは単一のインジケーターのアクティブ状態と非アクティブ状態に異なる要素を使用できます。インジケーターを宣言するときは、たとえ同じであっても、スロットごとに 2 つの要素 (空とアクティブ) を提供することが必須です。
カスタム ナビゲーション ボタン
これを実現するには、previous-button
スロットと next-button
スロットを使用します。
<IgbCarousel>
<IgbIcon slot="previous-button" IconName="previous" Collection="material"></IgbIcon>
<IgbIcon slot="next-button" IconName="next" Collection="material"></IgbIcon>
...
</IgbCarousel>
他のコンポーネントを含むスライド
このカルーセルには、フォームと画像を含むスライドが含まれます。
<IgbCarousel>
<IgbCarouselSlide>
<div>
<img src="assets/images/svg/carousel/SignUp.svg">
<form>
<IgbInput DisplayType="@InputType.Text" Placeholder="Username">
<IgbIcon slot="prefix" IconName="person" Collection="material" @ref="iconRef"></IgbIcon>
</IgbInput>
<IgbInput DisplayType="@InputType.Password" Placeholder="Password">
<IgbIcon slot="prefix" IconName="password" Collection="material"></IgbIcon>
</IgbInput>
<IgbButton DisplayType="@ButtonBaseType.Reset">Sign In</IgbButton>
</form>
</div>
</IgbCarouselSlide>
<IgbCarouselSlide>
<div>
<img src="assets/images/svg/carousel/Route.svg">
<form>
<IgbInput DisplayType="@InputType.Text" Placeholder="Search">
<IgbIcon slot="prefix" IconName="search" Collection="material"></IgbIcon>
</IgbInput>
<IgbButton DisplayType="@ButtonBaseType.Reset">Search</IgbButton>
</form>
</div>
</IgbCarouselSlide>
</IgbCarousel>
サンプル
アニメーション
アニメーション化されたスライド遷移により、エンドユーザーはカルーセルを操作しているときに高いエクスペリエンスを得ることができます。
デフォルトでカルーセルは slide
アニメーションを使用するように設定されていますが、代替アニメーションとして fade
もサポートしています。
アニメーションを変更するには、AnimationType
プロパティを使用します。
<IgbCarousel AnimationType="@CarouselAnimationType.Fade">
...
</IgbCarousel>
AnimationType
プロパティに none
を設定すると、アニメーションが無効になります。
サンプル
以下のデモは、カルーセルがサポートするさまざまなタイプのアニメーションを示しています。
ナビゲーション
トランジションとナビゲーションは、最も重要なカルーセル機能です。
カルーセル内のナビゲーションは、モバイル デバイスでのナビゲーション ボタン、キーボード ナビゲーション、パン操作を通じてユーザーが処理できます。
タッチ ジェスチャー
デフォルトでカルーセルはあらゆるタッチ対応デバイスに使用できます。
カルーセル アニメーションはタッチ デバイスで完全にサポートされているため、プラットホームに合わせてプログレッシブ Web アプリケーション (PWA) を構築するための完璧なツールです。
キーボード ナビゲーション
- ナビゲーション ボタン
Space
/Enter
キー - 次のスライド/前のスライドに移動します。
- インジケーター
左矢印
キー - 前のスライド (右から左モードでは次) に移動します。右矢印
キー - 次のスライド (右から左モードでは前へ) に移動します。Home
キー - 最初のスライド (右から左モードでは最後) に移動します。End
キー - 最後のスライド (右から左モードでは最初) に移動します。
自動的なトランジション
IgbCarousel
は、ユーザーの操作なしでスライドを自動的に変更するように簡単に構成できます。この方法では、トランジション間隔 を Interval
プロパティに設定するだけで、スライドショーを作成できます。このプロパティは、スライド トランジション間の間隔 (ミリ秒)を決定します。
[!NOTE] カルーセル コンテンツの上にマウスを移動するか、キーボード フォーカスをいずれかのカルーセル コンテンツに移動すると、自動トランジションが一時停止されます。マウスがカルーセルから離れるか、キーボード フォーカスがカルーセル コンテンツから移動すると、自動トランジションが再開されます。 この動作は、
DisablePauseOnInteraction
プロパティを true に設定することでこれを防ぐことができます。
<IgbCarousel Interval="2000" DisablePauseOnInteraction="true">
...
</IgbCarousel>
高度な例
ループを有効にして完全に自動化されたカルーセルを作成しましょう。各スライドのサムネイル表示になるようにインジケーターを設定します。
これを実現するには、カルーセルを以下のように構成する必要があります。
DisablePauseOnInteraction
プロパティを有効にします。HideNavigation
プロパティを有効にします。Vertical
プロパティを有効にします。- トランジション
Interval
を追加します。 - 各スライドにカスタム
IgbCarouselIndicator
を追加します。
カルーセル テンプレートは以下のようになります。
<IgbCarousel DisablePauseOnInteraction="true"
HideNavigation="true"
Interval="2000"
Vertical="true"
AnimationType="@CarouselAnimationType.Fade">
<IgbCarouselIndicator>
<img class="blurred" src="assets/images/carousel/WonderfulCoastThumb.png" width="50" height="60" />
<img slot="active" src="assets/images/carousel/WonderfulCoastThumb.png" width="50" height="60" />
</IgbCarouselIndicator>
<IgbCarouselIndicator>
<img class="blurred" src="assets/images/carousel/CulturalDipThumb.png" width="50" height="60" />
<img slot="active" src="assets/images/carousel/CulturalDipThumb.png" width="50" height="60" />
</IgbCarouselIndicator>
<IgbCarouselIndicator>
<img class="blurred" src="assets/images/carousel/GoldenBeachesThumb.png" width="50" height="60" />
<img slot="active" src="assets/images/carousel/GoldenBeachesThumb.png" width="50" height="60" />
</IgbCarouselIndicator>
<IgbCarouselIndicator>
<img class="blurred" src="assets/images/carousel/IslandOfHistoryThumb.png" width="50" height="60" />
<img slot="active" src="assets/images/carousel/IslandOfHistoryThumb.png" width="50" height="60" />
</IgbCarouselIndicator>
<IgbCarouselIndicator>
<img class="blurred" src="assets/images/carousel/AmazingBridgeThumb.png" width="50" height="60" />
<img slot="active" src="assets/images/carousel/AmazingBridgeThumb.png" width="50" height="60" />
</IgbCarouselIndicator>
<IgbCarouselSlide>
<img src="assets/images/carousel/WonderfulCoast.png" />
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/carousel/CulturalDip.png" />
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/carousel/GoldenBeaches.png" />
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/carousel/IslandOfHistory.png" />
</IgbCarouselSlide>
<IgbCarouselSlide>
<img src="assets/images/carousel/AmazingBridge.png" />
</IgbCarouselSlide>
</IgbCarousel>
これらの構成の結果は以下のようになります。
ユーザー補助
WAI-ARIA の役割、状態、およびプロパティ
- カルーセルの基本要素の役割は
region
です。これは、ユーザーが簡単にナビゲートできるようにしたい特定の目的に関連するコンテンツを含むセクションです。 - カルーセル インジケーターの役割は
tab
です。これは、ユーザーに描画されるタブ コンテンツを選択するためのメカニズムを提供するグループ化ラベルです。 - タブのセット (カルーセル インジケーター) 役割のコンテナーとして機能する要素は、
tablist
に設定されます。 - 各スライド要素には、
tabpanel
の役割が設定されています。
ARIA のサポート
Carousel コンポーネント
- 属性
- aria-roledescription を 「carousel」 に設定します。
- aria-live - スクリーン リーダーがライブ リージョンの更新を処理する優先度を設定するために使用されます。可能な設定は off おとび polite です。デフォルト設定は polite であり、スライド セットのコンテナーとして機能する要素に設定されています。
Interval
オプションが設定され、カルーセルが再生状態の場合、aria-live 属性は off に設定されます。 - aria-label (ナビゲーション ボタン) - 「前のスライド」/「次のスライド」。
Slide コンポーネント
- 属性
- id - 「igc-carousel-slide-${incremented_number}」 のパターンに従います。
- aria-roledescription を 「slide」 に設定します。
- aria-label は 「${index + 1} of ${total}」 のパターンに従います。
Indicator コンポーネント
- 属性
- aria-label は 「Slide ${index + 1}」 のパターンに従います。
- aria-selected - アクティブなスライドに基づいて true または false に設定します。