スクロールで変化するヘッダーを実装する方法|Sticky+JavaScriptでスタイル切り替え
スポンサーリンク

こんにちは!静岡県浜松市でWEBデザイナーをしています小瀧です。

「ヘッダーを固定しておきたいけど、ページトップとスクロール後では見た目を変えたい」
こんなお悩み、Web制作をしているとよく出てきますよね。

たとえば…
  • ページトップでは透明なヘッダーに
  • スクロールすると白背景+影付きで目立たせる
  • ロゴやメニューのサイズを縮小して省スペース化

このようなスクロール連動でスタイルを変えるUIは、今では定番のデザイン手法です。
今回は、CSSの position: sticky に JavaScript を組み合わせて、シンプルだけど実用的なヘッダースタイルの切り替えを実装してみましょう!

StickyとFixedの違いって?

まず基本のおさらいです。スクロールしても画面上部に固定されるヘッダーは、主に以下の方法で実装されます。

  1. position: fixed; → 常に画面の上部に固定
  2. position: sticky; → スクロール位置に応じて固定・非固定が切り替わる

今回は「スクロールでヘッダーの見た目を変える」ことが目的なので、stickyでスクロール位置を検知し、JavaScriptでclassを切り替える方法がぴったりです。

実装ステップ①:HTMLとCSSでヘッダーを作る

HTML構造

See the Pen
Untitled
by 小瀧賢 (@ekwwawpb-the-styleful)
on CodePen.

このコードでは、スクロール量が50pxを超えたらクラス scrolled を追加し、スタイルを切り替えます。
scrollY はブラウザの縦方向スクロール量を取得するプロパティです。

スポンサーリンク

応用:ロゴサイズやメニューの縮小アニメーション

スクロール後にロゴやメニューのサイズを縮小させる演出も、最近のWebデザインではよく使われています。

See the Pen
Untitled
by 小瀧賢 (@ekwwawpb-the-styleful)
on CodePen.

その他、ナビゲーションの余白や高さ、色味を変えることも簡単にできます。

注意点:パフォーマンスとアクセシビリティ

JavaScriptでスクロールイベントを使うときは、軽量な処理にすることが重要です。
大量のDOM操作をすると、ページの動作が重くなる場合もあるため、次の工夫がおすすめです。

  • 条件分岐をシンプルに
  • イベントリスナーは必要なときだけ追加
  • requestAnimationFrameやthrottleを使って最適化

また、視覚的な変更がある場合は、視覚以外に頼らない設計(WAI-ARIA属性など)にも気を配りたいところです。

まとめ

スクロール位置に応じてヘッダーのスタイルを切り替える方法は、デザイン性と機能性を両立できるUIの工夫です。

  • Sticky+JSでスムーズに切り替え
  • 見た目の変化だけでなく、UXにも貢献
  • シンプルなコードで導入でき、さまざまなデザインに応用可能

ちょっとした実装でも、ユーザーの印象は大きく変わります。
ぜひ、あなたのWebサイトにも「動きのあるヘッダー」を取り入れてみてくださいね!

 

satokotadesignキャンペーン実施中!

浜松市の飲食店限定|ホームページ無料作成サービス
ぶっちゃけ無料相談会!ホームページ制作の悩み話してみませんか?
satokotadesign4周年記念キャンペーン

静岡県浜松市でホームページ制作ならsatokotadesign
静岡県浜松市でホームページ制作ならsatokotadesign

スポンサーリンク
おすすめの記事