「リンクをクリックしたのに、同じページのどこにも飛ばない…」って困ったことありませんか?
また、「目次からすぐに見たいところへ移動できたらいいのに」と思ったことがある人も多いと思います。
今回は、HTMLでページ内リンクを作る方法について、わかりやすく説明していきます。
特に、リンク先を「#(シャープ)」を使って指定する方法に注目して解説します。
この仕組みを知っておけば、長いページでも見たい場所にすぐジャンプできるようになりますし、読みやすくて親切なページ作りができるようになります。
とても便利なので、ぜひ最後まで読んで参考にしてください。
HTMLでページ内リンクを作る基本的な方法

ページ内リンクとは何か
ページ内リンクとは、同じHTMLページの中で特定の位置にジャンプするリンクのことです。
たとえば「この部分に戻る」というリンクをクリックすると、ページ内の別の場所へすぐに移動できるようになります。
ユーザーが迷わず情報を探せるようにするためのとても便利な仕組みです。
以下のような場面でよく使われます。
- 長いページで目次から各項目にジャンプしたいとき
- 質問と回答のリストで、答えにすぐ飛びたいとき
- 利用規約などで特定のセクションを示したいとき
ページ内リンクをうまく使うことで、読む人が迷わず目的の情報にたどり着けるようになります。
リンク先の指定に使う「#」の意味
HTMLでページ内リンクを作るとき、「#(シャープ)」はとても大事な記号です。
この「#」はリンク先の場所を示すために使われます。
リンクを設定するには、aタグに「#+移動先の名前(id)」を書く必要があります。
具体的には、次のような書き方になります。
<a href="#target">ここに移動</a>
ここで「target」はジャンプ先の要素に付けたidの名前です。
ジャンプ先には、次のようにid属性を付けます。
<div id="target">ここにジャンプします</div>
このように、「#」はidとつながって動く特別な目印です。
id属性の役割と使い方
ページ内リンクを正しく動かすには、リンク先のHTML要素に「id属性」をつける必要があります。
id属性は、ページ内で一つだけに使える名前のようなもので、ジャンプ先を明確にするためのポイントになります。
ここでは、id属性の使い方を箇条書きで説明します。
- idは英数字で指定する
- 同じidは1ページに複数使えない
- ジャンプさせたい要素に直接付ける
- 他のHTML属性とは別に書く
- わかりやすい名前をつける
idをしっかり設定することで、ページ内リンクがうまく働きます。
aタグでリンクを作成する方法
aタグを使ってページ内リンクを作るときは、リンクしたい文字を囲むようにaタグを使います。
そして、href属性に「#+id名」を書きます。
とてもシンプルですが、正確に書くことが大切です。
例えば、こんなコードになります。
<a href="#section1">セクション1へ移動</a>
このリンクをクリックすると、次のようにidを持った場所に飛びます。
<h2 id="section1">セクション1の内容</h2>
リンクとidの名前が完全に一致していないとジャンプできないので注意が必要です。
正しく書けば、誰でもすぐに使えます。
シンプルなページ内リンクのサンプルコード
実際の使い方を確認するには、簡単なサンプルコードを見るのが早いです。
ここでは、基本的なページ内リンクの流れを紹介します。
- まずリンクを作る:
<a href="#about">このページについて</a> - ジャンプ先にidをつける:
<div id="about">ここがジャンプ先です</div> - どちらも同じid名を使う
- タグの入れ子や順番に注意する
- テストして正しく飛ぶか確認する
このように、リンク元とリンク先をしっかり対応させることで、スムーズにページ内を移動できるようになります。
外部ページとの違いと注意点
ページ内リンクと外部ページへのリンクには、大きな違いがあります。
ページ内リンクは、今見ている同じページ内で場所を移動します。
一方、外部リンクはまったく別のURLに飛びます。
この違いを理解するために、いくつかのポイントを整理しましょう。
- ページ内リンクは「#id」で指定
- 外部リンクは「http~」でURLを指定
- 外部ページでも特定の場所に飛ぶには「URL+#id」で書く
- ページ内リンクは読み込みが早い
- 外部リンクはクリックでページ全体が切り替わる
それぞれ使い方を間違えないようにすることが大切です。
特に、URLの最後に「#id」をつけるだけで外部ページ内の特定位置にリンク可能という点は覚えておくと便利です。
ページ内リンクの使い方と活用シーン

