「Webページが長くて読者が迷子になっていないか心配…」「サイトの回遊率を上げたいけど、どうすればいい?」
もしあなたがそう感じているなら、ページ内リンク(アンカーリンク)が解決の糸口になるかもしれません。
ページ内リンクは、長文コンテンツの中で読者が目的の情報へ一瞬でたどり着けるようにする仕組みです。目次をクリックすれば該当セクションまでスルスルとスクロールし、途中で迷うことがありません。
この記事では、HTMLで簡単に実装できるページ内リンクの作り方を、初心者の方でも理解できるように丁寧に解説します。WordPressのプラグインを使わず、HTMLの仕組みから理解したい方や、静的サイト・WordPress以外のCMSをお使いの方に最適な内容です。目次からのリンク設定方法、SEOへの影響、スマホでの表示崩れを防ぐコツまで、具体的なコード例を交えてご紹介します。
この記事を読み終える頃には、あなたのWebサイトがもっと使いやすく、読者にも検索エンジンにも評価されるサイトへと生まれ変わるはずです。
ページ内リンク(アンカーリンク)とは?
ページ内リンク(またはアンカーリンク)とは、Webページ内の特定の場所へ直接移動できるリンクのことです。
通常のリンクが別のWebページへ遷移するのに対し、ページ内リンクは同じページ内の指定された位置へスムーズにジャンプします。まるで本の索引のように、読みたい章へ瞬時に移動できる仕組みです。
特にコンテンツの長いページでは、読者が目的の情報に素早くアクセスできるため、ストレスなく読み進められます。
ユーザー体験とSEOにおける役割
ページ内リンクは、ユーザー体験(UX)と検索エンジン最適化(SEO)の両面で重要な役割を果たします。
まず、ユーザー体験の観点から見ると、長文のブログ記事や詳細な商品ページで、読者が探している情報にすぐたどり着けます。これにより満足度が向上し、サイトの離脱率低下にもつながるでしょう。
SEOの観点では、ユーザーの利便性が向上することで、サイトの評価が高まる可能性があります。Googleなどの検索エンジンは、ユーザーにとって価値のあるコンテンツを高く評価するため、ページ内リンクによる使いやすさは間接的にSEOに良い影響を与えます。
また、特定のキーワードで検索した際に、検索結果(SERP)に直接そのセクションへのリンクが表示されることもあります。これによりクリック率の向上にも寄与し、サイト内回遊を促し、コンテンツの深い部分まで読んでもらうきっかけにもなります。
ただ、これは理想論だけではありません。実際にページ内リンクを適切に設置することで、読者が「読みやすい」と感じる瞬間が増え、その積み重ねがサイト全体の評価につながっていくのです。
HTMLでページ内リンクを作成する基本

ページ内リンク(アンカーリンク)は、HTMLの特定の要素に「目印」をつけ、別の場所からその目印へ移動する仕組みです。
ここでは、その基本的な作成方法をステップごとに解説します。
リンク先(ID属性)の設定方法
ページ内リンクで移動したい「目的地」となるHTML要素には、必ずid属性を設定する必要があります。
このid属性の値が、その要素を特定するための「目印」となります。id属性はHTML文書内で一意(ユニーク)である必要があり、同じid名を複数回使用することはできません。
例えば、見出しにIDを設定する場合は次のようになります。
html
<h3 id="section1">セクション1のタイトル</h3>
<p>これはセクション1の本文です。</p>
<div id="image-gallery">
<!-- 画像ギャラリーの内容 -->
</div>
id属性は、h1からh6の見出しタグはもちろん、div、p、sectionなど、ほとんどのHTML要素に設定可能です。
リンク元(aタグとhref属性)の設定方法
次に、設定したid属性を持つ要素へ移動するためのリンクを作成します。
これには、通常のリンクと同じく<a>タグを使用しますが、href属性の値に工夫が必要です。リンク先のid名の前に#(シャープ)記号を付けて記述します。
html
<a href="#section1">セクション1へ移動</a>
<a href="#image-gallery">画像ギャラリーを見る</a>
このように記述することで、クリックすると現在のページ内のid=”section1″やid=”image-gallery”が設定された場所へスクロールして移動します。
シンプルですが、この仕組みを理解しておくと、どんなに長いページでも読者を迷わせることなく案内できるようになります。
具体的なコード例:見出しと本文のリンク
それでは、実際のWebページでよく使われる、目次から各セクションの見出しへリンクするコード例を見てみましょう。
html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ページ内リンクのサンプル</title>
</head>
<body>
<h1>HTMLページ内リンクの作り方</h1>
<!-- 目次部分 -->
<nav>
<h2>目次</h2>
<ul>
<li><a href="#intro">はじめに</a></li>
<li><a href="#feature">主な機能</a></li>
<li><a href="#usage">使い方</a></li>
<li><a href="#summary">まとめ</a></li>
</ul>
</nav>
<!-- 各セクションのコンテンツ -->
<section>
<h2 id="intro">はじめに</h2>
<p>このセクションでは、ページ内リンクの概要について説明します。</p>
<p>ユーザーが長いページを快適に閲覧できるようになります。</p>
</section>
<section>
<h2 id="feature">主な機能</h2>
<p>ページ内リンクは、特定の情報を素早く見つけるのに役立ちます。</p>
<p>目次やフッターから各セクションへ移動できます。</p>
</section>
<section>
<h2 id="usage">使い方</h2>
<p>ID属性とaタグのhref属性を組み合わせて使用します。</p>
<p>具体的な実装方法は上記で解説した通りです。</p>
</section>
<section>
<h2 id="summary">まとめ</h2>
<p>ページ内リンクはユーザビリティ向上に欠かせない機能です。</p>
<p>正しく実装して、より良いWebサイトを目指しましょう。</p>
</section>
</body>
</html>
この例では、<nav>タグ内のリスト項目がそれぞれhref=”#id名”の形式でリンク元となり、<section>タグ内の<h2>要素に設定されたid=”id名”がリンク先となります。
これにより、目次から各セクションへスムーズにジャンプできるようになります。では次に、この仕組みを実際の目次として使う方法を見ていきましょう。
目次からのページ内リンクの実装

