実務でお目にかかる事は滅多にないと思いますが、私も過去に1度だけ実装したことがあります。
そしてその時はjQueryを使って実装しましたが、今回はCSSだけで実装する方法をご紹介します。
今回のCSSだけで実装する方法はIEでは使えないので実務ではjQueryを使いましたが、現在はIE対応の必要がほぼないと思うので今後は今回解説する方法で実装していきたいと思います。
(有料になっていたらすいません🙇♂️)
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.
途中からページトップに固定されないのが分かると思います。
以上になります。
【jQuery】特定の位置までスクロールしたら固定ヘッダーの色やサイズを変更する方法【サンプル付きで解説】
続きを見る