長文ページでの目次リンク活用法
とても長いページを読むときに、目次リンクがあると読み手はとても楽になります。
最初に目次を表示しておいて、そこから見たいところにジャンプできる仕組みを作ると、読む人のストレスがぐっと減ります。
特にFAQページや解説記事では、この方法がとても役立ちます。
目次リンクの作り方は以下のとおりです。
- 見出しごとにid属性を付ける
- 目次にはそれぞれのidを使ったaタグリンクを作る
- 目次の位置はページの一番上に配置する
- 視覚的に目次とわかるデザインにする
- スマホ表示でも押しやすいリンクにする
このように目次をうまく使えば、読む人がどこに何があるかすぐにわかり、必要な情報にすぐたどり着けます。
FAQやQ&Aページでのジャンプリンク活用
よくある質問(FAQ)やQ&A形式のページでは、それぞれの質問から答えにジャンプできるリンクを付けておくと便利です。
特に質問の数が多いときにジャンプリンクを付けておくと、ページが見やすくなります。
以下に、FAQページでジャンプリンクを使うときのポイントをまとめます。
- 質問リストにaタグでリンクをつける
- 答えの部分にid属性を使って目印をつける
- リンクの文言は質問内容そのままが分かりやすい
- 戻るリンクを答えの下に付けると親切
- デザインにメリハリをつけて視認性を上げる
ジャンプリンクがあることで、ユーザーは「スクロールの手間を省いて、必要な情報だけをパッと見る」ことができます。
シングルページデザインでのスムーズな移動
最近では、一つのHTMLファイルの中にすべての内容を収める「シングルページデザイン」が人気です。
こういったページでは、ページ内リンクが特に大切になります。
クリックでページの下のセクションに移動できるようにしておくことで、読みやすさがアップします。
たとえば、トップにあるメニューから「サービス」「会社情報」「お問い合わせ」などの各セクションに飛べるようにすると、見た目も操作性も良くなります。
以下にやるべきポイントを紹介します。
- 各セクションにid属性をつける
- グローバルメニューのリンクに「#id名」を指定する
- スクロールの動きをスムーズにするスクリプトを使う
- 見出しに余白を取って表示位置がずれないようにする
- スマホでも操作しやすいデザインにする
このようにしておけば、「見たいところにすぐ移動できる、使いやすいページ」になります。
フォームの送信エラー時に特定箇所へ飛ばす方法
入力フォームで間違いがあるとき、エラーメッセージが表示されてもユーザーがその場所に気づかないことがあります。
そんなときに、ページ内リンクを使ってエラー箇所に自動でジャンプさせると、ユーザーはすぐに問題を直せます。
この仕組みは少しJavaScriptと組み合わせて使うこともありますが、基本の考え方は同じです。
<a href="#error">エラーのある項目へ戻る</a>
このように書けば、「#error」が付けられた要素にジャンプできます。
idをつける場所は、エラーメッセージの直前や該当する入力欄の上などが適しています。
フォームページでこの工夫をしておくと、「エラーにすぐ気づける優しい設計」になります。
ユーザビリティ向上のための導線設計
ページ内リンクを活用すると、サイト全体の使いやすさ(ユーザビリティ)を大きく高めることができます。
ただ単にリンクを置くだけではなく、ユーザーの動きを想像しながら「どこからどこに移動したいのか?」を意識して設計することが大切です。
特に意識すべきポイントは以下のとおりです。
- リンクのテキストはシンプルにする
- ページ構成とリンク構造を一致させる
- リンクの色や装飾でわかりやすくする
- 戻るリンクやトップに戻るリンクを用意する
- 読み終わったあとに次の行動を示すリンクを置く
これらを実践することで、訪問者が迷わずにページ内を移動できるようになります。
結果として、離脱率の低下や満足度の向上につながります。
ページ内リンクでよくあるトラブルとその対処法

