スライドコントロールのボタンを持つ自動回転画像カルーセルの例

この例について

以下のカルーセル パターンの実装例は、ページの読み込み時に自動的に回転を開始するカルーセルのアクセシビリティに不可欠なパターンの特徴を示しています。 例えば、利用者がカルーセル内にフォーカスを移動するか、カルーセルのコンテンツの上にマウスをホバーすると回転が停止し、利用者は前のスライドと次のスライドのボタンで表示するスライドを手動で制御できます。 例の後に続くアクセシビリティの特徴のセクションでは、これらの特徴を詳しく説明しています。

類似の例には以下があります:

例のオプション

アクセシビリティ機能

自動スライド回転の制御

利用者はスライドの回転を停止及び開始することができます。これは、障害を持つ様々な人々にとって、カルーセルのアクセシビリティの不可欠な側面です。 ロービジョンや、視覚処理や読解に影響を及ぼす認知障害のある人にとって、スライドの回転を制御できることは、スライドの内容を探索するのに十分な時間を確保できることになり、利益を得られます。 同様に、スクリーンリーダーの利用者は自動的な回転を知覚できないため、ページを読むことが混乱しやすく、方向感を失わせることがあります。 例えば、スライドが自動的に回転しているとき、スクリーンリーダーの利用者はスライド 1 の要素を読んで、次の要素を読むためのスクリーンリーダーのコマンドを実行するかもしれませんが、スライド 1 の次の要素を聞く代わりに、完全に新しいコンテキストからの要素であるスライド 2 の要素を聞くことになり得ます。

この例には、利用者がスライドの回転を制御するための以下の機能が含まれています:

テキストと回転制御の色のコントラスト

このカルーセルのビューでは、コントロールとキャプションが画像内に表示されている場合、背景画像によってコントロールとテキストの色のコントラストが不十分になる可能性があります。 しかし、このビューには、この潜在的な問題を防ぐための以下の機能が含まれており、WCAG 2.1 の色のコントラスト要件を満たしています:

画像内にコントロールとテキストを表示することによって引き起こされる色のコントラストの問題を回避する一つの方法は、コントロールを画像の外に配置することです。 コントロールとテキストを固定背景に表示することで、色のコントラストを制御するのが簡単になります。 一つのビューオプションは、この技術の例を提供しています。

スライドの変更のスクリーンリーダーの読み上げ

自動回転がオフになっている場合、カルーセルのスライドコンテンツはライブリージョンに含まれています。 これにより、スクリーンリーダーの利用者がカルーセルのスライドをスキャンするのが簡単になります。 スクリーンリーダーの利用者が次又は前のスライドボタンを押下すると、新しいスライドのコンテンツが読み上げられ、コンテンツを操作するかどうかを判断するための即時のフィードバックが与えられます。 非常に重要なことに、自動回転がオンになっている場合、ライブリージョンは無効になっています。 そうでなければ、継続的に変更されるコンテンツの読み上げが利用者が読んでいる他のものを毎回中断するため、ページが使用できなくなります。

キーボードサポート

回転制御ボタン

キー 機能
Tab
  • カルーセル内のインタラクティブな要素を通してフォーカスを移動します。
  • 回転制御、前のスライド、次のスライドのボタンは、Tab の順序でスライドの内容よりも先に来ます。
Enter 又は Space カルーセル内のスライドの自動回転を切り替えます。

次及び前のスライドボタン

キー 機能
Enter
Space
カルーセル内の次又は前のスライドを表示します。

ロール、プロパティ、ステート、及び tabindex 属性

ロール 属性 要素 使用法
region section
  • アクセス可能な名前を持つ任意の section 要素には region ロールが暗示されます。
  • カルーセルとそのコントロールをランドマーク領域として明示します。
aria-roledescription="カルーセル" section
  • 要素を「region」ではなく「カルーセル」として識別するように支援技術に知らせます。
  • ランドマーク領域への移動のような機能には影響せず、支援技術がロールをどのようにレンダリングするかに影響します。
  • 注記: aria-roledescriptionの値はページの言語を使用して明示され、著者によってローカライズされる必要があります。
aria-label="ハイライトされたテレビ番組" section カルーセル領域の内容を説明するラベルを提供します。
aria-live="off" div.carousel-items
  • すべてのスライドを含むdiv要素に適用されます。
  • コンテナ要素を「off」状態のライブ領域として特定し、支援技術の利用者は領域の変更について通知されません。
  • カルーセルが自動的に回転しているとき、ライブ領域はオフになります。
aria-live="polite" div.carousel-items
  • すべてのスライドを含むdiv要素に適用されます。
  • コンテナ要素を「polite」状態のライブ領域として特定し、支援技術の利用者は次の利用可能な機会に領域の変更について通知されます。
  • これにより、次のスライドボタンと前のスライドボタンがアクティブになったときにスクリーンリーダーが自動的にスライドの内容を読み上げます。
group div.carousel-item
  • 単一のスライドの内容を含む各要素に適用されます。
  • 支援技術の利用者がスライドの境界を知覚できるようにします。
aria-roledescription="スライド" div.carousel-item
  • 要素を「group」ではなく「スライド」として識別するように支援技術に通知します。
  • 支援技術がロールをレンダリングする方法に影響を与えますが、group要素に関連する支援技術の機能を削除することはありません。
  • 注記: aria-roledescriptionの値はページの言語を使用して明示され、著者によってローカライズされる必要があります。
aria-label="N of 6" div.carousel-item
  • 6 つのスライドのうちどれが表示されているかを利用者に理解させるための独自のラベルを各スライドに提供します。
  • 注記: 通常、アクセシブルな名前にセット位置とサイズ情報を含めることは適切ではありません。 この実装では例外的に役立ちます。なぜなら、group 要素は aria-setsize 又は aria-posinset をサポートしていないからです。
aria-label="LABEL_STRING" button 自動回転の一時停止ボタン及び次/前のスライドボタンのアクセス可能な名前を明示します。
aria-controls="IDREF" button
  • ボタンが制御するページ上のコンテンツを特定します。
  • すべてのスライドを含む div を参照します。

JavaScript 及び CSS のソースコード

HTML ソースコード