暗黙のネイティヴロールセマンティクスがアクセシビリティAPIに対応づけされない要素。類義語none
を参照のこと。
注
ARIA 1.1 none
ロールに関する注§
ARIA 1.1において、ワーキンググループは、単語"presentation"または"presentational"の意図された意味の周囲の著者の混乱のために、presentation
のロールに同義語としてnone
を導入した。多くの人はrole="presentation"
をaria-hidden="true"
と同義であると誤って考え、我々はrole="none"
がより明確に実際の意味を伝えると考える。
実装がrole="none"
に対して十分なサポートを含むまで、ウェブ制作者は、presentation
ロールだけでrole="presentation"
またはnone
ロールのフォールバックとして重複してrole="none presentation"
を使用することを勧める。
要素がページの外観を変更するために使用されるが、要素型によって暗黙的な、機能的な、インタラクティブな、または構造の関連性を一切持たない、またはWAI-ARIAをサポートしない古いブラウザーでアクセシビリティフォールバックを提供するために使用する場合が使用目的である。
ユースケースの例:
- コンテンツが完全にプレゼンテーションな(スペーサー画像、装飾的なグラフィック、または要素をクリアするような)要素。
- 完全な代替テキストが使用可能であり
aria-labelledby
と(必要な場合)aria-describedby
でマークアップされるimg
ロールをもつコンテナーにおける画像。
- CSSの追加のマークアップ"フック"として使用される要素。または
- レイアウトテーブルおよび/またはその関連する行、セル、その他のいずれか。
フォーカス可能でない、presentationのロールをもつ任意の要素に対して、ユーザーエージェントは、アクセシビリティAPIへ要素の暗黙のネイティヴセマンティクス(ロールとそのステートおよびプロパティ)を公開してはならない。しかし、ユーザーエージェントは、presentationの明示的または継承されたロールを持たないコンテンツまたは子孫要素を公開しなければならない。このように、presentation
ロールは与えられる要素に何のロールも持たないものとして扱われせる、またはアクセシビリティツリーから削除させるが、要素内に含まれているコンテンツにアクセシビリティツリーから削除させることはない。
たとえば、アクセシビリティAPIによれば、次のマークアップ要素は、同じロールセマンティクス(ロールなし)と同じコンテンツを持つように見えるだろう。
例8
<h1 role="presentation"> Sample Content </h1>
<span> Sample Content </span>
<span role="presentation"> Sample Content </span>
Sample Content
presentation
ロールは、要素に対するデフォルトのアクセシビリティAPIロールが存在することを意味する、暗黙のネイティヴセマンティクスを持つ要素で使用される。一部の要素は、追加の子孫要素が与えられた場合にのみ完結する。たとえば、HTMLにおいて、(grid
ロールとマッチする)table要素は、順番にth
またはtd
の子(gridcell
、columnheader
、rowheader
ロール)を要求する、tr
の子孫(row
ロール)を要求する。同様に、リストはリスト項目の子を必要とする。要素のセマンティクスを完全なものにする子孫要素は、必要とされる所有される要素としてWAI-ARIAに記載される。
presentation
の明示的または継承されるロールが、所有される要素を必要としているWAI-ARIAロールの暗黙のセマンティックをもつ要素に適用され、さらにpresentation
の明示的なロールを持つ要素である場合、ユーザーエージェントは、定義された明示的なロールを持たないすべての所有される要素にpresentationの継承されたロールを適用しなければならない。また、presentationの明示的または継承されたロールは、ホスト言語仕様によって定義されるような任意の必要とされる子を持つホスト言語要素に適用され、さらにpresentationの明示的なロールを持つ要素である場合、ユーザーエージェントは、定義された明示的なロールを持たない任意の必要とされる子にpresentationの継承されたロールを適用しなければならない。
HTMLにおいて、img
要素は、画像ファイルのタイプにかかわらず単一の実態として扱う。したがって、HTML img
のrole="presentation"
またはrole="none"
を使用することは、aria-hidden="true"
を使用することと同じである。画像コンテンツをアクセシブルにするために、著者は、object
またはiframe
要素を使用してオブジェクトを埋め込む、またはインラインSVGコードを使用して、画像コンテンツのアクセシビリティガイドラインに従うことができる。
presentationの明示的または継承されるロールをもちかつフォーカス可能でない任意の要素に対して、ユーザーエージェントは、その要素に対するロール固有のWAI-ARIAステートおよびプロパティを無視しなければならない。たとえばHTMLにおいて、presentation
のロールをもつul
またはol
要素は、ul
またはol
が対応するlist
ロールがlistitem
の必要とされる所有される要素を持つので、li
要素の暗黙のネイティヴセマンティクスを取り除かさせる。同様に、HTMLのtable
要素がWAI-ARIAロールに直接対応する暗黙のネイティヴセマンティックロールを持たないが、HTML仕様は要素がtable
要素の必要とされる構造的な子孫であることを示すため、そのthead
/tbody
/tfoot
/tr
/th
/td
子孫の暗黙のネイティヴセマンティクスもまた削除される。
注
WAI-ARIA必要とされる所有される要素に対応する要素の暗黙のネイティヴセマンティクスのみが削除される。この要素がまた適用されるpresentation
の明示的なロールを持たない限り、ネストした表やリストを含む、任意の他のコンテンツは、そのまま残る。
たとえば、アクセシビリティAPIによれば、次のマークアップ要素は、同じロールセマンティクス(ロールなし)と同じコンテンツを持つように見えるだろう。
例9
<ul role="presentation">
<li> Sample Content </li>
<li> More Sample Content </li>
</ul>
<foo>
<foo> Sample Content </foo>
<foo> More Sample Content </foo>
</foo>
注
この状況が適用可能である必要とされる子をもつ他のWAI-ARIAロールが存在する(たとえば、radiogroupsおよびlistboxes)が、テーブルおよびリストは、プレゼンテーションの継承を適用する可能性がある最も一般的な実世界のケースである。
presentation
の明示的または継承されるロールをもつ任意の要素に対して、ユーザーエージェントは、プレゼンテーション要素に対するすべてのホスト言語固有の分類要素に継承されるpresentation
のロールを適用しなければならない。たとえば、captionは単なるプレゼンテーションテーブルのラベルであるため、presentation
のロールをもつtable
要素は、caption
要素の暗黙のネイティヴセマンティクスを取り除かせる。
presentation
ロールを画像に適用する場合、著者は(HTMLのalt=""
を使用するなど)意味のある代替テキストを提供すべきでない。
次のコードサンプルにおいて、img
を含むものは、キャプションの段落によって適切に分類される。ロールおよび代替テキストが包含する要素によって提供されるため、この例においてimg
要素はpresentationとしてマークすることができる。
例10
<div role="img" aria-labelledby="caption">
<img src="example.png" role="presentation" alt="">
<p id="caption">A visible text caption labeling the image.</p>
</div>
次のコードサンプルにおいて、アンカー(HTMLのa
要素)はtreeitemとして動作しているので、リスト項目(HTMLのli
要素)は、リスト項目に対するユーザーエージェントの暗黙のネイティヴセマンティクスを上書きするために明示的なWAI-ARIA presentationロールが割り当てられる。
例11
<ul role="tree">
<li role="presentation">
<a role="treeitem" aria-expanded="true">An expanded tree node</a>
</li>
…
</ul>
プレゼンテーションロールの競合の解決§
プレゼンテーションロールの競合を解決するためのさまざまな方法がある。
適用されてもよい、ロールなしの暗黙的なプレゼンテーションロールを持つホスト言語要素は、アクセシビリティツリーで公開されてはならない。この例外により、ユーザーエージェントは、アクセシビリティAPIへグローバルなWAI-ARIAステートおよびプロパティを常に公開しなければならない。この場合、ユーザーエージェントは、presentation
ロールを無視し、要素の暗黙的なネイティヴセマンティクスに応じて要素を公開する。しかし、明示的な役割が適用される継承されたプレゼンテーションロールにある場合を除いて、ユーザーエージェントは、任意の非グローバル、ロール固有WAI-ARIAのステートおよびプロパティを無視しなければならない。
たとえば、aria-haspopup
はグローバル属性であり、常に適用される。aria-level
はグローバル属性ではなく、したがって、要素がプレゼンテーションステートではなかった場合にのみ適用される。
例12
<h1 role="presentation" aria-haspopup="true"> Sample Content </h1>
<h1 role="presentation" aria-level="2"> Sample Content </h1>
子孫または所有される要素の明示的なロールは、presentation
の継承されたロールを上書きし、所有する要素に明示的なロールをもつ他の要素として動作させる。公開する暗黙のロールの動作がアクセシビリティツリーに不正な形式をもたらす場合、期待される結果は未定義であり、ユーザーエージェントは、アクセシビリティツリーを修復するために内部の回復メカニズムに助けを求めてもよい。
presentationのロールをもつ要素がフォーカス可能である場合、またはそうでなければインタラクティブである場合、要素が理解可能と操作可能の両方であることを保証にするために、ユーザーエージェントは、ロールの正常な効果を無視しなければならず、かつ暗黙のネイティヴセマンティクスで要素を公開しなければならない。
ユーザーエージェントは、たとえ要素が明示的または継承されるpresentationのロールを持つとしても、グローバルなWAI-ARIAステートおよびプロパティをアクセシビリティAPIに常に公開しなければならない。この場合、ユーザーエージェントは、presentation
ロールを無視し、要素の暗黙的なネイティヴセマンティクスに応じて要素を公開する。しかし、明示的な役割が適用される継承されたプレゼンテーションロールにある場合を除いて、ユーザーエージェントは、任意の非グローバル、ロール固有WAI-ARIAのステートおよびプロパティを無視しなければならない。