aタグの重要な属性について
HTMLでリンクを作る<a>
タグには、基本のhref属性以外にも、リンクの動作や意味を拡張する重要な属性があります。
(新しいタブなど)
(セキュリティ対策)
補足情報表示
を指示
最も頻繁に使用される属性の一つで、特に外部サイトへのリンクで重要です。
target="_self"
:同じタブで開く(デフォルト)target="_blank"
:新しいタブで開く(外部サイト推奨)
セキュリティ対策やSEO対策において非常に重要な属性です。
rel="noopener"
:セキュリティ対策(window.opener制御)rel="noreferrer"
:リファラー情報の送信を制御rel="nofollow"
:検索エンジンのクロール制御rel="external"
:外部サイトであることを明示
マウスオーバー時にツールチップで補足情報を表示し、ユーザビリティとアクセシビリティを向上させる重要な属性です。
- リンク先の詳細説明
- ファイルのサイズや形式情報
- 動作の説明(新しいタブで開くなど)
- スクリーンリーダーでも読み上げられる
ユーザーがファイルを保存できるようにする属性です。
download
:元のファイル名でダウンロードdownload="新しい名前"
:指定した名前でダウンロード- PDFや画像、文書ファイルなどに使用
- 同一ドメインのファイルのみ有効
target属性の詳細解説
target
属性は、リンクをクリックした時の開き方を制御する重要な属性です。
この属性を使うことで、リンク先のページを同じタブで開くのか、新しいタブで開くのかを指定できます。
target属性の主要な値
値 | 例 | 動作・用途 |
---|---|---|
_self | <a href="about.html" target="_self">私について</a> | 同じタブで開く(デフォルト) |
_blank | <a href="https://example.com" target="_blank">外部サイト</a> | 新しいタブで開く |
HTML4時代にフレーム(iframe)が多用されていた頃の名残で、以下の値も存在しますが、現代のWeb開発ではほとんど使用されません:
_parent
- 親フレームで開く(フレーム構造でのみ意味を持つ)_top
- 最上位フレームで開く(フレーム構造でのみ意味を持つ)
現在のレスポンシブWebデザインでは、フレームを使うことは稀なため、基本的に_self
(デフォルト)と_blank
(新しいタブ)の2つを覚えておけば十分です。
target属性の現代的な使い分け指針
- 同一サイト内のリンク target属性は指定しない(デフォルトの
_self
動作) - 外部サイトへのリンク
target="_blank"
で新しいタブで開く - ユーザーの意図 同じサイト内での移動は同じタブ、別サイトは新しいタブが一般的
- セキュリティ 外部リンクでは必ず
rel="noopener"
も併用
外部リンクを新しいタブで開くことには、以下のような利点があります:
- ユーザビリティ 元のサイトに戻りやすい
- 滞在時間の向上 ユーザーが元のサイトを離れにくい
- ユーザーの期待 多くのユーザーが外部リンクに期待する動作
- 比較検討 複数のサイトを同時に見比べることができる
target属性の実践
rel属性の詳細解説
rel
(relationship)属性は、現在のページとリンク先ページの関係を示します。この属性は、ブラウザや検索エンジンに対して「このリンクがどのような性質のものか」を伝える重要な役割を持っています。
特に外部サイトへのリンクでは、セキュリティとプライバシーの観点から非常に重要な属性となります。適切に設定することで、ユーザーの安全性を守り、SEO(検索エンジン最適化)の効果も期待できます。
主要なrel属性の値
- noopener 新しいタブでリンク先が元のページにアクセスできないようにする(セキュリティ対策)。リンク先のページから元のページを操作されることを防ぎます
- noreferrer リンク元の情報(リファラー)をリンク先に送信しない。どのサイトから来たかの情報を隠すことで、プライバシーを保護します
- nofollow 検索エンジンにリンク先をたどらないよう指示(SEO対策)。リンク先のページランクに影響を与えないようにします
- external 外部サイトへのリンクであることを明示。同一ドメイン外のサイトであることをブラウザに伝えます
- help ヘルプページやサポートページへのリンク。ユーザーサポートに関連するページであることを示します
- next/prev ページネーションでの次/前のページ。シリーズページや記事の順序関係を示します
基本的な書き方
<!-- セキュリティ対策(外部リンク) -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
安全な外部リンク
</a>
<!-- SEO対策(信頼できないサイト) -->
<a href="https://untrusted-site.com" rel="nofollow">
信頼できないサイト
</a>
<!-- 外部サイトの明示 -->
<a href="https://partner-site.com" rel="external">
パートナーサイト
</a>
<!-- ヘルプページ -->
<a href="help.html" rel="help">
ヘルプ
</a>
<!-- ページネーション -->
<a href="page2.html" rel="next">次のページ</a>
<a href="page1.html" rel="prev">前のページ</a>
外部サイトをtarget="_blank"
で開く場合は、セキュリティのためにrel="noopener noreferrer"
属性も追加することを推奨します。
理由
noopener
新しいタブから元のページのwindow.opener
へのアクセスを防ぐnoreferrer
リンク元の情報(リファラー)を送信しない
<!-- 推奨:セキュリティ対策済みの外部リンク -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
安全な外部リンク
</a>
window.openerとは?
window.opener
は、JavaScriptで新しいタブ・ウィンドウが元のページにアクセスできる仕組みです。target="_blank"
でリンクを開いた場合、新しいタブから元のページを操作できてしまう危険性があります。
具体的なセキュリティリスク
- ページの乗っ取り 新しいタブのJavaScriptが
window.opener.location
を変更し、元のページを悪意のあるサイトにリダイレクト - フィッシング攻撃 ユーザーが新しいタブを見ている間に、元のページが偽のログインページに差し替えられる
- 情報の盗取 元のページの内容やURLなどの情報を新しいタブから読み取られる可能性
攻撃の流れの例
1. ユーザーがあなたのサイトで外部リンクをクリック
2. 外部サイトが新しいタブで開く
3. 外部サイトのJavaScriptが window.opener.location = "http://悪意のあるサイト" を実行
4. ユーザーが元のタブに戻ると、偽のサイトが表示されている
5. ユーザーが気づかずにログイン情報を入力してしまう
title属性の詳細解説
title
属性は、リンクにマウスカーソルを合わせたときに表示される補助的なツールチップテキストを設定します。
リンクテキストだけでは伝わりにくい詳細(ファイル形式やサイズ、外部サイトであることの注意など)を短く分かりやすく伝えるのに役立ちます。
title属性の使用指針
- 補足説明 リンクテキストだけでは不十分な場合の追加情報
- ファイル情報 ダウンロードリンクでのファイルサイズや形式の説明
- 動作の説明 新しいタブで開く、外部サイト移動などの動作説明
- アクセシビリティ スクリーンリーダーでも読み上げられる重要な情報
実践例
マウスを重ねてツールチップを確認してください。
download属性の詳細解説
download
属性を使用すると、リンク先のファイルをダウンロードさせることができます。通常、リンクをクリックするとブラウザでファイルが開かれますが、この属性を指定することで「ファイルを保存する」動作に変更できます。
特にPDFや画像、ZIP ファイルなど、ユーザーが手元に保存したいファイルを提供する際に便利な機能です。
基本的な書き方
<!-- 基本的なダウンロードリンク -->
<a href="document.pdf" download>PDFをダウンロード</a>
<!-- ダウンロード時のファイル名を指定 -->
<a href="data.pdf" download="商品カタログ.pdf">
カタログをダウンロード
</a>
<!-- 画像のダウンロード -->
<a href="photo.jpg" download="プロフィール写真.jpg">
写真をダウンロード
</a>
ダウンロードリンクの特徴
- download属性のみ ファイルを元の名前でダウンロード
- download=“新しい名前” 指定した名前でダウンロード
- ファイル形式の明示 リンクテキストにファイル形式とサイズを記載することを推奨
- セキュリティ 同一ドメインのファイルのみダウンロード可能(クロスオリジン制限)
実践的なダウンロードリンクの例
特殊なhref指定方法
基本的なURL指定以外に、href
属性には特殊なスキーム(プロトコル)を使用して、様々な機能を実現できます。
メールリンク(mailto:)
mailto:
スキームを使用すると、クリック時にユーザーのメールアプリを起動できます。
基本的な書き方
<!-- 基本的なメールリンク -->
<a href="mailto:contact@example.com">お問い合わせ</a>
<!-- 件名を指定 -->
<a href="mailto:contact@example.com?subject=お問い合わせ">
件名付きメール
</a>
<!-- 件名と本文を指定 -->
<a href="mailto:contact@example.com?subject=お問い合わせ&body=こんにちは">
件名・本文付きメール
</a>
<!-- 複数の宛先 -->
<a href="mailto:contact@example.com,support@example.com">
複数宛先メール
</a>
mailtoパラメーター
- to 宛先メールアドレス(複数の場合はカンマ区切り)
- subject 件名(
?subject=件名
の形式) - body 本文(
&body=本文内容
の形式) - cc CCに追加するアドレス(
&cc=address@example.com
) - bcc BCCに追加するアドレス(
&bcc=address@example.com
)
電話リンク(tel:)
tel:
スキームを使用すると、クリック時にスマートフォンなどで電話をかけることができます。
基本的な書き方
<!-- 基本的な電話リンク -->
<a href="tel:03-1234-5678">03-1234-5678</a>
<!-- 国際電話の場合 -->
<a href="tel:+81-3-1234-5678">+81-3-1234-5678</a>
<!-- ハイフンなしでも動作 -->
<a href="tel:0312345678">03-1234-5678</a>
電話リンクのベストプラクティス
- 表示用の番号 ユーザーが読みやすい形式で表示(ハイフン付きなど)
- href用の番号 数字のみ、または国際形式での記述
- スマートフォン対応 モバイルデバイスでのみ意味を持つため、PCでは単なるテキストとして表示
- 国際対応 海外からのアクセスも考慮する場合は国番号を含める
その他の特殊なスキーム
SMS(ショートメッセージ)リンク
<!-- SMS送信 -->
<a href="sms:090-1234-5678">SMSを送信</a>
<!-- 本文付きSMS -->
<a href="sms:090-1234-5678?body=こんにちは">メッセージ付きSMS</a>
理解度チェッククイズ
リンク属性・特殊href指定ミニクイズ
まとめ
- target属性 新しいタブで開く場合は
rel="noopener"
とセットで使用 - title属性 リンクの説明をツールチップで表示、アクセシビリティ向上
- rel属性 セキュリティ(noopener)、SEO制御(nofollow)に重要
- download属性 ファイルダウンロード時の名前を制御
- 特殊href
mailto:
、tel:
で多様な機能を実現 - 組み合わせ効果 複数の属性を適切に組み合わせることでユーザビリティが向上
次回は、Webページをさらに魅力的にする「画像の表示」について学びます。img要素の基本的な使い方から、レスポンシブ対応まで詳しく解説予定です。
今回学んだ基本的な属性に加えて、aria-label属性という重要な属性があります。これは、スクリーンリーダーなどの支援技術を使用するユーザーのために、要素により分かりやすい説明を提供する属性です。
<a href="contact.html" aria-label="お問い合わせページへ移動">こちら</a>
aria-label属性を含むアクセシビリティの詳細については、第5章「アクセシビリティの基本」で詳しく学習予定です。