要素が持つネイティブの暗黙的ロールセマンティクスをアクセシビリティ
APIへマッピングしません。同義語についてはpresentationを参照。
注
ARIA 1.1での
noneロールに関する注記。
ARIA 1.1において、ワーキンググループは、"presentation"や"presentational"の意図する意味に関して混乱があったため、noneをpresentationロールの同義語として導入しました。多くの人がrole="presentation"をaria-hidden="true"の同義と誤解しており、role="none"は実際の意図をより明確に伝えます。
このロールの目的は、要素がページの見た目を変更するために使われていても、その要素型から暗黙的に伴う機能的・インタラクティブまたは構造的な意味合いがない場合や、WAI-ARIA非対応の古いブラウザでアクセシブルなフォールバックを提供したい場合などに利用します。
利用例:
none/presentationロールかつフォーカス可能でない要素については、ユーザーエージェントは暗黙的ネイティブセマンティクス(ロール・状態・プロパティ)をAPIへマッピングしてはなりません。一方、その要素内にnone/presentationでない明示または継承ロールを持つ内容・子孫は、必ずエクスポーズされる必要があります。したがって、none/presentationロールは要素自体を無効またはアクセシビリティツリーから除外しますが、内容自体は除外しません。
たとえば、以下の二つのマークアップは、アクセシビリティ用APIに同等に公開されます。
<h1 role="none"> Sample Content <a href="...">let's go!</a> </h1>
<span> Sample Content <a href="...">let's go!</a> </span>
HTMLにおいて<img>要素は、画像ファイルの種類に関わらず単一のエンティティとして扱われます。したがって、HTMLのimgにrole="none"やrole="presentation"を指定すると、aria-hidden="true"と同等です。画像内容をアクセシブルにしたい場合は、<object>や<iframe>要素に埋め込むか、インラインSVGコードを使い、画像内容のアクセシビリティガイドラインに従ってください。
画像にnone/presentationロールを付与した場合、有意なテキスト代替(例: HTMLではalt=""を推奨)の提供は避けるべきです。
下記のコード例では、親imgは、キャプションの段落で適切にラベル付けされています。この場合、img要素にはnoneやpresentationを指定できます(ロールとテキスト代替はコンテナ要素により満たされているため)。
<div role="img" aria-labelledby="caption">
<img src="example.png" role="none" alt="">
<p id="caption">A visible text caption labeling the image.</p>
</div>
次の例では、a(HTML
a要素)がtreeitemとして機能しているため、リスト項目(HTML
li要素)に、ユーザーエージェントの暗黙的なlistitemネイティブセマンティクスをオーバーライドするため、明示的にWAI-ARIAロールのnone/presentationが指定されています。
<ul role="tree">
<li role="none">
<a role="treeitem" aria-expanded="true">An expanded tree node</a>
</li>
…
</ul>
none/presentationロールは、暗黙のネイティブセマンティクス(デフォルトのアクセシビリティAPIロールを持つ要素)に使用します。一部の要素は追加の子孫要素が存在して初めて完全になります。たとえば、HTMLではtable要素(tableロールに該当)にはtr子孫(rowロールの暗黙ロール)が必要であり、行にはthやtd子が(columnheader・rowheader・cellロール)が必須です。同様にリストにもリスト項目が必須です。こうした意味を完全にする子孫要素は、WAI-ARIAでは許可されるアクセシビリティ子ロールで説明されます。
none/presentationの明示または継承ロールを、許可されるアクセシビリティ子ロールを持つWAI-ARIAロールを暗黙で持つ要素に適用した場合、明示的にnone/presentationを持つ要素だけでなく、明示ロールがないaccessibility
descendantにも、ユーザーエージェントは継承role="none"を適用しなければなりません。同様に、ホスト言語の仕様で特定の子だけを許容している場合、その子に明示ロールがなければnone/presentationを継承させます。
none/presentation(明示または継承)かつフォーカス不可な要素については、ユーザーエージェントはその要素のロール特有のWAI-ARIA状態やプロパティを無視しなければなりません。例えば、HTMLでrole="none"を持つulやolは、li子要素の暗黙ネイティブセマンティクス(listitemロール)も除外されます。表(table)も同様に、thead/tbody/tfoot/tr/th/td子孫の暗黙セマンティクスも除外されます。
注
WAI-ARIAの許可されるアクセシビリティ子ロールに該当しない要素の暗黙セマンティクスは除外されません。入れ子のtableやlistもまた、明示的にnone/presentationを指定しない限り内容はそのままです。
たとえば、以下のマークアップは、アクセシビリティAPI上、ほぼ同じ(genericまたはnoneロール)かつ同じ内容で公開されます。
<ul role="none">
<li> Sample Content </li>
<li> More Sample Content </li>
</ul>
<foo>
<foo> Sample Content </foo>
<foo> More Sample Content </foo>
</foo>
注
他にもWAI-ARIAで特定の子要素が許可されているロール(フィードやリストボックス等)で、この継承状況が適用される場合がありますが、現実的によくあるのはtableやlistです。
none/presentation(明示または継承)を持つ要素に対し、ユーザーエージェントは、プレゼンテーショナルな要素のホスト言語のラベリング要素にも継承role="none"を適用しなければなりません。例として、role="none"のtableではcaption(テーブルにラベルとして機能)もネイティブセマンティクスが除外されます。
編集者注
none/presentationロールの競合解決については、競合解決に移動しました。詳細は著者エラーの処理を参照してください