長文コンテンツにおいて、目次は読者が求める情報へ素早くたどり着くための重要なナビゲーション要素です。
ここでは、目次とページ内リンクを組み合わせることで、ユーザー体験を向上させる方法を解説します。
目次用HTMLの作成
目次を作成する際は、通常、順序なしリスト(<ul>と<li>)を使ってマークアップします。これにより構造が明確になり、スクリーンリーダーなどの補助技術を利用するユーザーにも内容が伝わりやすくなります。
基本的な目次のHTML構造は以下のようになります。
html
<nav id="table-of-contents">
<h2>目次</h2>
<ul>
<li><a href="#section1">セクション1のタイトル</a></li>
<li><a href="#section2">セクション2のタイトル</a></li>
<li><a href="#section3">セクション3のタイトル</a></li>
</ul>
</nav>
ここで重要なのは、目次全体を<nav>タグで囲むことです。<nav>タグはナビゲーションリンクのセクションであることを示し、アクセシビリティとSEOの観点からも推奨されます。
また、id=”table-of-contents”のようにIDを付与することで、後からスタイルを適用したり、特定の目次を参照したりしやすくなります。
目次と各セクションの紐付け
目次を作成したら、次に目次の各項目とページ内の対応するセクションをページ内リンクで紐付けます。
まず、リンク先のセクションにid属性を設定します。例えば、目次で「セクション1のタイトル」と表示されている項目に対応するページ内の見出しに、id=”section1″を設定します。
html
<h2 id="section1">セクション1のタイトル</h2>
<!-- セクション1のコンテンツ -->
<h2 id="section2">セクション2のタイトル</h2>
<!-- セクション2のコンテンツ -->
<h2 id="section3">セクション3のタイトル</h2>
<!-- セクション3のコンテンツ -->
次に、目次のリンク元となる<a>タグのhref属性に、対応するセクションのid名をシャープ(#)を付けて指定します。
html
<nav id="table-of-contents">
<h2>目次</h2>
<ul>
<li><a href="#section1">セクション1のタイトル</a></li>
<li><a href="#section2">セクション2のタイトル</a></li>
<li><a href="#section3">セクション3のタイトル</a></li>
</ul>
</nav>
このように設定することで、目次のリンクをクリックすると、対応するページ内のセクションまでスムーズにスクロールするようになります。
読者は読みたい情報に迷うことなくアクセスでき、サイトの使いやすさが大幅に向上します。ただ、ここで終わりではありません。次に、SEOへの影響と注意点を確認していきましょう。
ページ内リンクのSEO効果と注意点

ページ内リンクは、ユーザー体験の向上だけでなく、WebサイトのSEOにも良い影響を与える可能性があります。
しかし、誤った使い方をすると逆効果になることもあるため、そのメリットと注意点を理解しておくことが重要です。
SEOにおけるメリット
ページ内リンクは、WebサイトのSEO(検索エンジン最適化)において、主に以下の3つのメリットをもたらします。
ユーザー体験の向上
検索エンジンは、ユーザーにとって価値のあるコンテンツを高く評価します。ページ内リンクは、長文コンテンツにおいてユーザーが目的の情報に素早くアクセスできるようサポートするため、ユーザーの離脱率を下げ、滞在時間を延ばす効果が期待できます。
これは、検索エンジンが「このページはユーザーにとって有益である」と判断する重要な要素となります。
サイト内回遊の促進
ページ内リンクは、ユーザーが現在のページ内の他のセクションへスムーズに移動できるだけでなく、関連する他のページへの誘導としても機能します。これにより、サイト全体の回遊率が向上し、ユーザーがより多くのコンテンツに触れる機会が増えます。
検索エンジンは、サイト内の回遊率が高いWebサイトを、コンテンツが充実している良質なサイトと評価する傾向があります。
SERP(検索結果)での表示
Googleなどの検索エンジンは、特定のキーワードで検索された際に、Webページの特定のセクションへのアンカーリンクを検索結果(SERP)に直接表示する場合があります。
これは「サイトリンク」や「ジャンプ先」として知られ、ユーザーが検索結果から直接、目的の情報にたどり着けるため、クリック率の向上に繋がります。この表示は、ページの構成やコンテンツ内容、そして適切なページ内リンクの設置によって促進されることがあります。
SEOにおける注意点
ページ内リンクは多くのメリットがある一方で、誤った使い方をするとSEOに悪影響を与える可能性もあります。以下の点に注意しましょう。
ID名の重複に注意
HTMLのID属性は、ページ内で一意である必要があります。複数の要素に同じIDを付与してしまうと、ページ内リンクが正しく機能しないだけでなく、検索エンジンがページの構造を正確に理解できなくなる可能性があります。必ず各IDが一意になるように設定しましょう。
過剰な使用は避ける
ページ内リンクを無闇に多用したり、関連性の低いセクションへリンクを貼ったりすることは避けましょう。ユーザーにとって混乱を招くだけでなく、検索エンジンから不自然なリンクと判断され、SEOスパムと見なされるリスクがあります。
本当に必要な箇所に、ユーザーの利便性を考慮して設置することが大切です。では、実際に設置する際のコツを見ていきましょう。
ページ内リンク設置時の実践的なコツ

ページ内リンクを効果的に機能させ、ユーザー体験とSEO効果を最大化するためには、いくつかの実践的なコツがあります。
ここでは、実装時の具体的な注意点や、より高度なテクニックについて解説します。
ID名の命名規則
id属性は、ページ内で一意である必要があり、その命名は非常に重要です。分かりやすく、将来的にメンテナンスしやすいID名を付けるための規則を意識しましょう。
まず、一意性です。同じページ内で同じID名を複数使用することはできません。必ずユニークな名前を付けましょう。次に、意味のある名前を心がけます。リンク先のコンテンツ内容が推測できるような、意味のある名前を付けましょう。例えば、製品概要のセクションであればproduct-overview、連絡先であればcontact-usなどです。
ID名には半角英数字とハイフン(-)を使用するのが一般的です。アンダースコア(_)も使えますが、ハイフンの方がCSSのクラス名などとの整合性が高く推奨されます。また、すべて小文字で統一するのが安全です。大文字と小文字を混在させると、環境によって認識されない場合があるためです。
そして、ID名は数字で始めることはできません。
これらの規則を守ることで、コードの可読性が向上し、将来的な修正や機能追加もスムーズに行えます。
リンク切れを防ぐための工夫
ページ内リンクが機能しない「リンク切れ」は、ユーザー体験を著しく損ねるだけでなく、SEO評価にも悪影響を与える可能性があります。
リンク切れを防ぐために以下の点に注意しましょう。
ID名の変更時は慎重に対応します。リンク先のid属性名を変更する際は、そのIDを参照しているすべてのaタグのhref属性も同時に修正する必要があります。変更漏れがないか、必ず確認しましょう。
また、前述の命名規則に従い、一貫性のあるID名を付けることで、管理がしやすくなり、リンク切れのリスクを減らせます。WordPressなどのCMSを使用している場合、プラグインやブロックエディタの機能で自動的にIDが生成されることもあります。手動でIDを設定する場合は、CMSの仕様を理解しておきましょう。
さらに、サイト全体のリンクを定期的にチェックするツール(例:Google Search Consoleの「クロールエラー」報告、各種SEOツール)を活用し、リンク切れを早期に発見・修正しましょう。
スマホでの表示崩れ対策(CSSテクニック)

スマートフォンなどのモバイルデバイスでページ内リンクが遷移した際に、固定ヘッダーの裏にコンテンツが隠れてしまったり、スクロール位置がずれたりする表示崩れはよく発生します。
これを防ぐためのCSSテクニックを紹介します。
この問題は、リンク先の要素にscroll-margin-topプロパティを設定することで解決できます。このプロパティは、スクロールターゲット要素がビューポートの上端に到達した際に、どれだけのマージン(余白)を確保するかを指定します。
css
/* 固定ヘッダーの高さが60pxの場合 */
html {
scroll-behavior: smooth; /* スムーズスクロールを有効にする場合 */
}
/* リンク先の見出し要素(例: h2, h3)に適用 */
h2[id], h3[id] {
scroll-margin-top: 80px; /* 固定ヘッダーの高さ + 少し余裕を持たせる */
}
上記の例では、h2またはh3タグでid属性が設定されている要素に対して、上部に80pxの余白を持たせてスクロール停止位置を調整しています。80pxの値は、固定ヘッダーの高さに合わせて適宜調整してください。
スムーズスクロールの実装(JavaScript)
ページ内リンクのクリック時に、瞬間的に移動するのではなく、滑らかにスクロールして遷移する「スムーズスクロール」は、ユーザーに心地よい体験を提供します。
HTMLのscroll-behavior: smooth;プロパティを使用する方法が最も簡単ですが、古いブラウザへの対応や、より細かい制御が必要な場合はJavaScriptで実装します。
基本的なJavaScriptでのスムーズスクロールの実装例は以下の通りです。
javascript
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
e.preventDefault(); // デフォルトのアンカーリンク動作を無効化
const targetId = this.getAttribute('href');
const targetElement = document.querySelector(targetId);
if (targetElement) {
window.scrollTo({
top: targetElement.offsetTop - (/* 固定ヘッダーの高さなど */ 0),
behavior: 'smooth' // スムーズスクロールを指定
});
}
});
});
このコードは、href属性が#で始まるすべてのaタグに対して、クリック時にデフォルトの動作をキャンセルし、指定された要素までスムーズにスクロールするように設定します。
targetElement.offsetTopから固定ヘッダーの高さを引くことで、ヘッダーの裏に隠れるのを防ぐことも可能です。CSSのscroll-behavior: smooth;の方が手軽ですが、JavaScriptはより複雑なアニメーションや条件分岐に対応できる点がメリットです。
よくある質問
Q1: ページ内リンクは外部ページにも設定できますか?
はい、できます。外部ページの特定のセクションへリンクする場合は、URLの末尾に#id名を追加します。例えば、<a href="https://example.com/page.html#section1">外部ページのセクション1へ</a>のように記述します。
Q2: ID名に日本語は使えますか?
技術的には可能ですが、推奨されません。一部のブラウザや環境で正しく認識されない可能性があるため、半角英数字とハイフンを使用するのが安全です。
Q3: ページ内リンクがうまく動作しない場合はどうすればいいですか?
まず、リンク元のhref属性とリンク先のid属性の値が完全に一致しているか確認してください。大文字小文字の違いやスペースの有無にも注意が必要です。また、同じID名が複数存在していないかも確認しましょう。
Q4: WordPressでページ内リンクを設定する方法は?
WordPressのブロックエディタ(Gutenberg)では、見出しブロックに自動的にIDが付与されます。リンクを設定したいテキストを選択し、リンクアイコンをクリックして#見出しのidを入力することで設定できます。クラシックエディタの場合は、HTMLモードで手動で設定する必要があります。
Q5: ページ内リンクはSEOに直接的な効果がありますか?
ページ内リンク自体が直接的にランキングを上げるわけではありませんが、ユーザー体験の向上を通じて間接的にSEOに良い影響を与えます。また、検索結果にセクションリンクが表示されることで、クリック率が向上する可能性があります。
まとめ:ページ内リンクでWebサイトを改善しよう
本記事では、HTMLでページ内リンク(アンカーリンク)を作成する基本的な方法から、そのSEO効果、そして実装時の具体的なコツまでを詳しく解説しました。
ユーザーが目的の情報へスムーズにアクセスできるページ内リンクは、Webサイトのユーザビリティを向上させ、結果としてサイトの回遊率を高め、検索エンジンからの評価改善にも繋がります。
ID属性とaタグのhref属性を適切に設定することで、誰でも簡単にページ内リンクを実装できます。また、ID名の命名規則やリンク切れ対策、そしてスマホでの表示崩れを防ぐCSSテクニックを実践することで、より質の高いWebサイトを構築できるでしょう。
ただ、実際の運用では、こういった技術的な実装に加えて、コンテンツ全体の設計やSEO対策、継続的な改善が必要になります。もし「技術的な部分は理解できたけど、実際の運用に不安がある」「SEO効果を最大化するためのコンテンツ戦略を知りたい」と感じているなら、Mirai&のAI人格®Web運用サービスがお役に立てるかもしれません。
AI人格®Web運用サービスでは、こういったページ内リンクの最適な設計から、記事全体のSEO構造、そして継続的なコンテンツ改善まで、一貫してサポートしています。詳しくは以下のページをご覧ください。
ぜひ今日からあなたのWebサイトにページ内リンクを導入し、ユーザーと検索エンジンの両方に優しい、魅力的なサイトへと改善していきましょう。





