用語解説

position:stickyとは?スクロールで追従するヘッダーの基礎

下にスクロールしてもヘッダーが画面上部に貼り付いて見える。あの追従するヘッダーはCSSのposition:stickyで作れます。この記事では、stickyが「途中まで普通、ある位置から固定」という独特のふるまいをする仕組みを、初めての人にもわかるように整理します。

position:stickyとは何か

position:stickyは、要素を「ふだんは通常どおりに配置し、スクロールでしきい値に達したらその位置に固定する」という動きをさせるCSSの指定です。relativeとfixedの中間のような性質を持ちます。

代表的な使い道が、ページ上部に貼り付くナビゲーションや、表の見出し行をスクロール中も見えるようにする用途です。読み進めても重要な要素が視界から消えない、というメリットがあります。

「途中まで通常、以降は固定」の仕組み

stickyを使うときは、固定し始める位置をtop(またはbottomなど)で指定します。たとえばtop:0と書くと、その要素が画面の一番上に達した瞬間からそこに貼り付きます。

それまでは通常のフローの中に普通に存在しているので、スクロールに従って一緒に上がっていきます。しきい値に到達すると、そこで止まって固定表示に切り替わる、というのがstickyの基本的な挙動です。

固定は親要素の範囲内に限られます。親の領域を抜けると、要素は一緒にスクロールアウトしていきます。この親との関係が、後述の「効かない」問題に深く関わります。

実務ではどこで関係する?

position:stickyは言葉の意味だけ覚えても、HTML共有の判断にはつながりません。実務では「表示に関係する話か」「検索に関係する話か」「アクセス制限に関係する話か」を分けて考えると整理しやすくなります。

position:stickyについて迷ったら、相手が安全に開けるか、検索に出してよいか、ブラウザや環境差で壊れないかを順番に確認します。用語理解は、その判断を早くするための道具として使います。手順が決まったら、HTML/ZIPをアップロードして共有URLを発行し、相手に確認してほしい観点と期限を添えて送ります。

  • 表示の話: HTML/CSS/JS、パス、ブラウザ互換性を確認する
  • 検索の話: noindex、canonical、sitemap、robots.txtの役割を分ける
  • 制限の話: URL共有、パスワード、メール認証、会社ドメイン認証を混同しない
  • 運用の話: 期限、差し替え、削除、共有メッセージまで決める

fixedとの違い

似た指定にposition:fixedがありますが、fixedは最初から常に画面の特定位置に固定され続けます。一方stickyは、スクロールがしきい値に届くまでは普通に流れ、そこから固定に切り替わる点が異なります。

「最初は本文の流れの中にあってほしいが、上部に来たら貼り付いてほしい」という自然な追従を求めるなら、stickyが適しています。

追従ヘッダーを作る手順

シンプルな追従ヘッダーを作る流れを順番に並べます。まずは1つのヘッダーで試すのがおすすめです。

  1. ヘッダー要素を用意し、ページ上部に置く
  2. そのヘッダーにposition:stickyを指定する
  3. 固定し始める位置としてtop:0を指定する
  4. 下に十分な高さのコンテンツを置き、スクロールできる状態にする
  5. スクロールして、上部に達したら貼り付くことを確認する
  6. 重なり順が気になる場合はz-indexで前面に出す

効かないときの確認ポイント

stickyが効かない原因で多いのは、topなどのしきい値を指定し忘れているケースです。位置の基準がないと固定が始まりません。

もうひとつ多いのが、親要素にoverflowの指定があってスクロールの基準がずれている、あるいは親の高さが足りずすぐにスクロールアウトしてしまうケースです。stickyは親の範囲内でしか固定されないため、親子の関係を見直すと解決することがよくあります。

追従の見え方を実機で確認する

追従ヘッダーは、スクロール量や画面の高さによって見え方が変わります。特にスマートフォンとパソコンで印象が違うため、実際の端末で確かめるのが確実です。

ギガサイト便を使えば、作りかけのHTMLをドロップして発行されたURLをスマホで開くだけで、手元の実機での追従の様子を確認できます。表示はCDNのエッジ配信で速く、QRコードの配布にも対応しているので、複数の端末でさっと開いて挙動を見比べる用途に便利です。

よくある質問

position:stickyとfixedはどう違いますか?

fixedは最初から常に画面の特定位置に固定され続けます。stickyはスクロールがしきい値に達するまでは通常の流れに沿って動き、そこから固定に切り替わります。本文の流れの中から自然に貼り付かせたいときはstickyが適しています。

stickyが効かないのはなぜですか?

topなどのしきい値を指定し忘れている、または親要素のoverflow指定や高さの都合でスクロールの基準がずれている、といった原因が多いです。stickyは親の範囲内でしか固定されないため、親子関係を見直すと解決することがよくあります。

表の見出しを固定するのにも使えますか?

はい。見出し行にstickyとtop:0を指定すると、スクロール中も見出しが上部に残せます。長い表で「今どの列が何だったか」を見失いにくくなる、よく使われる用途のひとつです。

ヘッダーが他の要素の下に隠れるときは?

重なり順の問題が考えられます。固定したいヘッダーにz-indexを指定して前面に出すと、後続のコンテンツの下に潜り込まずに表示できます。

実務ではどこで関係する?はHTML共有で必ず理解しておく必要がありますか?

細かな仕様を暗記する必要はありません。ただし、検索に出るか、閲覧者を制限できるか、表示が崩れないかに関わる用語は、共有前の判断材料として押さえておくと安全です。

関連記事

用語解説

Flexboxとは?要素を横並び・縦並びに整えるCSSの基礎

ボタンやメニューを横に並べたいのにうまくいかないと感じているCSSの初心者へ。Flexboxの考え方と主要なプロパティの使い方を、縦・横の整列が思い通りになるよう基礎からシンプルに説明します。

4分で読める
用語解説

CSSアニメーションとは?keyframesで動かす仕組みの基礎

JavaScriptを使わずCSSだけでロゴを光らせたりローダーを回したりしたい人向けに、@keyframesとanimationプロパティの関係を基礎から整理。繰り返しや遅延など、動きをコントロールする主なオプションまで解説します。

5分で読める
用語解説

ダークモードとは?暗い配色に切り替える仕組みの基礎

端末のダークモード設定に連動してサイトの配色を切り替えるにはprefers-color-schemeメディアクエリを使います。CSSカスタムプロパティと組み合わせた実装パターンと、ユーザーが手動で切り替えられるようにする方法も含めて解説します。

5分で読める
用語解説

ミニファイ(minify)とは?ファイル圧縮の基礎

HTMLやCSS、JSのファイルを軽くして表示速度を上げるミニファイが、何をどう削っているのかを知りたい人向けに、仕組みと効果、デバッグ時の注意点をやさしく整理します。

4分で読める
用語解説

HTTPヘッダーとは?リクエストとレスポンスの付帯情報

ブラウザとサーバーがやり取りする際、本文とは別に「メモ書き」として添付されるHTTPヘッダー。キャッシュ指定や認証など用途ごとに主要なヘッダーの役割を具体例とともに整理しているため、ログ解析や設定作業で迷いにくくなります。

4分で読める
「用語解説」の記事をもっと見る →