From d7ecc656317af08e7985afe768feb45708a76989 Mon Sep 17 00:00:00 2001 From: Wind1808 <42607060+Wind1808@users.noreply.github.com> Date: Mon, 31 May 2021 13:36:59 +0900 Subject: ARIA: listbox ロールの更新 (#1001) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aria/roles/listbox_role/index.html | 138 +++++++++++---------- 1 file changed, 74 insertions(+), 64 deletions(-) (limited to 'files/ja/web/accessibility') diff --git a/files/ja/web/accessibility/aria/roles/listbox_role/index.html b/files/ja/web/accessibility/aria/roles/listbox_role/index.html index 58106a9e75..b42e89cd66 100644 --- a/files/ja/web/accessibility/aria/roles/listbox_role/index.html +++ b/files/ja/web/accessibility/aria/roles/listbox_role/index.html @@ -7,75 +7,79 @@ tags: - Accessibility translation_of: Web/Accessibility/ARIA/Roles/listbox_role --- -

\{{ariaref}}

- - - - - -

listbox ロールは、ユーザーが静的な1つ以上の項目を選択するリストに使用され、HTML の <select> 要素とは異なり、画像を含むことがあります。

+

リストボックス (listbox) ロールは、HTML の <select> 要素とは異なり、画像を含むことができる、1つまたは複数の静的な項目をユーザーが選択できるリストに使用します。

説明

-

listbox ロールは、HTML の {{htmlelement("select")}} 要素と同様に、ユーザーが1つまたは複数の静的項目を選択できるリストを作成する要素を識別するために使用されます。 <select> とは異なり、リストボックス(listbox)は画像を含むことができます。 リストボックスのそれぞれの子は、option ロールを持つべきです。

+

リストボックス (listbox) ロールは、HTML の選択 ({{htmlelement("select")}}) 要素と同様に、ユーザーが1つまたは複数の静的な項目を選択できるリストを作成する要素を識別するために使用します。 <select> とは異なり、リストボックスは画像を含むことができます。 リストボックスのそれぞれの子は、オプション (option) ロールを持つべきです。

-

HTML の <select> 要素または、1項目のみを選択する場合はラジオボタンのグループ、複数項目を選択する場合はチェックボックスのグループを使用することを強くお勧めします。 なぜなら、全ての子孫のフォーカスを管理するためのキーボードのインタラクティビティがたくさんあり、ネイティブな HTML 要素がこの機能を無料で提供するためです。

+

HTML の選択要素や、1項目しか選択できない場合はラジオボタンのグループ、複数項目を選択できる場合はチェックボックスのグループを使用することを強くお勧めします。 なぜなら、全ての子孫に対するフォーカスを管理するためには、キーボードでのインタラクティビティがたくさん必要であり、ネイティブの HTML 要素はこの機能を無料で提供してくれるからです。

-

listbox ロールを持つ要素は、暗黙の aria-orientation の値に vertical を持ちます。

+

リストボックス (listbox) ロールを持つ要素は、暗黙的な aria-orientation の値として垂直 (vertical) を持ちます。

-

リストにタブで移動した場合、他に何も選択されていない場合はリスト内の最初の項目が選択されます。 上/下矢印はリストをナビゲートし、Shift + 上/下矢印を押すと選択範囲が移動して拡張されます。 1つ以上の文字を入力すると、リスト項目をナビゲートします(同じ文字はその文字から始まる各項目に移動し、異なる文字はその文字列全体で始まる最初の項目に移動します)。 現在の項目に関連するコンテキストメニューがある場合、Shift + F10 でそのメニューが起動します。 リスト項目がチェック可能である場合、スペースを使用してチェックボックスをトグルできます。 選択可能なリスト項目の場合、スペースは選択をトグルし、Shift + スペースを使用して連続項目を選択し、Ctrl + 矢印で選択せず​​に移動し、Ctrl + スペースを使用して不連続項目を選択できます。 全ての項目を選択するには、チェックボックス、リンクまたは他の方法を使用することをお勧めします。 Ctrl + A は、このためのショートカットキーとして使用できます。

+

リストに Tab で移動すると、他に何も選択されていない場合はリストの最初の項目が選択されます。 上/下矢印でリストをナビゲートし、Shift + 上/下矢印を押すと選択範囲が移動して拡張されます。 1文字以上をタイプ入力すると、リスト項目をナビゲートします (同じ文字はその文字から始まる各項目に移動し、異なる文字はその文字列全体で始まる最初の項目に移動します) 。 現在の項目に関連付けられたコンテキストメニューがある場合、Shift + F10 でそのメニューが起動します。 リスト項目がチェック可能である場合、スペースを使用してチェックボックス (checkbox) をトグルできます。 選択可能なリスト項目の場合、スペースを使用して選択をトグルし、Shift + スペースを使用して連続する項目を選択し、Ctrl + 矢印を使用して選択せずに移動し、Ctrl + スペースを使用して連続しない項目を選択できます。 全ての項目を選択するには、チェックボックス、リンクまたは他の方法を使用することをお勧めします。 Ctrl + A は、このためのショートカットキーとして使用できます。 (訳注: 推奨モデルと説明の無い代替モデルの操作方法が混じっているし、それ以外にもキーボードインタラクションに無い説明や異なった説明もあります。)

-

listbox ロールが要素に追加されるか、そのような要素が可視になると、スクリーンリーダーは、フォーカスを得たときにリストボックスのラベルとロールをアナウンスします。 オプションや項目がリスト内でフォーカスされている場合は、次にそれがアナウンスされ、その後、スクリーンリーダーがサポートしている場合は、リストでの項目の位置が示されます。 リスト内でフォーカスが移動すると、スクリーンリーダーは関連する項目をアナウンスします。

+

リストボックスロールが要素に追加されるか、そのような要素が可視になると、スクリーンリーダーは、リストボックスがフォーカスを得たときにリストボックスのラベルとロールをアナウンスします。 オプションや項目がリスト内でフォーカスされると、次にそれがアナウンスされ、スクリーンリーダーがサポートしていれば、続いてリストでの項目の位置が示されます。 リスト内でフォーカスが移動すると、スクリーンリーダーは関連する項目をアナウンスします。

関連する ARIA のロール、ステート、プロパティ

関連するロール

-
option
-
1つ以上のネストされたオプションが必要です。 選択された全てのオプションは、aria-selectedtrue に設定されています。 選択されていない全てのオプションは、aria-selectedfalse に設定されています。 オプションを選択できない場合は、aria-selected を省略します。
+
option
+
1つ以上のネストされたオプションが必要です。 選択された全てのオプションでは、aria-selectedtrue に設定されています。 選択されていない全てのオプションでは、aria-selected が (訳注: 省略されるか) false に設定されています。 オプションが選択可能でない場合は、aria-selected を省略します (訳注: オプションでは、aria-selected のデフォルトは、false であり、変更できないことを示すなら、aria-disabled や aria-readonly があります) 。
list
-
listitem 要素を含むセクション。
+
リスト項目 (listitem) 要素を含むセクション。

ステートとプロパティ

-
aria-multiselectable
-
ユーザーが複数のオプションを選択できるようにするには、これを含めて true を設定します。 true に設定するならば、全てのオプションに aria-selected 属性を含めるべきです。 false または省略すると、現在選択されているオプションのみが選択され、いずれかのオプションが選択されている場合は、aria-selected 属性が必要で、true に設定する必要があります。
aria-activedescendant
-
そのオプションの aria-selected の値が truefalse を持っているかどうかに関わらず、最も最近にオプションと対話したことを意味する、現在アクティブなオプションの id を値として取ります。 複数選択であっても、1つの id の値をとります。
+
リストボックス内で現在アクティブな要素の id 文字列を保持します。 それがオプション要素である場合、そのオプションの aria-selected の値が true であるかどうかに関係なく、それは最後にインタラクトされたオプションの id になります。 複数選択可能なリストボックス内であっても、1つの id の値のみを取ります。 id がリストボックスの DOM 子孫を参照していない場合、その idaria-owns 属性の IDs の中に含まれている必要があります。
+
aria-owns
+
これは、リストボックスの DOM 子要素ではない要素 IDs のスペース区切りのリストです。 ここにリストされている IDs は、他の要素の aria-owns 属性にもリストできません。
+
aria-multiselectable
+
ユーザーが複数のオプションを選択できる場合は、これを含めて true に設定します。 true に設定されている場合、選択可能な全てのオプションには、aria-selected 属性が含まれ、true または false に設定されているべきです。 選択可能でないオプションは、aria-selected 属性を持つべきではありません
+
false または省略されている場合、いずれかのオプションが選択されているならば、現在選択されているオプションのみが aria-selected 属性を必要とし、true に設定されている必要があります (訳注: 仕様では、単一選択コンテナーに関する説明が複数選択コンテナーに比べて具体的ではなく曖昧なので、aria-selected を使わない「選択がフォーカスに従う」単一選択コンテナーと aria-selected を使う「選択がフォーカスに従わない」単一選択コンテナーが混ざっているようです) 。
aria-required
-
選択が必要であることを示します。
+
空でない文字列値を持つオプションを選択する必要があることを示す論理属性。
aria-readonly
-
リストボックスは編集可能ではありません。 ユーザーはオプションの選択や非選択を変更することはできませんが、それ以外の操作は可能です。
+
ユーザーは、オプションが選択されているかいないかを変更することはできませんが、リストボックスはそれ以外の操作が可能です。
+
aria-label
+
リストボックスを識別する、人間が読むことができる文字列値。 可視のラベルがある場合は、代わりに aria-labelledby を使用してそのラベルを参照するべきです。
+
aria-labelledby
+
リストボックスを識別する、要素 IDs のスペースで区切られたリストで、1つ以上の可視の要素を識別します。 可視のラベルがない場合は、代わりに aria-label を使用してラベルを含めるべきです。 (注: 2つの L が付いた「labelled」は、アクセシビリティ API の規約に基づく正しいスペルです。)
+
aria-roledescription
+
リストボックスのロールをより明確に識別する、人間が読むことができる文字列値。 スクリーンリーダーは、ラベル (ある場合) を読んだ後に、「リストボックス」と言う代わりに、この値をユーザーに読み上げることがよくあります。
+

(詳細および ARIA のステートとプロパティの完全なリストについては、ARIA の listbox (role) の文書を参照してください。)

+

キーボードインタラクション

@@ -102,31 +106,31 @@ translation_of: Web/Accessibility/ARIA/Roles/listbox_role

ユーザーがオプションを選択すると、以下が起こる必要があります。

    -
  1. 前に選択したオプションを非選択にし、aria-selectedfalse に設定するか、属性を完全に削除して、新しく選択されなくなったオプションの外観を選択されていないように変更する。
  2. -
  3. 新しく選択したオプションを選択し、オプションで aria-selected="true" と設定し、新しく選択されたオプションの外観を選択されているように変更する。
  4. -
  5. リストボックスの aria-activedescendant の値を、新しく選択したオプションの id に更新する。
  6. -
  7. オプションのぼかし、フォーカス、選択状態を視覚的に処理する。
  8. +
  9. 前に選択したオプションの選択を解除し、aria-selectedfalse に設定するか、属性を完全に削除して、新しく選択を解除したオプションの外観を選択されていないように変更します。
  10. +
  11. 新しく選択したオプションを選択し、オプションに aria-selected="true" を設定し、新しく選択したオプションの外観を選択されているように変更します。
  12. +
  13. リストボックスの aria-activedescendant の値を、新しく選択したオプションの id に更新します。
  14. +
  15. オプションのブラー (blur) 、フォーカス、選択状態を視覚的に処理します。

複数選択リストボックスでオプションの状態をトグルする

-

ユーザーがオプションをクリックするか、オプションにフォーカスを当てたときにスペースを押すか、その他でオプションの状態をトグルすると、以下が起こる必要があります。

+

ユーザーがオプションをクリックしたり、オプションにフォーカスしているときにスペースを押すなどして、オプションの状態をトグルすると、以下が起こる必要があります。

    -
  1. 現在選択されているオプションの aria-selected ステート(状態)をトグルし、選択されている aria-selected の状態を false なら true に、true なら false に変更する。
  2. -
  3. 選択状態を反映するようにオプションの外観を変更する。
  4. -
  5. リストボックスの aria-activedescendant の値を、オプションが非選択へトグルされている場合でも、ユーザーが直前に対話したオプションの id に更新します。
  6. +
  7. 現在フォーカスされているオプションの aria-selected ステート (状態) をトグルし、aria-selected の状態を false なら true に、true なら false に変更します。
  8. +
  9. 選択状態を反映するようにオプションの外観を変更します。
  10. +
  11. オプションを選択の解除へトグルしている場合でも、リストボックスの aria-activedescendant の値を、ユーザーが直前にインタラクトしたオプションの id に更新します。
-

 ARIA の最初のルールは、要素を再定義し、ARIA のロール、ステート、プロパティを追加してアクセス可能にするのではなく、すでに組み込まれている意味論と挙動を持つネイティブな機能を使用できることです。 <option> 要素を子孫に持つ <select> 要素は、必要な全てのインタラクションをネイティブに処理します。

+

ARIA の使用の第一のルールは、要素を転用して ARIA のロール、ステート、プロパティを追加することでアクセス可能にするのではなく、必要としている意味論と振る舞いがすでに組み込まれているネイティブな機能を使用できることです。 <option> 要素を子孫に持つ <select> 要素は、必要な全てのインタラクションをネイティブに処理します。

例 1: aria-activedescendant を使用する単一選択リストボックス

-

以下のスニペットは、listbox ロールが HTML ソースコードに直接どのように追加されるかを示しています。

+

以下のスニペットは、リストボックスロールが HTML ソースコードに直接どのように追加されるかを示しています。

<p id="listbox1label" role="label">色を選択:</p>
 <div role="listbox" tabindex="0" id="listbox1" aria-labelledby="listbox1label"
@@ -158,19 +162,19 @@ translation_of: Web/Accessibility/ARIA/Roles/listbox_role
 

より多くの例

ベストプラクティス

仕様

@@ -199,13 +203,19 @@ translation_of: Web/Accessibility/ARIA/Roles/listbox_role

関連情報

+ + -- cgit v1.2.3-54-g00ecf