HTMLページ内リンク完全解説!10の使い方・対処法・カスタマイズ例

ページ内リンクを使用したウェブページのサンプルイメージHTML
この記事は約9分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

●HTMLページ内リンクとは

HTMLページ内リンクとは、同一ページ内の特定の場所に飛ぶことができるリンクのことです。

これにより、長いページでも読者が素早く目的の場所に移動できます。

○基本的な使い方

まずは、HTMLページ内リンクの基本的な使い方を説明します。

<a href="#section1">セクション1へ</a>
...
<section id="section1">ここがセクション1です。</section>

このコードでは、<a>タグのhref属性に#section1と指定することで、同じページ内のid="section1"が指定された<section>要素にリンクします。

○アンカーリンクの作成方法

ページ内リンクを作成するには、アンカーリンクと呼ばれるリンクを使用します。

これは、<a>タグを使用して作成されます。

<a href="#target">リンク先へジャンプ</a>
...
<div id="target">ここがリンク先です。</div>

このコードでは、<a>タグのhref属性に#targetを指定し、id="target"が指定された<div>要素にリンクするようになります。

○スムーズスクロールの実装

ページ内リンクをクリックしたときに、スムーズにスクロールしてリンク先に移動する方法を紹介します。

これには、JavaScriptやjQueryを使って実装します。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Smooth Scroll</title>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(function() {
      $('a[href^="#"]').on('click', function(event) {
        event.preventDefault();
        var target = $(this.hash);
        $('html, body').animate({
          scrollTop: target.offset().top
        }, 800);
      });
    });
  </script>
</head>
<body>
  <a href="#section2">セクション2へ</a>
  ...
  <section id="section2">ここがセクション2です。</section>
</body>
</html>

このコードでは、jQueryを使ってスムーズスクロールを実現しています。

ページ内リンクがクリックされたときに、animate()関数を使ってスクロール位置を変更しています。

●飛ばないリンクの対処法

ページ内リンクが正常に動作しない場合の対処法を紹介します。

○リンク先のID確認

まず、リンク先の要素にid属性が正しく指定されているか確認してください。

<a>タグのhref属性に指定された値と、リンク先要素のid属性の値が一致している必要があります。

○リンクのタイプミスチェック

タイプミスが原因でリンクが飛ばないことがあります。

<a>タグやリンク先要素のid属性の値を見直し、正しい値が設定されているか確認してください。

○ブラウザの問題

ブラウザによっては、ページ内リンクが正常に動作しないことがあります。

異なるブラウザでページを確認して、リンクが正常に動作するか確認してください。

●注意点

ページ内リンクを使用する際の注意点を紹介します。

○リンク先の見た目

リンク先が見やすい場所であることが重要です。

リンク先の要素に適切な見出しやスタイルを適用して、リンク先が目立つように工夫しましょう。

○ページ内リンクの量

ページ内リンクが多すぎると、読者にとって混乱を招くことがあります。

適切な量のリンクを設定し、読者が迷わないような構成にしましょう。

○SEOへの影響

ページ内リンクは、適切に使用することでSEOにも良い影響を与えますが、使いすぎると逆効果になることがあります。

適切なバランスでリンクを設定しましょう。

●カスタマイズ方法

ページ内リンクのカスタマイズ方法を紹介します。

○カスタムスクロールバー

スクロールバーのデザインをカスタマイズして、ページ内リンクをより魅力的に見せることができます。

CSSを使って、スクロールバーのデザインを変更しましょう。

<style>
  ::-webkit-scrollbar {
    width: 12px;
  }
  ::-webkit-scrollbar-track {
    background-color: #f5f5f5;
  }
  ::-webkit-scrollbar-thumb {
    background-color: #888;
  }
  ::-webkit-scrollbar-thumb:hover {
    background-color: #555;
  }
</style>

このコードでは、WebKitブラウザ向けにスクロールバーのデザインをカスタマイズしています。

○リンクのデザイン変更

ページ内リンクのデザインを変更して、目立たせることができます。

CSSを使って、リンクの色や装飾を変更しましょう。

<style>
  a {
    color: #0066cc;
    text-decoration: none;
  }
  a:hover {
    color: #ff3366;
    text-decoration: underline;
  }
</style>

このコードでは、リンクの色とマウスオーバー時の装飾を変更しています。

○リンク先の表示位置調整

リンク先の表示位置を調整して、リンクをクリックした際の見た目を改善できます。

CSSを使って、リンク先要素の位置を調整しましょう。

<style>
  .section {
    position: relative;
    padding-top: 50px;
    margin-top: -50px;
  }
</style>
...
<section id="section3" class="section">ここがセクション3です。</section>

このコードでは、sectionクラスにpadding-topmargin-topを指定して、リンク先の表示位置を調整しています。

●応用例

ページ内リンクの応用例を紹介します。

○目次の作成

ページ内リンクを使って、記事の目次を作成することができます。

目次をクリックすると、対応するセクションにスクロールして移動します。

<nav>
  <ul>
    <li><a href="#section1">セクション1</a></li>
    <li><a href="#section2">セクション2</a></li>
    <li><a href="#section3">セクション3</a></li>
  </ul>
</nav>
...
<section id="section1" class="section">ここがセクション1です。</section>
<section id="section2" class="section">ここがセクション2です。</section>
<section id="section3" class="section">ここがセクション3です。</section>

このコードでは、<nav>要素内に目次リストを作成し、ページ内リンクで各セクションに移動できるようにしています。

○アコーディオンメニュー

ページ内リンクを使って、アコーディオンメニューを作成することもできます。

アコーディオンメニューは、クリックするとコンテンツが表示されるようなインタラクティブなメニューです。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Accordion Menu</title>
  <style>
    .accordion {
      cursor: pointer;
    }
    .content {
      display: none;
    }
  </style>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script>
    $(function() {
      $('.accordion').on('click', function() {
        $(this).next('.content').slideToggle();
      });
    });
  </script>
</head>
<body>
  <h3 class="accordion">Section 1</h3>
  <div class="content">Content for section 1...</div>
  <h3 class="accordion">Section 2</h3>
  <div class="content">Content for section 2...</div>
  <h3 class="accordion">Section 3</h3>
  <div class="content">Content for section 3...</div>
</body>
</html>

このコードでは、jQueryを使ってアコーディオンメニューを実現しています。

.accordionクラスがクリックされると、隣接する.contentクラスの要素が表示されるようにしています。

まとめ

ページ内リンクは、ウェブページのナビゲーションを向上させ、読者の利便性を高める効果があります。

アンカーリンクを使用して簡単にページ内リンクを作成し、カスタマイズや応用例を活用して、魅力的なウェブページを作りましょう。