リンク先に飛ばない・ずれる原因とは
ページ内リンクを作ったのに、クリックしても思った場所にジャンプしない、あるいは少しずれた位置に表示されることがあります。
このようなトラブルは、いくつかの原因によって起こります。
特に初心者の方が見落としやすいポイントもあります。
よくある原因を以下にまとめます。
- id属性のつけ忘れや重複
- リンク先のid名とhrefの指定が一致していない
- JavaScriptやCSSによるスクロールの影響
- 固定ヘッダーにより表示位置が隠れる
- 遅延読み込みによって要素がまだ表示されていない
どれか一つでも当てはまると、正しくジャンプできません。
リンクがずれる場合は、まずこれらのチェックを行うことが大切です。
固定ヘッダーとリンク位置のずれを防ぐ方法
最近のサイトでは、画面の上部にずっと表示される「固定ヘッダー」を使っていることが多いです。
このヘッダーがあると、ページ内リンクでジャンプした先が隠れてしまうという問題が起こります。
このずれを防ぐには、CSSで調整する方法が有効です。
主な対策方法は以下のとおりです。
- ジャンプ先の要素にpadding-topをつける
- 同じ分だけmargin-topをマイナスにして位置を調整する
- スクロール位置を調整するJavaScriptを使う
- あらかじめヘッダーの高さを計算しておく
- 疑似要素を使ってスペースを作る方法もある
このように少しの工夫で、リンク先が見えなくなるトラブルを防げます。
特にスマホではスペースが少ないので要注意です。
JavaScriptとの干渉による不具合対策
ページにJavaScriptが組み込まれていると、ページ内リンクがうまく動かないことがあります。
特にスクロールを制御するスクリプトや、アニメーション効果を加えるライブラリなどがあると、予期しない動きになることがあります。
以下は、よくある干渉ポイントです。
- 自動スクロールスクリプトと競合している
- SPA(シングルページアプリ)でURLの「#」が書き換えられる
- DOMContentLoaded前にリンクをクリックすると反応しない
- モーダル表示などで対象の要素が非表示になっている
- JavaScriptで要素が動的に追加されている
このような場合は、スクリプトの順番や動作タイミングを見直すことが重要です。
無理に動かそうとせず、まずは原因を見つけることが第一歩です。
id属性の重複による不具合の確認方法
HTMLでは、同じid属性を複数の要素に使ってはいけません。
でも、ついコピペなどで同じidが何回も登場してしまうことがあります。
こうなると、ページ内リンクが正しく働かなくなったり、思わぬ場所にジャンプしてしまうことがあります。
idの重複を確認するには、以下のような方法があります。
- ブラウザの開発者ツールで検索する
- HTMLバリデーターでチェックする
- エディターの検索機能で「id=」を探す
- 名前のつけ方にルールを作る
- テンプレートの使い回しに注意する
idが重複していると、JavaScriptの動作にも悪影響が出ることがあります。
必ず1ページに1つのidだけを使うようにしましょう。
CSSやスクロール設定の影響と修正方法
ページ内リンクがずれたり、飛んでも画面の見え方が不自然になるのは、CSSの指定やスクロールの設定が関係していることも多いです。
特にposition: fixedやoverflowの指定があると、思ったように動かなくなります。
以下のようなCSSの設定に注意しましょう。
- 親要素にoverflow: hiddenがついていないか
- ジャンプ先の要素がdisplay: noneになっていないか
- スクロールアニメーションと競合していないか
- スクロール位置を調整するCSSを使ってみる
- 高さや余白の指定が崩れていないか
スタイルシートを修正するだけで、リンクの不具合が簡単に直ることもあります。
原因を一つひとつ確かめることが大切です。
ページロード時にリンク先へ飛ばない場合の対処
リンク付きのURLを開いたとき、ページが読み込まれた後にジャンプ先に飛ぶはずなのに、うまく動かないということがあります。
これは、ページの読み込みとスクロールのタイミングが合っていないことが原因です。
このような問題を解決する方法はいくつかあります。
- ページが完全に読み込まれてからスクロール処理をする
- window.onloadのイベントを使ってスクロールさせる
- JavaScriptでURLの「#」を取得して処理を追加する
- CSSのレイアウトが崩れていないかを確認する
- 画像や動画などの遅延読み込みが原因になっていないかを調べる
このようにタイミングを調整すれば、ページ読み込み後のジャンプも確実に動くようになります。
特に画像やスクリプトが多いページでは注意が必要です。
SPAやフレーム構成での注意点
最近では、Vue.jsやReactなどを使ったSPA(シングルページアプリケーション)型のサイトが増えています。
このようなページでは、URLに「#」をつけても自動でスクロールしてくれない場合があります。
フレーム構成のサイトでも、ジャンプ先が違うフレーム内だと動きません。
SPAやフレームページで気をつけるべき点をまとめます。
- idによるページ内リンクが使えない場合がある
- ルーターでURLを制御しているときは設定を確認する
- スクロール位置の制御はJavaScript側で実装する必要がある
- iframe内にリンク先があるときは親フレームとの関係に注意
- 表示タイミングが遅れるため、遅延処理が必要なこともある
これらの技術では、見た目は普通のページでも内部の仕組みがまったく違うため、通常のHTMLの感覚ではうまく動かないことがあるのです。
技術の特性を理解して対応しましょう。
SEOとユーザビリティを意識したページ内リンクの最適化

