アンカーリンクとは

同じページの中の特定の場所へ移動するリンク。href に「#」と id を指定して使う。

概要

別のページへ移動するのではなく、今見ているページの中の特定の場所へ移動するリンクです。 リンク先の要素に id を付けておき、リンクの href にその id を #料金 のように「#」を付けて指定するだけで動きます。 長いページの途中にある章や、フォームの入力欄など、ページ内の場所を示すのに使われます。

別名

表記ゆれ:アンカーリンク、ページ内リンク、ジャンプリンク、anchor link

HTML の <a> 要素(アンカー要素)を使ってページ内の場所を指し示すことから「アンカーリンク」と呼ばれます。

AI への伝え方

「アンカーリンクを付けて」で通じます。固定ヘッダーがある場合、リンク先の見出しがヘッダーの下に隠れてしまうことがあるため、 「ヘッダーに隠れないように余白を付けて」と伝えておくと scroll-margin-top まで含めて実装してもらえます。

似たパーツとの違い

アンカーリンクはあくまで「瞬間的に移動する」仕組みで、なめらかに移動させるには「スムーススクロール」(scroll-behavior: smooth)を別途組み合わせる必要があります。 「目次」は複数のアンカーリンクを見出しの数だけまとめて自動生成したもので、アンカーリンクはその仕組みの最小単位です。

デモ

コード

HTML
<div class="anchor-link-demo">
  <header class="anchor-link-demo__header">
    <span class="anchor-link-demo__logo">Sample Site</span>
    <nav class="anchor-link-demo__nav" aria-label="ページ内リンク">
      <a href="#anchor-link-demo-price">料金</a>
      <a href="#anchor-link-demo-faq">よくある質問</a>
      <a href="#anchor-link-demo-contact">お問い合わせ</a>
    </nav>
  </header>
  <main class="anchor-link-demo__body">
    <p>上のリンクをクリックすると、同じページ内の該当セクションへ移動します。固定ヘッダーに隠れないよう、見出しの上に余白(scroll-margin-top)を確保しています。</p>
    <section id="anchor-link-demo-price">
      <h2>料金</h2>
      <p>料金プランについてのダミーの説明文です。</p>
      <p>さらに説明が続きます。</p>
    </section>
    <section id="anchor-link-demo-faq">
      <h2>よくある質問</h2>
      <p>よくある質問についてのダミーの説明文です。</p>
      <p>さらに説明が続きます。</p>
    </section>
    <section id="anchor-link-demo-contact">
      <h2>お問い合わせ</h2>
      <p>お問い合わせについてのダミーの説明文です。</p>
      <p>これで本文は終わりです。</p>
    </section>
  </main>
</div>
CSS
.anchor-link-demo {
  font-family: sans-serif;
  color: #333333;
  scroll-behavior: smooth;
}

.anchor-link-demo__header {
  position: sticky;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  margin: -24px -24px 20px;
  padding: 14px 24px;
  background: #ffffff;
  border-bottom: 1px solid #e6e6e6;
  z-index: 10;
}

.anchor-link-demo__logo {
  font-weight: bold;
}

.anchor-link-demo__nav {
  display: flex;
  gap: 16px;
}

.anchor-link-demo__nav a {
  color: #333333;
  text-decoration: none;
  font-size: 14px;
}

.anchor-link-demo__nav a:hover {
  color: #0017c1;
}

.anchor-link-demo__body {
  line-height: 1.8;
  min-height: 1400px;
}

.anchor-link-demo__body > p {
  margin: 0 0 24px;
}

.anchor-link-demo__body section {
  margin-bottom: 32px;
}

.anchor-link-demo__body h2 {
  margin: 0 0 12px;
  font-size: 17px;
  /* 固定ヘッダーの高さぶん、見出しの上に余白を確保する */
  scroll-margin-top: 64px;
}

.anchor-link-demo__body p {
  margin: 0 0 12px;
}