CSS Web制作

CSSだけで途中から固定するスティッキーヘッダーを作る方法【サンプル付きで解説】

2022年11月15日

※ 当サイトではアフィリエイト広告を利用しています

ページの途中にある要素をスクロールしていったら上に固定させる方法ってある?

実務でお目にかかる事は滅多にないと思いますが、私も過去に1度だけ実装したことがあります。

そしてその時はjQueryを使って実装しましたが、今回はCSSだけで実装する方法をご紹介します。

今回のCSSだけで実装する方法はIEでは使えないので実務ではjQueryを使いましたが、現在はIE対応の必要がほぼないと思うので今後は今回解説する方法で実装していきたいと思います。

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

CSSだけで途中から固定するスティッキーヘッダーを作る方法(position: sticky;使用)

まず最初にどういうものかご覧下さい(スクロールして下さい)

See the Pen
スティッキーヘッダー
by junpei (@junpei-sugiyama)
on CodePen.

ページの一番上ではなく途中にヘッダーメニューがあり、スクロールしていくとページトップに固定されます。

jQueryを使う方法だとちょっと面倒なのですが、CSSだけで実装する場合はとても簡単に出来ます。

 

コード解説

まずはHTMLです。

<div class="sample-mv">
  <img
    src="画像パス"
    alt=""
  />
</div>
<header class="header">ヘッダー</header>
<section class="section01">セクション1</section>
<section class="section02">セクション2</section>
<section class="section03">セクション3</section>

途中からページトップに固定させたい要素は、スクロールする前の順番通りに書きます。

CSSはこちらです(重要なものだけ)

.header {
  position: -webkit-sticky;
  position:         sticky;
  top: 0;
}

これだけです。

ベンダープレフィックスのposition: -webkit-sticky;がないとSafariでは動かないので、ご注意下さい。

 

注意点(親要素に適用する)

position: sticky;が効かないケースはいくつかあると思いますが、よくありそうな失敗例としては子要素など入れ子要素にスタイルを適用してしまうことです。

こちらはheader内にあるulにスタイルを適用した場合です。

See the Pen
スティッキーヘッダー(失敗例)
by junpei (@junpei-sugiyama)
on CodePen.

途中からページトップに固定されないのが分かると思います。

以上になります。

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!
あわせて読みたい
【jQuery】特定の位置までスクロールしたら固定ヘッダーの色やサイズを変更する方法【サンプル付きで解説】
【jQuery】特定の位置までスクロールしたら固定ヘッダーの色やサイズを変更する方法【サンプル付きで解説】

続きを見る

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-CSS, Web制作