追従ヘッダー:CSSのposition: stickyとスクロールで隠す方法

追従ヘッダーガイド

追従ヘッダーのCSS:position sticky、縮小、スクロールで隠す | We.Inc

position: stickyで追従ヘッダーを作り、縮小とスクロールで隠す動きを追加します。ライブデモ、scroll-marginによるアンカーのオフセット、z-indexの修正、小さなReactフックを紹介します。

ヘッダーにposition: stickyとtop: 0、さらに背景とz-indexを指定すると、ページをスクロールしても上部に固定されます。追従するのは親要素の中だけで、overflowが設定された祖先要素があると止まることがあります。スクロールで隠れるヘッダーにするには、スクロールのリスナーからtranslateYのクラスを切り替えます。

ヘッダーにおけるstickyとfixedの違い

追従ヘッダーはCSS 1行で済む、うまくいかなくなるまでは。ヘッダーが追従しない、アンカーリンクの移動先がヘッダーの下に隠れる、ドロップダウンがコンテンツの裏に回り込む、といった問題が起こります。このページでは、そのCSS 1行と、それぞれの失敗への対処を解説します。通常、縮小、非表示の各モードを切り替えられるライブのスクロールデモ付きです。

よくある質問

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

よくある原因は3つです。top: 0のようなインセットの値がない、親要素がヘッダーの直後で終わっていて追従する余地がない、またはvisible以外のoverflowを持つ祖先要素があり、それが追従の基準になっている、のいずれかです。この順番で確認しましょう。

ヘッダーはstickyとfixedのどちらにすべきですか?

stickyのほうがシンプルです。レイアウト内の位置を保つので、ページ上部でコンテンツがヘッダーの下に潜り込むことがありません。fixedはヘッダーを全画面のヒーローの上に重ねたい場合に便利ですが、その場合はページへのパディングを自分で追加します。

アンカーリンクの移動先が追従ヘッダーの下に隠れないようにするには?

スクロールするコンテナ(通常はhtml)に、ヘッダーの高さと同じscroll-padding-topを追加します。特定の移動先だけなら、見出し自体にscroll-margin-topを付ける方法もあります。

ドロップダウンがページのコンテンツの裏に表示されるのはなぜですか?

sticky配置はスタッキングコンテキストを作るので、ヘッダー内の要素はその中でしか重なり順を決められません。ドロップダウンではなくヘッダー自体に、後続のコンテンツより高い重なり順(例:z-index: 50)を付けましょう。

stickyの本当の仕組み

下スクロールで隠し、上スクロールで表示

レイアウトを崩さずに縮小する

基本の追従ヘッダー

スクロールするページ内の追従ヘッダー

フレームをスクロールしてください。ヘッダーは上部にとどまり、scroll-padding-topのおかげでアンカーリンクの移動先がヘッダーの下で止まります。

下スクロールで隠し、上スクロールで表示

非表示状態と縮小状態のCSS

スクリプトはデータ属性を設定するだけです。見た目の変化はすべてCSSにあります。

Reactフック:useHideOnScroll

ヘッダーにデータ属性として展開できる2つの真偽値を返します。8pxのしきい値で小さなぶれを無視します。

追従ヘッダーの落とし穴

症状と対処法

通常の追従

縮小

スクロールで隠す

ライブスクロールデモ

通常、縮小、スクロールで隠すを切り替えてから、ボックス内をスクロールしてください。

ヘッダーのモード

スクロールできるデモページ

ブランド

下にスクロールしてから、少し上に戻してください。

ヘッダーの状態:表示

ヘッダーの状態:表示、スクロール済み

ヘッダーの状態:非表示

ヘッダーの状態:非表示、スクロール済み

無料で始める · クレジットカード不要

関連: ガイド|Webマーケティングと集客を学ぶ

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る