web-dev-qa-db-ja.com

XHTMLロール属性とは何ですか?あなたはそれを何に使っているの?

私はこれについて W3Cのページ を読みましたが、それでもあいまいです。 role属性の目的はコードを明確にすることですか?または、一部のブラウザまたはスパイダーによって解釈されますか?

一部のJavaScriptライブラリを使用してDOMセレクターとして使用できますか(id属性は一意である必要があるため、ページ上の複数のリソースを識別するために使用できると考えています)?

53
jd.

ショートバージョン:

ロール属性は、将来のブラウザに、デバイスに依存しない方法で特定のXML要素をインテリジェントに処理する方法を提供する可能性があります。たとえば、「ナビゲーション」のロール属性でマークされた順序付けられていないリストは、デスクトップ環境とハンドヘルド環境の両方のブラウザーでインテリジェントに解釈できるため、両方の環境で明確に表示できます。

ロングバージョン:

この仕様で定義されているXHTMLロール属性を使用すると、作成者はXML言語に、要素の目的に関する機械で抽出可能なセマンティック情報を注釈として付けることができます。ユースケースには、アクセシビリティ、デバイスの適応、サーバー側の処理、複雑なデータ記述が含まれます。

属性は、ドキュメントのコンテキストで現在の要素が果たす役割を記述します。これは、たとえば、アプリケーションや支援技術によって、要素の目的を決定するために使用できます。これにより、ユーザーは、要素に対してどのアクションを実行するかについて情報に基づいた決定を行い、選択したアクションをデバイスに依存しない方法でアクティブ化できます。 ドメイン固有の方法でドキュメントの一部に注釈を付けるためのメカニズムとして使用することもできます(たとえば、法的な用語の分類法)。

例:

<ul role="navigation sitemap">
    <li href="downloads">Downloads</li>
    <li href="docs">Documentation</li>
    <li href="news">News</li>
</ul>

XHTML2ワーキンググループが今年の終わりに存在しなくなることを考えると、この仕様が現在の形式に似た何かでリリースステータスに達する可能性はありません。 http://www.w3.org/News/2009#entry-6601

50
Robert Harvey

あなたが参照するドキュメントは、現在廃止されたXHTML 2ワーキンググループの作業の一部です。それは事実上時代遅れです。

HTML5/XHTML5にはrole属性もあります。その定義は似ていますが、やや制限があります。その目的は、Accessible Rich Internet Applications(ARIA)の役割を示すことです。これにより、スクリーンリーダーなどの支援技術が、UIコンポーネント(ウィジェット)の目的をユーザーに通知し、ナビゲートを支援します。ウェブページをもっと簡単に。

ARIAの有効な役割のリストは http://www.w3.org/TR/wai-aria/#roles にあります。

32
Alohci

ロールはアクセシビリティに使用できます。私の理解では、セマンティクスによって明確にされている場合は、ロール属性を回避する必要があります。たとえば、<nav role="navigation">...</nav>の使用はお勧めしません。これは、navセマンティック要素がすでにナビゲーションを意味しているためです。

しかし、それが役立つ場合があります。たとえば、リンクである画像には、スクリーンリーダーやその他の支援技術がリンクとして機能していることを理解するためにrole="link" tabindex="0"を含めることができます(Enterキーとクリックイベントについて、迷惑なキーダウンイベントをリッスンしてください)。 。

または、画像上でrole="button"を使用して、画像がボタンとして機能していることを示すことができます。

Role属性を使用すると、Webアプリケーションはブラウザにとって意味のある意味をWebアプリケーションに追加できますが、指定しないとマークアップで伝達されない場合があります。

多くの場合、属性に依存せずに意味的に正しい方法がありますが、必要なときにあります。

0
Alice Wonder