aタグのリンクをクリックしても別ページに飛ばない
💬 質問
<a> タグでリンクを作ったのですが、クリックしても別のページに移動しません。何が間違っているのでしょうか?
✅ 回答
リンクが動かない原因を順番に確認しましょう。
原因1:href 属性がない・空になっている
<!-- ❌ href がない -->
<a>ページ2へ</a>
<!-- ❌ href が # のまま(ページ内の先頭に戻るだけ) -->
<a href="#">ページ2へ</a>
<!-- ✅ 正しい書き方 -->
<a href="page2.html">ページ2へ</a> 原因2:ファイルパスが間違っている
リンク先のファイルが実際に存在するか、パスが正しいか確認しましょう。画像と同じく、大文字/小文字の違いにも注意です。
<!-- 同じフォルダ内のファイル -->
<a href="about.html">自己紹介</a>
<!-- 別フォルダのファイル -->
<a href="pages/contact.html">お問い合わせ</a> 原因3:新しいタブで開きたい場合
外部サイトへのリンクを新しいタブで開きたいときは target="_blank" を追加します。
<a href="https://example.com" target="_blank" rel="noopener noreferrer">外部サイト</a> 原因4:JavaScriptで return false や preventDefault() が呼ばれている
JavaScriptでクリックイベントを処理している場合、意図せずリンクの動作をキャンセルしていることがあります。
<!-- ❌ クリックしてもリンクが動かない -->
<a href="page2.html" onclick="return false">ページ2へ</a>
<!-- ✅ JavaScriptの処理をしつつリンクも動かす -->
<a href="page2.html" onclick="console.log('clicked')">ページ2へ</a> 原因5:CSS で pointer-events: none が当たっている
CSSで pointer-events: none が指定されていると、クリック自体が無効になります。開発者ツールで a タグのスタイルを確認しましょう。
/* ❌ これがあるとクリックできなくなる */
a {
pointer-events: none;
} チェックリスト
href属性が書かれているか(省略・空・#になっていないか)- リンク先のファイルが実際に存在するか
- ファイル名の大文字・小文字が一致しているか(例:
About.htmlとabout.html) - 相対パスのフォルダ階層が正しいか
- JavaScriptで
preventDefault()やreturn falseを呼んでいないか - CSSで
pointer-events: noneが当たっていないか
まとめ:まず href 属性が正しく書かれているか確認し、リンク先ファイルの存在とパスをチェックしましょう。開発者ツールで a タグを右クリック→「検証」すると href の値とスタイルを一度に確認できます。
解決しなかった?
エンジニアに質問する →