HTML&CSS

HTMLで固定ヘッダーを作るならこれ!3つの簡単な方法を詳しく紹介

htmlの固定ヘッダーを考える

HTMLでヘッダーを固定する方法は、ウェブサイトの利便性を大きく向上させるテクニックです。
固定ヘッダーを使うと、ユーザーはページをどれだけスクロールしても、ナビゲーションメニューやタイトルにすぐアクセスできます。

この記事では、「html ヘッダー 固定」をキーワードに、初心者向けに実装方法を解説します。固定ヘッダーを使う利便性やユーザー体験の向上についても触れつつ、3つの異なる固定パターンを紹介します。

パターン1: 最初から固定されているヘッダー

最もシンプルな方法で、ページ読み込み時からヘッダーが画面上部に固定されるように設定します。
スクロールしても常に表示され続けます。

ワンコ
ワンコ

See the Pen Untitled by kokusyo (@kokusyo) on CodePen.

<header id="header">
	<div class="header-container">
		<div class="logo">
			<img src="https://web-create-kokusyo.com/wp-content/uploads/2024/11/25127059-4.png" alt="サイトロゴ">
		</div>
		<nav>
			<a href="#service">サービス</a>
			<a href="#faq">FAQ</a>
			<a href="#about">会社概要</a>
			<a href="#contact">お問い合わせ</a>
			<a href="#blog">ブログ</a>
		</nav>
	</div>
</header>
/* ヘッダーのスタイル */
header {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	background-color: #222;
	color: #fff;
	box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
	z-index: 1000;
	transform: translateY(-100%);
	transition: transform 0.3s ease;
}

/* 中央寄せのラッパー */
.header-container {
	display: flex;
	align-items: center;
	justify-content: space-between;
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 20px;
	height: 70px;
}

/* ロゴのスタイル */
.logo,
.logo img {
	height: 100%;
}

/* ナビゲーションメニュー */
nav {
	display: flex;
	gap: 20px;
}

nav a {
	color: #fff;
	text-decoration: none;
	font-size: 1em;
	transition: color 0.3s ease;
}

nav a:hover {
	color: #ff6347;
}

このパターンのポイント

ワンコ
ワンコ

ヘッダーはposition: fixed;で固定しよう

ヘッダーを画面に固定するには、position: fixed;を使用します。
この際、width:100%を指定しないと、画面幅いっぱいになりません。

ヘッダーの高さ分、margin-toppadding-topを指定しよう

ヘッダーにposition: fixed;を指定すると、ヘッダーが画面上に固定され、下のコンテンツがその分ずれてしまいます。

このずれを防ぐために、ヘッダーの高さ分の余白を確保するように、padding-topmargin-topを設定しましょう。この余白は全ページにわたって必要となるため、メインコンテンツを囲む要素にまとめて適用するのが効率的です。

固定ヘッダーの高さを指定するイメージ

パターン2: スクロールで上から表示されるヘッダー

このパターンでは、ページを少しスクロールすると、ヘッダーが上からスライドして表示されます。ユーザーがページを下にスクロールした後、上方向にスクロールするとヘッダーが再表示されるため、自然な操作感を提供します。

See the Pen Untitled by kokusyo (@kokusyo) on CodePen.

/* ヘッダーのスタイル */
header {

~ 省略 ~

	/* 初期状態では画面枠外に隠す */
	top: 0;
	left: 0;
	width: 100%;
	transform: translateY(-100%);
	transition: transform 0.3s ease;
}

/* 「show」クラスを付与すると画面に表示される */
header.show {
	transform: translateY(0);
}
const header = document.getElementById('header');

window.addEventListener('scroll', () => {
    // 100ピクセル以上スクロールされた場合に「show」クラスを付与
	if (window.scrollY > 100) {
	header.classList.add('show');
	} else {
	header.classList.remove('show');
	}
});

このパターンのポイント

ワンコ
ワンコ

初期状態では画面外にヘッダーを隠す

初期状態では、top: 0; transform: translateY(-100%);を指定することで、画面の上部にヘッダーを隠します。

スクロールで、クラスを付与

JavaScriptのスクロールイベントを設定。
今回は100pxスクロールしたら、「show」クラスを付与。(100の部分は自由に設定してください)

window.addEventListener('scroll', () => {
    // 100ピクセル以上スクロールされた場合に「show」クラスを付与
	if (window.scrollY > 100) {
	header.classList.add('show');
	} else {
	header.classList.remove('show');
	}
});

「show」クラスにはtransform: translateY(0);が設定されているので、画面外に戻ります。

画面外に隠すヘッダーと出てきた状態

パターン3: スクロールで色やサイズを変更する

このパターンでは、スクロールが進むと背景色が変わり、高さも少し縮まります。視覚的な変化が加わり、よりユーザーにとって認識しやすくなります。

See the Pen Untitled by kokusyo (@kokusyo) on CodePen.

/* ヘッダーのスタイル */
header {
	~ 省略 ~
	background-color: #222;
	transition: background-color 0.3s ease;
}

header.scroll {
	background-color: #a8a6a6;
}

.header-container {
	~ 省略 ~
	height: 70px;
	transition: height 0.3s ease;
}

header.scroll .header-container {
	height: 60px;
}
const header = document.getElementById('header');

window.addEventListener('scroll', () => {
	if (window.scrollY > 100) {
	header.classList.add('scroll');
	} else {
	header.classList.remove('scroll');
	}
});

このパターンのポイント

ワンコ
ワンコ

「scroll」クラス付与でデザインを変更する

今回は、「scroll」クラスを付与することで、デザインや高さを変更しています。
ちなみに、javaScriptは付与するクラスが違うだけで、先ほどと同じ処理です。

transitionでアニメーションをつける

ヘッダーのデザインや高さを変更する場合は、transitionプロパティを付与して緩やかに変化するようにします。
その際は、しっかり変化させたいプロパティも指定します。

transition: background-color 0.3s ease;

完全無料スクールPR

これから始めるWEB制作

初心者のための【ZeroPlus Gate】

ワンコ
ワンコ

「ZeroPlus Gate」は、30日間限定完全無料で学べるプログラミングスクールです。

その名の通り、WEB制作を「0」からスタートする初心者に特化したカリキュラムを提供しています。
分かりやすい動画講座を通じて、プログラミング未経験者でもスムーズにWEB制作を学ぶことが可能です。

さらに、わからない点があれば何度でも質問し放題!独学で行き詰まってしまった方にも最適な環境が整っています。
加えて、カウンセリングを通じて、将来的なキャリア設計や学習の進め方についてもアドバイスを受けることができます。

ワンコ
ワンコ

私自身、このスクールを受講しましたが、正直なところ「なぜこれが無料なのか?」と驚くほど充実したカリキュラムでした。独学でWEB制作を学んでいた頃と比べ、理解度が圧倒的に向上したと実感しています。

有料スクールへの勧誘も一切なく、安心して気軽に学習を始められるのが魅力的です。

ポイント

完全無料で利用できる(マジで無料です)
30日間限定でWeb制作の動画講座を見放題
専属メンターが面談で学習をサポート
・Slackで講師に何回でも質問できる
しつこい勧誘もなし!

\ 完全無料で学んでみる /

無料受講はこちらから

-HTML&CSS
-,