【HTML】aタグ(リンク)の基本とマークアップ規則まとめ

HTML

 Webサイト制作において欠かせないのが、ページ同士を繋ぐaタグ(アンカータグ)です。
 今回は、コーディング時に迷いがちなaタグの基本属性から、HTML5以降のマークアップ規則、SEOやアクセシビリティを意識した使い方まで、備忘録としてまとめた。

1. aタグの基本構造と主要な属性

aタグは href 属性(Hypertext Reference)と組み合わせることで、リンクとして機能します。

HTML
<a href="https://yahoo.com">Yahoo!サイトへ移動</a>

よく使う属性一覧

  • href: リンク先のURLや、ページ内アンカー(#id)を指定します。
  • target="_blank": リンク先を新しいタブ(またはウィンドウ)で開きます。
  • rel="noopener" / rel="noreferrer": target="_blank" を使用する際、セキュリティとパフォーマンスの観点から必須となる属性です(※最近のモダンブラウザでは自動付与されることが多いですが、明記するのが安全です)。
  • download: リンク先のファイルをダウンロードさせたい場合に指定します(値にファイル名を入れると、その名前で保存されます)。

2. HTML5以降のマークアップ規則(ブロック要素の内包)

HTML4.01(古い仕様)の時代は、aタグは「インライン要素」だったため、中に入れられるのはテキストや他のインライン要素(spanimg など)に限られていました。

しかし、HTML5以降(現在の仕様)では、aタグの中にブロックレベル要素(divh1〜h6psection など)を丸ごと入れることが可能になりました。

○ 正しいマークアップの例(バナー全体をリンクにする場合)

HTML
<a href="/article/123" class="card-link">
  <div class="card">
    <img src="peach-1.jpg" alt="記事のサムネイル">
    <h2>記事のタイトル</h2>
    <p>記事の要約テキストがここに入ります。</p>
  </div>
</a>

✕ 禁止されているNGマークアップ

いくらブロック要素を入れられるようになったとはいえ、以下のケースは仕様上禁止(入れ子不可)されています。

  1. aタグの中に別のaタグを入れる(リンクの二重構造)
  2. aタグの中にボタン(button タグ)を入れる
HTML
<a href="/page1">
  ここをクリック
  <a href="/page2">別のリンク</a> </a>

3. SEO・アクセシビリティを高めるマークアップのコツ

① 「こちら」や「詳しく見る」を避ける(アンカーテキストの最適化)

検索エンジンのクローラーや、視覚障害者が使用するスクリーンリーダーは、アンカーテキスト(リンクになっている文字列)を読んでリンク先の内容を理解します。

  • 悪い例: 詳細については、<a href="…">こちら</a>をご覧ください。
  • 良い例: 詳しい仕様については、<a href="…">ご利用ガイドのPDF</a>をご覧ください。

② 画像をリンクにする場合は alt 属性を忘れずに

バナー画像などをaタグで囲む場合、画像の alt 属性がアンカーテキストの代わりになります。

HTML
<a href="/contact">
  <img src="btn-contact.png" alt="お問い合わせはこちら">
</a>

4. ページ内リンク(スムーススクロール)の基本

同じページ内の特定の場所に飛ばしたい場合は、移動先の要素に id を付与し、aタグの href#id名 を指定します。

HTML
<a href="#section-01">セクション1へスクロール</a>

<section id="section-01">
  <h2>セクション1のコンテンツ</h2>
</section>

※CSSに html { scroll-behavior: smooth; } を記述するだけで、JavaScriptを使わずに滑らかなスクロール(スムーススクロール)を実装できます。

まとめ

  • aタグは現在、divp などのブロック要素を丸ごと囲んでOK。
  • ただし、aタグの入れ子や、中に button を入れるのはNG
  • target="_blank" を使う時は rel="noopener" をセットで意識する。
  • リンクのテキストは、それ単体で遷移先がわかる具体的な言葉にする。

コメント