HTMLのコードを見ていると、「#」って何の意味があるの?って思うことありますよね。
リンクの中に書かれていたり、URLの後ろについていたりして、ちょっと不思議に感じた人も多いはずです。
この記事では、そんな「#」の本当の意味と、どうやって使うのかをわかりやすく説明します。
特に、ページの中でジャンプする「ページ内リンク」の仕組みも、あわせてしっかり学べます。
「#」の使い方が分かれば、長いページでも見たいところにすぐ移動できる便利なリンクが作れるようになりますので、ぜひ最後まで読んで参考にしてみてください。
HTMLにおける「#」の意味とは何か?

「#」は何を指しているのか
HTMLで使われる「#(シャープ)」は、主にページ内リンクや特定の要素にジャンプするための記号として使われます。
普段、ウェブサイトを見ていてURLの中に「#○○」といった形を見たことがあるかもしれません。
これは、ある特定の場所へ移動するための目印のような役割をしています。
「#」はその後に続く名前とセットで使われ、ページ内の対応する場所へ移動するために必要です。
以下のような特徴があります。
- 「#」はURLの中で特定の要素を示す
- リンク先のIDと一致する要素がページ内にあるとジャンプする
- ページを再読み込みせずにスクロールで移動する
このように「#」は、ページの中をスムーズに移動するための大切な機能です。
アンカーリンクと「#」の関係性
アンカーリンクは、HTMLでページ内の特定の場所にジャンプできるリンクのことを言います。
そしてこのアンカーリンクを作るときに欠かせないのが「#」の記号です。
「#」は、ジャンプ先のID名と組み合わせて、リンクとして機能します。
具体的には、以下のように使います。
<a href="#section1">この場所へ移動</a>- ジャンプ先の要素には
id="section1"をつける - リンクをクリックすると、同じページ内の指定場所まで移動する
このように、「#」はリンクと組み合わせることで、ページの移動を便利にしてくれる道しるべになります。
URLの「#」の後に続く文字列の役割
「#」の後に続く文字列は、ジャンプ先となるHTML要素のID名を意味しています。
IDとは、各要素に名前をつけるようなもので、この名前に向かってジャンプすることでページ内リンクが実現します。
たとえば、次のような使い方になります。
<div id="profile">プロフィール情報</div>
そしてリンク側では、
<a href="#profile">プロフィールへ移動</a>
という形で記述します。
このようにID名と「#」をセットで使うことで、ページのどこにでも移動できる仕組みになります。
「#」が使われる代表的なケース
「#」はHTMLの中でさまざまな場面で活用されています。
特にユーザーがページ内を素早く移動したいときなどに便利です。
よく使われる場面を以下にまとめます。
- 目次から各セクションへジャンプするリンク
- 「ページの先頭へ戻る」ボタン
- FAQページで質問ごとにジャンプするリンク
- Webアプリ内での画面切り替え
- フォームエラー時に該当項目へスクロールする
このように、使い方を覚えておくとページの使いやすさがぐっと上がるのです。
HTML仕様書での「#」の定義と解釈
HTML仕様において「#」はフラグメント識別子と呼ばれています。
これはURLの中で、文書の特定部分を指し示すために使われる記号であり、正式な役割が定められています。
仕様上、以下のようなルールがあります。
- 「#」の後に続く文字列はIDと一致する必要がある
- IDは同じページ内に1つだけ設定する
- URLの「#」以降はブラウザによって処理され、サーバーには送信されない
このように仕様としてもしっかり決まっており、ただの記号ではなく、意味を持った記述として使われているのです。
ブラウザの挙動と「#」の扱い
ブラウザは「#」を含んだURLを見ると、そのページ内にある一致するIDを探して、自動的にその位置までスクロールします。
これは再読み込みをせずに行われるため、ユーザーにとってはとてもスムーズな体験になります。
ブラウザの動きとしては以下のようになります。
- リンクがクリックされる
- ブラウザが「#」の後ろのIDを確認する
- 該当する要素を見つけて、その場所まで移動する
この処理はほとんどのブラウザで共通しており、ユーザーが何か特別な操作をしなくても自動でジャンプしてくれる便利な機能なのです。
ページ内リンクの仕組みとHTMLタグの使い方

