a 要素

4.5.1 a 要素

カテゴリー:
フロー・コンテント
フレージング・コンテント
インタラクティブ・コンテント
パルパブル・コンテント
この要素を使うことができるコンテキスト:
フレージング・コンテントが期待される場所
コンテントモデル:
トランスペアレント。ただし、子孫にインタラクティブ・コンテントを入れてはいけません。
コンテント属性:
グローバル属性
href - ハイパーリンクのアドレス
target - ハイパーリンクナビゲーションフォーム・サブミッションのデフォルトのブラウジングコンテキスト
download - リソースをナビゲーションではなくダウンロードするかどうか、そして、そうなら、そのファイルの名前
rel - ハイパーリンクを含んでいるドキュメントとその先のリソースとの間の関係性
hreflang - リンク先のリソースの言語
type - 参照されたリソースの種類のヒント
text/html におけるタグの省略:
どちらのタグも省略できません。
指定可能な ARIA role 属性 の値:
link (デフォルト - 指定不要), button, checkbox, menuitem, menuitemcheckbox, menuitemradio, tab, treeitem
指定可能な ARIA ステートとプロパティ属性:
グローバル aria-* 属性
許可ロールに該当する aria-* 属性
DOM インタフェース:
interface HTMLAnchorElement : HTMLElement {
           attribute DOMString target;
           attribute DOMString download;

           attribute DOMString rel;
           attribute DOMString rev;
  readonly attribute DOMTokenList relList;
           attribute DOMString hreflang;
           attribute DOMString type;

           attribute DOMString text;
};
HTMLAnchorElement implements URLUtils;

もし a 要素が href 属性を持つなら、それは、そのコンテンツによってラベル付けされたハイパーリンク(ハイパーテキスト・アンカー)を表します。

もし a 要素が href 属性を持たないなら、その要素はプレースホルダーを表し、その要素のコンテンツのみから構成されます。もし関連性があったなら、そこにはリンクが配置されていたかもしれません。

target, download, rel, hreflang, type 属性は、href 属性が存在しなければば、省略されなければいけません。

もしサイトが、すべてのページで統一されたナビゲーションツールバーを使うなら、通常はそのページ自身にもリンクするでしょうが、a 要素を使ってマークアップすることができます:

<nav>
 <ul>
  <li> <a href="/">ホーム</a> </li>
  <li> <a href="/news">ニュース</a> </li>
  <li> <a>実例</a> </li>
  <li> <a href="/legal">法令</a> </li>
 </ul>
</nav>

href, target, download 属性は、ユーザーが a 要素を使って生成されたハイパーリンクをたどるときやハイパーリンクをダウンロードするときに何が起こるのか、という点で影響を与えます。rel, hreflang, type 属性は、ユーザーがリンクをたどる前に、ターゲットのリソースがどんな性質を持つのかをユーザーに示すために使うことができます。

ハイパーリンクを生成する a 要素のアクティベーション・ビヘイビアは、次の手順を実行することになります:

  1. a 要素の Document完全にアクティブなら、これらの手順を中止します。

  2. a 要素が download 属性を持つが、このアルゴリズムがポップアップを表示することを許可されていない、または、この要素に target 属性が存在し、ブラウジングコンテキスト名に target 属性の値を使ってブラウジングコンテキスト名からブラウジングコンテキストを選択する規則を適用したらブラウジングコンテキストがないという結果になった、のいずれかなら、次の副手順を実行します:

    1. エントリー設定オブジェクトがあれば、InvalidAccessError 例外を投げます。

    2. ハイパーリンクをたどらずに、これらの手順を中止します。

  3. click イベントのターゲットが ismap 属性が指定された img 要素なら、次の通り、サーバーサイド・イメージマップ処理が実行されなければいけません:

    1. click イベントが img 要素で実際にポインティングデバイスによって引き起こされた click イベントだったなら、x を、画像の左境界線があればその左端から、なければ画像の左端のから、クリック位置までの CSS ピクセル距離とし、そして、y を、画像の上境界線があればその上端から、なければ画像の上端から、クリック位置までの CSS ピクセル距離とします。そうでなければ、xy を 0 とします。
    2. ハイパーリンク・サフィックスを、U+003F QUESTION MARK 文字、ASCII 数値を使って 10 進法の整数として表現された x の値、"," (U+002C) 文字、そして、ASCII 数値を使って 10 進法の整数として表現された y の値とします。
  4. 最後に、ユーザーエージェントは、download 属性とユーザーの選択によって決められた通りに、a 要素によって生成されたハイパーリンクをたどるか、または、そのハイパーリンクをダウンロードしなければいけません。この上記の手順がハイパーリンク・サフィックスを定義した場合、そのハイパーリンクをたどるかダウンロードする際に、それを考慮しなければいけません。

a . text

textContent と同じ。

IDL 属性 download, target, rel, rev, hreflang, type, は、同じ名前の対応するコンテント属性を反映しなければいけません。

IDL 属性 relList は、rel コンテンツ属性を反映しなければいけません。

text IDL 属性は、取得時においては、該当の要素の textContent IDL 属性と同じ値を返さなければいけません。セット時においては、該当の要素の textContent IDL 属性が新たな値にセットされたかのように作用しなければいけません。


a 要素は、URLUtils インタフェースもサポートします。 [URL]

この要素が生成されるとき、そして、この要素の href コンテント属性がセットされたり変更されたり削除されたりする都度、ユーザーエージェントは、この要素の URLUtils インタフェースの入力をセットするアルゴリズムを呼びださなければいけません。その際に、href コンテント属性があればその値を、なければ空文字列を、その指定値として使います。

この要素の URLUtils インタフェースのベースを取得するアルゴリズムは、単にその要素のベース URL を返さなければいけません。

この要素の URLUtils インタフェースのクエリ・エンコーディングは、そのドキュメントの文字エンコーディングです。

この要素の URLUtils インタフェースが文字列 value を使って更新手順を呼び出すとき、ユーザーエージェントは、その要素の href コンテント属性を、その文字列 value にセットしなければいけません。

a 要素は、段落、リスト、表だけでなく、セクションすらも、まるごと囲むことができます。ただし、中にインタラクティブ・コンテント(ボタンやリンクなど)がない場合に限ります。この例は、どうやってこれを使って広告ブロックをまるごとリンクにできるのかを示しています:

<aside class="advertising">
 <h1>広告</h1>
 <a href="http://ad.example.com/?adid=1929&amp;pubid=1422">
  <section>
   <h1>マルブロマティック 9000!</h1>
   <p>あなたのウィジットをすべてメルブロムにしてしまいます!</p>
   <p>たったの 9.99 ドルと送料および手数料。</p>
  </section>
 </a>
 <a href="http://ad.example.com/?adid=375&amp;pubid=1422">
  <section>
   <h1>メルブロムブラウザー</h1>
   <p>光速のブラウザー。</p>
   <p>これより速いブラウザーはありません!</p>
  </section>
 </a>
</aside>

※ 原文:http://www.w3.org/TR/2014/REC-html5-20141028/text-level-semantics.html#the-a-element