クローラーはページ内リンクをどう扱うか
Googleなどの検索エンジンのクローラーは、ページ内リンクも読み取ることができます。
ただし、ページ内リンクだけではSEO効果が大きくはなりません。
クローラーにとって重要なのは、そのリンク先にある情報の内容と構造が整理されているかどうかです。
以下に、検索エンジンとページ内リンクの関係について注意点をまとめます。
- クローラーは「#」の付いたリンクも辿ることがある
- リンク先に意味のある見出しやコンテンツがあることが重要
- ジャンプ先に重複コンテンツがあると評価が下がる可能性がある
- ページ内リンクは「ユーザー目線」での設計が最優先
- 見出しタグ(h2やh3)とリンク先の関係を正しく設計する
つまり、クローラーはページ内リンク自体より、そのリンク先の中身を重視しているのです。
HTML構造と内部リンクの関連性
SEO対策としてページ内リンクを正しく使うためには、HTMLの構造をしっかり整理することがとても大切です。
見出しや段落の順番、タグの使い方を正しくすることで、検索エンジンにもユーザーにも優しいページが作れます。
以下のような構造を意識して設計するのがおすすめです。
- h1はページに1つだけ使う
- h2・h3は内容に応じて階層を明確にする
- リンク先のidはセクション単位で設定する
- セクションごとに適切な内容をまとめる
- 意味のある文章と情報を配置する
HTML構造を正しくすれば、内部リンクとしての評価も上がりやすくなります。
ユーザー体験を高めるリンク位置と導線設計
SEOだけでなく、ユーザーがストレスなく情報を見つけられることもとても大切です。
リンクの位置や順番、導線の設計がしっかりしていないと、ユーザーは途中でページを離れてしまいます。
ユーザー体験を良くするために考えるべきポイントは以下のとおりです。
- 目立つ場所に目次リンクを設置する
- 重要な情報にはすぐ飛べるようリンクを置く
- 戻るリンクやトップに戻るボタンも用意する
- スマホでも操作しやすいように工夫する
- 無駄なリンクや重複リンクは避ける
こういった工夫をすることで、「探しやすく・読みやすく・戻りやすい」ページになります。
アンカーテキストの適切な記述方法
リンクを貼るときに使うテキスト(アンカーテキスト)もSEOやユーザー体験に大きく関わります。
たとえば「こちら」や「クリックしてね」などの曖昧な言葉では、リンク先の内容が分かりません。
リンク先の内容を正しく伝える言葉を使うことが大切です。
正しいアンカーテキストを書くためのポイントは次のとおりです。
- リンク先の内容をそのままテキストに表す
- 短くても意味のある言葉を使う
- あいまいな表現は避ける
- 見出しや質問文と合わせて使うと効果的
- 無理にキーワードを詰め込みすぎない
適切なアンカーテキストを使うことで、検索エンジンもユーザーもリンク先の情報を理解しやすくなります。
スクロールアニメーションで自然な誘導を実現
ページ内リンクでジャンプするとき、いきなりパッと画面が切り替わるとユーザーは驚いたり混乱したりします。
そんなときに便利なのが、スクロールアニメーションです。
リンクをクリックしたときに、ゆっくりと目的の場所へスクロールするようにすると、自然な流れになります。
JavaScriptやCSSでスクロールアニメーションを加えるときは、次のような点に注意しましょう。
- ライブラリを使わなくても簡単なスクリプトで実装できる
- HTML5のscroll-behavior: smoothを使う方法もある
- 動作が重くならないように最小限にする
- スマホやタブレットでもスムーズに動くか確認する
- 見出しの直前に止まるように余白を調整する
このように、自然なスクロールでユーザーを目的地まで案内する工夫は、とても効果的です。
セマンティックなHTMLとSEOの相性
セマンティックHTMLとは、意味のあるタグを正しく使うことです。
たとえば、ただのdivではなく、articleやsection、navなどの意味を持ったタグを使うことで、検索エンジンもそのページの構造を理解しやすくなります。
以下は、セマンティックHTMLの具体的な活用例です。
- 全体を<main>で囲む
- ナビゲーションには<nav>を使う
- 記事本文には<article>や<section>を使う
- 見出しの順序を正しく設定する
- 補足情報には<aside>を使う
このようなタグを使うことで、ページ構造が明確になり、SEOの効果も高まります。
Google検索結果のスニペットに表示される可能性
ページ内リンクをうまく使うと、Googleの検索結果で特定の見出しやセクションがスニペットとして表示されることがあります。
たとえば、検索結果の下に「見出しのリンク」が出てくることがあります。
これは、Googleがそのページの構造を理解し、便利なリンクを自動で作ってくれるからです。
スニペット表示を目指すには、以下のような工夫が必要です。
- ページ内リンクをきちんと設定する
- 見出しタグを正しく使い、意味のあるタイトルをつける
- セクションごとに内容をしっかり書く
- 読みやすい日本語で表現する
- モバイルでも見やすい構成にする
こうした工夫をすることで、Googleの検索結果で目立つことができ、アクセス数アップにもつながります。
まとめ

この記事では、HTMLでページ内リンクを使って特定の位置へジャンプする方法をわかりやすく解説しました。
基本の使い方から応用方法、SEOやユーザビリティまで幅広く紹介しました。
ここで、特に大切なポイントをもう一度おさらいしましょう。
- リンク先にはid属性を使う
- aタグのhrefに「#id名」を書く
- リンク先が見えるように位置を調整する
- クローラーはリンク先の内容も評価している
- ユーザーの動きを考えた導線設計が重要
ページ内リンクは、読みやすくて親切なページを作るための大事なテクニックです。
今日学んだことを活かして、自分のサイトにもどんどん使ってみましょう。