ページ内リンクの基本的な構造
ページ内リンクとは、今見ている同じページの中で、別の場所に移動するためのリンクのことです。
とてもシンプルですが、ページが長くなったときにすぐに必要な情報へジャンプできる便利な仕組みです。
基本の形としては、リンクを作る側とジャンプ先の目印になる部分の2つが必要です。
使い方の基本は以下のとおりです。
- リンク側:
<a href="#目印の名前">リンク文字</a> - ジャンプ先:
<div id="目印の名前">ここにジャンプ</div> - 「#」とID名を組み合わせてリンクをつなぐ
- ページを読み込み直さずにジャンプできる
このように、リンクとジャンプ先がセットになることで、ページ内をスムーズに移動できるのです。
id属性の役割と書き方
HTMLの中でジャンプ先を指定するには、id属性を使います。
このidはページの中でたった一つだけの名前にする必要があります。
idはリンクで使う目印になるので、ページ内リンクには欠かせない存在です。
以下のようなポイントに注意して書きます。
idは一意の名前にする- スペースや記号は使わず、英数字やハイフンが安全
- 見出しや区切りの要素など、わかりやすい場所に設定する
たとえば、次のように書くとページ内リンクのジャンプ先になります。
<h2 id="start">ここがジャンプ先</h2>
このようにidは、リンクとページをつなぐとても大事な目印です。
a href="#id名"の使い方
ページ内リンクを作るときには、aタグを使ってhref属性に「#」をつけたID名を指定します。
この「#」はジャンプ先の場所を示す記号で、ページ内リンクの中核を担っています。
具体的な書き方は次のとおりです。
<a href="#section1">セクション1へ移動</a>
このとき、「#section1」という部分は、ページの中に次のようなIDがついた要素が必要です。
<div id="section1">ここに移動します</div>
このように、リンクとジャンプ先のID名が完全に一致することがとても重要です。
一文字でも違うとリンクが動かなくなってしまいます。
スムーズスクロールの実装方法
ページ内リンクをクリックしたときに、カクンと一気に移動するのではなく、ゆっくりとスクロールして移動するようにすると、見ている人にとってとてもわかりやすくなります。
これをスムーズスクロールといいます。
CSSだけで簡単に設定できる方法があります。
html {
scroll-behavior: smooth;
}
このように書くことで、ページ内リンクをクリックしたときにスムーズに移動するようになります。
- HTMLファイルの中で一度だけ指定すればOK
- すべてのページ内リンクがスムーズに動く
- 追加のJavaScriptは不要
このCSSを使うことで、より自然で見やすいページに変えることができます。
ページ内リンクとSEOの関係性
ページ内リンクはユーザーの使いやすさを高めるだけでなく、検索エンジンにも良い影響を与えることがあります。
適切に使えば、SEO(検索エンジン最適化)にも効果的です。
ポイントは以下のとおりです。
- 見出しごとにリンクをつけると検索エンジンが内容を把握しやすくなる
- 長文ページでも重要な情報に素早くアクセスできる
- 目次とセットで使うと滞在時間が延びやすい
ただし、やりすぎると逆効果になる場合もあるので、必要な場所に適切に使うことが大切です。
複数のページ内リンクを使うときの工夫
ページが長くなってきたときには、複数のページ内リンクを上手に使うことがとても大事です。
ただリンクを増やすだけではなく、見やすく整理された構成が必要になります。
以下のような工夫が効果的です。
- ページの最初に目次を設置する
- 目次の各項目にページ内リンクをつける
- ジャンプ先には必ず対応するIDをつける
- 「トップに戻る」リンクを各セクションに設ける
- リンクの色やスタイルを目立たせる
このような工夫をすることで、見た人が迷わずに情報へたどりつけるページになります。
「#」を活用した効果的なHTML設計のコツ

