このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

ARIA: link ロール

link ウィジェットは、リソースへの操作可能な参照を提供します。対象となるリソースは、外部でも内部でもかまいません。つまり、現在のページやアプリケーションの外側でも、内側でも構いません。

メモ: 可能であれば、link ロールではなくネイティブの <a> 要素を使用することをお勧めします。ネイティブ要素は古いユーザーエージェントや支援技術によって広くサポートされているためです。ネイティブの <a> 要素は、追加のカスタマイズを必要とせずに、デフォルトでキーボードとフォーカスの要件にも対応しています。

解説

link ロールは、アプリケーション内または外部にあるリソースへのハイパーリンクを生成する要素を識別するために使用されます。

意味的 HTM Lを本来の目的通りに使用しない場合、対話機能は再実装する必要があります。例えば、要素に role="link" が追加されている場合、tab キーを押すとそのリンクにフォーカスが移動し、enter キーを押すと、フォーカスが当たったリンクが実行されるようにする必要があります。

tabindex 属性を 0 の値で使用し、このリンクが正しいタブフォーカス順に確実に含まれるようにしてください。

警告: 要素に link ロールを適用しても、ブラウザーはその要素に、下線、フォーカスリング、リンク先への移動、コンテキストメニューの操作といった、標準的なリンクの外観や動作を行うことはありません。これらは開発者の責任となります。

例

<a> ではない要素に対して link ロールを使用してアクセシブルなリンクを再現するには、そのリンクが正しいタブ順序でフォーカスを受け取ることを確実にし、要素がリンクのように見えることを実現し、そしてその「リンク」がリンクとして機能することを実現する必要があります。

html
<span data-href="https://mozilla.org" tabindex="0" role="link">
  span 要素を使用して作成された偽のアクセシブルなリンク
</span>

CSS

css
span[role="link"] {
  color: blue;
  text-decoration: underline;
  cursor: pointer;
}
span[role="link"]:hover,
span[role="link"]:active,
span[role="link"]:focus {
  color: purple;
}

span[role="link"]:focus {
  background-color: palegoldenrod;
  outline: 1px dotted;
}

JavaScript

js
const fakeLinks = document.querySelectorAll('[role="link"]');

for (const link of fakeLinks) {
  link.addEventListener("click", navigateLink);
  link.addEventListener("keydown", navigateLink);
}

// リンクの click および keydown イベントを処理
function navigateLink(e) {
  if (e.type === "click" || e.key === "Enter") {
    const ref = e.target ?? e.srcElement;
    if (ref) {
      window.open(ref.getAttribute("data-href"), "_blank");
    }
  }
}

role="link" が設定された要素が Enter キーイベントを受け取った場合、そのリンクが実行され、リンク先のページに移動するか、ページ内のターゲットにフォーカスが移動されます。

オプションで、Shift + F10 を押すと、そのリンクのコンテキストメニューが開きます。

ベストプラクティス

さまざまなウィジェットロールが、一般的な対話パターン を定義するために使用されます。文書構造ロールと同様に、link ロールを含むこれらのロールの一部は、十分に対応されて いるネイティブの HTML 要素の意味づけと重複しているため、使用すべきではありません。

完全性を期すために link を含めましたが、使用することは避けてください。アクセシビリティに配慮した対話的機能を備えた、意味的に同等の <a> が利用可能であり、対応しています。

推奨される HTML

代わりに <a> を使用してください。

メモ: HTML のリンクに role="link" を記載する必要はありません。なぜなら、<a> にはデフォルトでそのロールがすでに設定されているからです。

仕様書

仕様書
Accessible Rich Internet Applications (WAI-ARIA)
# link

その他のリソース