ユーザー導線を意識したリンク設計
HTMLでページを作るときは、ユーザーがどこからどこへ動くか、どの情報にたどり着きたいかをしっかり考えることが大切です。
ページ内リンクはこの「導線」を作るのにとても便利な道具です。
「#」を使ったリンク設計は、見た人が迷わずに情報を見つけられるようにするためのカギとなります。
効果的な導線を作るためのポイントをいくつか紹介します。
- 重要な情報にはすぐにジャンプできるリンクをつける
- 目次から全てのセクションにリンクを設ける
- 各セクションに戻るリンク(例:トップへ戻る)を配置する
- ボタンやテキストリンクは目立つようにする
- リンク先の内容とリンク文字が一致していること
このように設計すると、ページ全体が使いやすくなり、見やすくてわかりやすい構造になります。
長文ページでの目次との連携方法
記事や説明が長くなるページでは、ページの最初に目次を作っておくことがとても重要です。
目次をクリックすることで、ユーザーが知りたい情報にすぐ移動できるからです。
このときにも「#」を活用したページ内リンクが役立ちます。
目次と連携させるコツは次のとおりです。
- 目次の各項目に
<a href="#id名">形式のリンクを使う - リンク先には
idを設定した見出しを用意する - 目次の順番と実際の見出しの順番を一致させる
- スマホでも見やすいように簡潔な表現にする
- 目次を固定表示にすると使いやすさアップ
このようにすれば、読み手が迷わずに必要な情報をすぐ見つけられるページになります。
アクセシビリティを考慮したアンカーリンク
ページ内リンクを使うときには、すべての人にとって使いやすいように工夫することがとても大切です。
アクセシビリティとは、障がいのある人や年配の人、視覚的なサポートが必要な人でも快適に使えるようにする考え方です。
アクセシビリティに配慮したリンク設計のコツを紹介します。
- リンク文字は「ここをクリック」ではなく、内容がわかるように書く
- キーボード操作だけでも移動できるようにする
- リンク先の要素には
tabindexやroleを設定する - コントラストの高い色でリンクを目立たせる
- スクリーンリーダーでも意味が伝わるようなテキストにする
このような工夫をすることで、すべてのユーザーにやさしいWebページになります。
JavaScriptと組み合わせた動的リンク
「#」を使ったページ内リンクは、HTMLだけでも十分便利ですが、JavaScriptと組み合わせることでさらに動きのあるページにすることができます。
たとえば、クリックでアニメーション付きスクロールをしたり、タブの切り替えをしたりできます。
よくある使い方をいくつか紹介します。
- クリックで滑らかにスクロールさせる
- ページの一部だけを表示・非表示にする
- タブ形式でコンテンツを切り替える
- モーダルウィンドウと連携させる
- URLの「#」を元にページ読み込み時にジャンプする
このように、JavaScriptを活用することで、もっと楽しく便利なページ設計ができるようになります。
モバイル対応を意識したリンク設計
スマートフォンやタブレットで見られることが多い今、モバイルでも快適に使えるリンク設計がとても大切です。
画面が小さくなる分、リンクの見やすさや押しやすさを意識しなければなりません。
モバイル対応のために意識したいポイントはこちらです。
- リンクの文字サイズは大きめにする
- 指でタップしやすいように間隔を広くとる
- スクロールの動きを速すぎず自然にする
- リンクボタンは画面の横幅に合わせて配置する
- 折りたたみメニューやアコーディオンと組み合わせる
こうした工夫をすることで、スマホでも使いやすい、見た人が迷わない設計になります。
「#」を用いたスライドやタブ切り替えの活用
「#」はページ内リンクだけでなく、JavaScriptと組み合わせてタブやスライドなどのインタラクティブな動きにも活用できます。
たとえば、URLの「#」を見て自動的に特定のスライドを表示したり、選択されたタブを開いたりする仕組みが作れます。
以下のような活用例があります。
- タブメニューの切り替えに「#tab1」などを使う
- URLに応じて自動で開くタブを変更する
- スライドコンテンツの現在位置を「#slide3」などで制御する
- 履歴を保持して戻る・進む操作にも対応する
- 動的にコンテンツを切り替えることでユーザーの操作性が上がる
このように、「#」を使えばページ全体が生き生きと動く仕組みを作ることができます。
内部リンクの最適化による離脱率の改善
ユーザーがページに来たあと、すぐに離れてしまうことを「離脱」といいます。
これを減らすには、ページ内やサイト内のリンクを適切に設計することが重要です。
「#」を使った内部リンクは、読みやすさや操作性を上げるのに役立ちます。
離脱率を下げるためのリンク最適化ポイントを紹介します。
- 必要な情報までクリック数を減らす
- リンク切れやジャンプミスをなくす
- 関連情報へ自然につなげるリンクを用意する
- 読み終わった後に次の行動を促す導線を作る
- ナビゲーションを見やすく配置する
このように、ページ内リンクの最適化によって、ユーザーが長く滞在しやすいページを作ることができます。
よくある質問とトラブルシューティング

リンク先に飛ばないときの原因は?
ページ内リンクを作ったのに、クリックしても指定した場所に移動しないことがあります。
これはよくある問題ですが、いくつかの原因が考えられます。
リンク先に飛ばない場合は、まず以下のポイントをチェックしてみましょう。
確認すべき主な原因は次のとおりです。
href="#〇〇"の〇〇が間違っている- ジャンプ先の要素に
id="〇〇"がついていない idの値にスペースや記号が含まれている- JavaScriptでリンクの動作が上書きされている
- HTML内でIDが重複して使われている
このように、ほとんどの原因はID名のミスや設定忘れに関係しています。
まずはリンクとIDがちゃんと一致しているかを確認することが大切です。
「#」がURLにあるとSEOに悪影響?
URLに「#」が含まれていると、検索順位に悪影響があるのではないかと心配する人がいます。
ですが、通常のページ内リンクで使われる「#」は、検索エンジンの評価には直接関係しません。
安心して使って問題ありません。
ただし、一部の使い方には注意が必要です。
- 「#」付きURLは同じページとみなされる
- 違うIDを付けてもGoogleでは1つのURLと判断される
- JavaScriptで動的に表示内容を切り替える場合は評価対象外になることもある
正しく使えばSEOへの影響はほとんどないので、使い方を理解して安心して使うことが大切です。
リンク先がずれる・位置がおかしい場合の対応
リンクは動いているのに、ジャンプした位置が少しズレることがあります。
特に、見出しの途中や画面の端に見えない位置に止まってしまうことがあります。
これは主にCSSや固定ヘッダーの影響で起こります。
このようなズレを防ぐには、次の対策が有効です。
- ジャンプ先の要素の前に空白を設ける
scroll-margin-topを使ってスクロール位置を調整する- 固定ヘッダーの高さを考慮してスクロール位置を調整する
- JavaScriptで移動位置を計算して制御する
特にscroll-margin-topはとても便利で、以下のように使えます。
h2 {
scroll-margin-top: 80px;
}
この設定で、ヘッダーの下に隠れてしまうのを防ぐことができます。
同一ページ内に同じidが複数あるとどうなる?
HTMLでは、idは1つのページの中で1回しか使ってはいけません。
もし同じidが複数の場所で使われていると、ページ内リンクがどこに飛んでいいか分からなくなり、意図しない動作になる可能性があります。
同じidがあると起きることは次のとおりです。
- 最初に出てきたIDの場所にしかジャンプしない
- JavaScriptでの操作が正しく動かない
- ブラウザによって挙動が不安定になる
- HTMLの検証ツールでエラーが出る
idは必ず一意に設定し、ページ内で重複しないようにすることが大切です。
スクロール位置が見えにくい時の解決策
ページ内リンクで移動した先が画面の一番上にぴったりくっついてしまい、見づらくなることがあります。
とくに見出しなどが上に張り付きすぎると、読みにくくなってしまうため、調整が必要です。
見やすくする方法としては、以下のような対策があります。
- ジャンプ先の前に余白用のダミー要素を入れる
scroll-padding-topやscroll-margin-topをCSSで設定する- リンク先に少し余裕を持たせるJavaScriptを使う
たとえば、CSSで以下のように書くことで、スクロール後の位置に余裕を持たせることができます。
html {
scroll-padding-top: 100px;
}
このように、ちょっとした調整で大きく見やすさが変わるのです。
外部リンクとページ内リンクを混在させるには
1つのページの中だけでなく、他のページへのリンク(外部リンク)も一緒に使いたい場合があります。
たとえば、他のページにある特定の場所へジャンプさせるには、外部リンクと「#」を組み合わせる方法が便利です。
やり方の基本は以下の通りです。
<a href="otherpage.html#section2">のように使う- 他のページにある要素にも
idを設定しておく - リンク先のページが完全に読み込まれてからジャンプする
- ブラウザの履歴にもURLとして記録される
このようにすれば、別ページの特定セクションに一発で移動できるようになります。
JavaScriptで「#」の動作を制御する方法
ページ内リンクの動作をカスタマイズしたい場合、JavaScriptを使えば、より細かく制御することが可能です。
たとえば、スクロールの速度や移動位置を調整したり、特定の条件がそろったときだけリンクを動かすなどの設定ができます。
基本的な実装例は次の通りです。
document.querySelectorAll('a[href^="#"]').forEach(link => {
link.addEventListener('click', e => {
e.preventDefault();
const target = document.querySelector(link.getAttribute('href'));
target.scrollIntoView({ behavior: 'smooth' });
});
});
このコードを使えば、すべてのページ内リンクがスムーズに動くようになり、見た人にとって気持ちのいい操作ができるようになります。
まとめ

HTMLの「#」は、ページ内リンクや特定の場所へのジャンプに使う、とても便利で大切な記号です。
正しく使えば、見る人にとってわかりやすく、使いやすいページを作ることができます。
- 「#」はページ内リンクの目印として使う
- リンクにはhrefで「#id名」を指定する
- ジャンプ先には一意なidをつける
- スムーズスクロールやアクセシビリティも考える
- JavaScriptと組み合わせて応用もできる
ぜひ今回の内容をもとに、読みやすくて親切なページを作ってみましょう。



