カテゴリ: CSS 更新日: 2026/06/27

ハンバーガーメニューの表示切替を完全ガイド!スマホ対応のレスポンシブCSS

ハンバーガーメニューの表示切替方法
ハンバーガーメニューの表示切替方法

先生と生徒の会話形式で理解しよう

生徒

「スマホサイトでよく見る、三本線のアイコンを押すとメニューが出てくる仕組みってどう作るんですか?」

先生

「あれは『ハンバーガーメニュー』と呼ばれるものです。CSSのメディアクエリを使って、パソコンでは横並び、スマホでは隠しておくという切り替えを行っているんですよ。」

生徒

「パソコンの時は普通に見えていて、スマホの時だけ隠す……そんな魔法みたいなことができるんですね!」

先生

「そうなんです。まずは基本となる表示と非表示の切り替え方法から一緒に見ていきましょう!」

1. ハンバーガーメニューとは?スマホ対応に必須の知識

1. ハンバーガーメニューとは?スマホ対応に必須の知識
1. ハンバーガーメニューとは?スマホ対応に必須の知識

ハンバーガーメニューとは、スマートフォンのような画面幅が狭いデバイスで、ナビゲーションメニューをスッキリ収納するために使われるボタンのことです。三本の横線が重なった形がハンバーガーに見えることからその名がつきました。パソコンの広い画面ではメニューを横に並べて表示できますが、スマホでは画面を圧迫してしまうため、普段は隠しておき、ボタンを押した時だけ表示させる工夫が必要になります。

この仕組みを実現するには「レスポンシブデザイン」という技術を使います。これは、一つのWebサイトをパソコン、タブレット、スマートフォンといった異なる画面サイズに合わせて、自動で見やすく調整する仕組みのことです。プログラミング未経験の方でも、CSSの基本的なルールを覚えれば、驚くほど簡単にメニューの出し入れができるようになります。

2. メディアクエリでデバイスごとに表示を分ける方法

2. メディアクエリでデバイスごとに表示を分ける方法
2. メディアクエリでデバイスごとに表示を分ける方法

メニューの表示切り替えで主役になるのが「メディアクエリ」というCSSの命令です。これは「もし画面の幅が〇〇px以下だったら、この命令を実行してね」という条件付きの指示書のようなものです。メディアクエリを使うことで、「パソコンではメニューを表示し、三本線ボタンを隠す」「スマホではメニューを隠し、三本線ボタンを表示する」という正反対の指示を同時に出すことができます。

ここで重要な単語が「display: none;(ディスプレイ:ノーン)」です。これは、指定した要素を画面上から完全に消し去る命令です。逆に表示させたい時は「display: block;」などを使います。この二つを、画面の横幅に合わせてパチパチとスイッチのように切り替えるのが、ハンバーガーメニューの基本原理です。


<style>
/* パソコンではメニューを表示し、ボタンを隠す */
.nav-menu {
    display: block; /* 表示する */
    background: #f0f0f0;
    padding: 10px;
}
.btn-burger {
    display: none; /* 隠す */
}

/* 画面幅が600px以下の時(スマホ向け) */
@media (max-width: 600px) {
    .nav-menu {
        display: none; /* メニューを隠す */
    }
    .btn-burger {
        display: block; /* 三本線ボタンを表示する */
        font-size: 30px;
        cursor: pointer;
    }
}
</style>

<div class="btn-burger">☰</div>
<nav class="nav-menu">
    ホーム / サービス / お問い合わせ
</nav>
<p>画面の横幅を狭くすると、メニューが消えて「☰」マークが現れます!</p>
ブラウザ表示

3. displayプロパティを使った非表示と表示の基本

3. displayプロパティを使った非表示と表示の基本
3. displayプロパティを使った非表示と表示の基本

プログラミング初心者の方が最初につまずきやすいのが、「隠れているものをどうやって出すか」という点です。実はCSSだけで「ボタンを押した時に出す」という動作を作るには、いくつか工夫が必要になります。本来はJavaScript(ジャバスクリプト)という別の言語を使うのが一般的ですが、基本の考え方は「クラス(名前)」の付け替えです。

例えば、「is-open」という名前がついている時だけ表示される、という命令を書いておきます。ボタンが押された瞬間にその名前をぺたっと貼り付けることで、メニューが姿を現します。このように、CSSは「状態」を定義するのが得意な言語です。まずは「見えている状態」と「消えている状態」の二つの指示書を別々に用意するイメージを持つことから始めてみましょう。

4. スマホでメニューを縦並びにするレイアウト術

4. スマホでメニューを縦並びにするレイアウト術
4. スマホでメニューを縦並びにするレイアウト術

パソコンでは横に並んでいたメニューも、スマホで表示させる時は縦に並べた方が指で操作しやすくなります。この時、以前学習した「フレックスボックス(flexbox)」という技術の向きを切り替えるのがコツです。「flex-direction: column;(フレックス・ディレクション:コラム)」という命令を使えば、横並びの要素が魔法のように縦一列に整列します。

縦並びにすることで、スマホの狭い画面でも文字が重なることなく、一つ一つのリンクが大きく押しやすくなります。ユーザーにとっての使いやすさ(アクセシビリティ)を考えることも、立派なWeb制作のスキルです。パソコンを触ったことがない方でも、スマホを使っている時の自分の指の動きを思い出しながら、余白をたっぷり取ったメニューを作ってみましょう。


<style>
.flex-nav {
    display: flex;
    list-style: none;
    padding: 0;
    background: #333;
}
.flex-nav li a {
    color: white;
    padding: 15px;
    display: block;
    text-decoration: none;
}

/* スマホでは縦に並べる */
@media (max-width: 480px) {
    .flex-nav {
        flex-direction: column; /* 縦並びにする */
        text-align: center;
    }
    .flex-nav li {
        border-bottom: 1px solid #444;
    }
}
</style>

<ul class="flex-nav">
    <li><a href="#">HOME</a></li>
    <li><a href="#">ABOUT</a></li>
    <li><a href="#">BLOG</a></li>
</ul>
ブラウザ表示

5. 画面の端からメニューが飛び出す仕組み

5. 画面の端からメニューが飛び出す仕組み
5. 画面の端からメニューが飛び出す仕組み

最近の流行りは、ボタンを押すと画面の左や右から「スッ」とメニューがスライドしてくる演出です。これは「ドロワーメニュー」とも呼ばれます。この仕組みは、実はメニューを画面の外(マイナスの座標)に追いやって隠しておくことで実現しています。

例えば、メニューの横幅を250pxと決めたら、左側に「-250px」の位置に配置します。そうするとメニューは画面の外側に隠れて見えなくなります。表示させたい時だけ、その位置を「0」に戻してあげれば、画面の中に滑り込んでくるわけです。この「見えない場所に待機させておく」という考え方は、Webデザインにおいて非常によく使われるテクニックです。物理的に物が動く様子をイメージすると理解が深まります。

6. position: fixedを使ってメニューを固定する

6. position: fixedを使ってメニューを固定する
6. position: fixedを使ってメニューを固定する

ハンバーガーメニューの中身を表示させた時、困るのが「背景のページが動いてしまう」ことです。メニューを開いている間は、メニュー自体が画面の一番手前に固定されている必要があります。ここで使うのが「position: fixed;(ポジション:フィックスド)」です。

「fixed」を使うと、その要素を画面の決まった位置にピン留めすることができます。ページをいくらスクロールしても、メニューはずっと同じ場所に居続けます。これによって、スマホの小さな画面でも操作に迷うことがなくなります。また、一番手前に持ってくるために「z-index(ゼット・インデックス)」という重なりの順序を決める命令も一緒に使うのが一般的です。これは、お絵かきのレイヤー(階層)のようなものだと考えてください。


<style>
/* スマホサイズの時だけ全画面メニューにする例 */
@media (max-width: 500px) {
    .full-menu {
        position: fixed; /* 画面に固定 */
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background: rgba(0, 0, 0, 0.8); /* 半透明の黒 */
        color: white;
        display: flex;
        justify-content: center;
        align-items: center;
        font-size: 24px;
        z-index: 999; /* 一番手前に */
    }
}
</style>

<div class="full-menu">
    全画面メニュー表示中
</div>
<div style="padding: 20px;">
    <p>背景のコンテンツです。スマホサイズで見るとメニューが覆いかぶさります。</p>
    <img src="/img/sample150-100.jpg" alt="見本">
</div>
ブラウザ表示

7. チェックボックスを使ってCSSだけで切り替える裏技

7. チェックボックスを使ってCSSだけで切り替える裏技
7. チェックボックスを使ってCSSだけで切り替える裏技

本来、ボタンのクリック動作にはJavaScriptが必要ですが、実は「チェックボックス」というHTMLの部品を悪用(?)して、CSSだけで切り替えを作る面白い方法があります。チェックボックスが「チェックされているか、いないか」という状態を、メニューの「表示・非表示」に連動させるのです。

この方法のメリットは、プログラミング初心者の方でもJavaScriptの難しい文法を学ばずに、動きのあるサイトを作れる点にあります。HTMLの「label」タグを三本線ボタンに見立てて、チェックを入れると隣にあるメニューが現れるように設定します。パズルを解くような感覚でコーディングが楽しめるので、ぜひ一度挑戦してみてほしいテクニックです。

8. ブラウザの検証ツールで切り替えをテストしよう

8. ブラウザの検証ツールで切り替えをテストしよう
8. ブラウザの検証ツールで切り替えをテストしよう

メディアクエリを使った表示切り替えがうまく書けたら、最後は自分の手で確認が必要です。パソコンのブラウザ(Google Chromeなど)には、スマホでの見え方をシミュレーションする「検証ツール」が備わっています。画面を右クリックして「検証」を選ぶと、画面の幅を自由に変えることができます。

幅を縮めていき、設定したブレイクポイント(境目)を越えた瞬間に、メニューがパッと消えてボタンが現れるか確認しましょう。もし変わらない場合は、スペルミスがないか、メディアクエリのカッコの閉じ忘れがないかチェックします。この試行錯誤こそが、上達への一番の近道です。自分の書いた命令通りに画面が動く快感を、ぜひ味わってください!


<style>
/* 仕上げのスタイリング */
.test-box {
    padding: 20px;
    border: 3px dashed #ccc;
    text-align: center;
}

/* 600pxを境に、中の文字の色と内容が変わる演出 */
.status-text::before {
    content: "現在の表示:パソコン版";
    color: blue;
    font-weight: bold;
}

@media (max-width: 600px) {
    .status-text::before {
        content: "現在の表示:スマホ版(メニュー隠蔽中)";
        color: red;
    }
    .test-box {
        background-color: #fff0f0;
    }
}
</style>

<div class="test-box">
    <p class="status-text"></p>
    <p>ブラウザの幅を変えてみてください。</p>
</div>
ブラウザ表示

まとめ

まとめ
まとめ

ハンバーガーメニューの基本構造と仕組みを理解する

ハンバーガーメニューはスマホ対応のレスポンシブデザインにおいて欠かせない重要なUIパーツです。パソコンでは横並びに表示されているナビゲーションメニューを、スマートフォンでは一度非表示にして、ボタンを押した時だけ表示するという仕組みが基本になります。この表示切替はCSSのdisplayプロパティとメディアクエリを組み合わせることで実現されます。HTMLとCSSだけでも実装可能ですが、仕組みをしっかり理解することで応用の幅が大きく広がります。

メディアクエリとレスポンシブ対応の重要性

レスポンシブ対応とは、画面サイズに応じてレイアウトを変化させる技術であり、現在のWeb制作では必須スキルとなっています。メディアクエリを使うことで、パソコンでは通常のメニュー表示、スマートフォンではハンバーガーメニューに切り替えることができます。特にmaxwidthを使った条件分岐は基本中の基本であり、これを理解することであらゆる画面サイズに対応したサイト制作が可能になります。

display切替とクラス管理の考え方

表示と非表示の切替はdisplay noneとdisplay blockを使うことで実現できます。さらに実践的な開発ではisopenのような状態管理用のクラスを使って制御するのが一般的です。この考え方はハンバーガーメニューだけでなくモーダルウィンドウやタブ切替などにも応用できるため、しっかり理解しておくと非常に役立ちます。CSSは状態を定義する言語であり、状態の切替を意識することが重要です。

flexboxによるレイアウト制御

スマートフォンでは縦並びのメニューが操作しやすいため、flexboxを使ってレイアウトを切り替えることが重要です。flexdirectionをcolumnにすることで簡単に縦並びに変更できます。パソコンでは横並び、スマホでは縦並びという切替は多くのWebサイトで使われている基本パターンです。ユーザーの使いやすさを意識した設計が重要です。

position fixedと重なり順の制御

ハンバーガーメニューを開いたときに画面全体を覆うように表示するにはposition fixedを使います。これによりスクロールしてもメニューが固定され、操作しやすくなります。またzindexを使って重なり順を制御することで、メニューを最前面に表示できます。これらのCSSプロパティはUI設計において非常に重要な役割を持っています。

サンプルプログラムで総復習


<style>
.menu {
    display: block;
    background: #eee;
    padding: 10px;
}

.burger {
    display: none;
    font-size: 30px;
}

/* スマホ対応 */
@media (max-width: 600px) {
    .menu {
        display: none;
    }
    .burger {
        display: block;
    }
}
</style>

<div class="burger">☰</div>
<nav class="menu">
    ホーム / サービス / ブログ / お問い合わせ
</nav>
ブラウザ表示

このサンプルではハンバーガーメニューの基本となる表示切替の仕組みを確認できます。実際の開発ではここにアニメーションやクリック処理を追加することで、より実用的なUIを作ることができます。まずはこの基本を理解することが重要です。

ハンバーガーメニューの理解はUI設計の第一歩

ハンバーガーメニューは単なる見た目のデザインではなく、ユーザー体験を向上させるための重要な仕組みです。スマートフォンでの操作性や視認性を考えながら設計することで、使いやすいWebサイトを作ることができます。HTMLとCSSの基本を組み合わせることで実現できるため、初心者の方でも十分に習得可能です。今回学んだメディアクエリやdisplay制御の考え方は今後のWeb制作において何度も使う重要な技術になります。

先生と生徒の振り返り会話

生徒

「ハンバーガーメニューって難しそうでしたけど、仕組みはシンプルですね」

先生

「そうですね。表示と非表示の切替が基本です」

生徒

「メディアクエリがとても重要だと分かりました」

先生

「レスポンシブ対応の中心となる技術です」

生徒

「スマホとパソコンで見た目を変えられるのが面白いです」

先生

「ユーザーに合わせた設計ができるのがWebの強みです」

生徒

「flexboxやfixedも一緒に使うんですね」

先生

「UIを作る上でとても重要な組み合わせです」

生徒

「これでスマホ対応サイトが作れそうです」

先生

「基本を繰り返し使えば自然と身につきます」

2026年最新 スキルアップ・実践セミナー

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。

本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。

具体的なワークショップ内容と環境

【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。

【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。

この60分で得られる3つの技術資産

1. 現代のデファクトスタンダード「Flexbox」

要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。

2. メンテナンス性を高めるCSS設計の基礎

後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。

3. パフォーマンスと美しさの両立

画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。

※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!

各回少人数・マンツーマン形式で徹底サポート

このセミナーの詳細・お申し込みはこちら
カテゴリの一覧へ
新着記事
New1
CSS
CSSのボックスモデルとは?margin・border・padding・contentの構造を初心者向けに解説
New2
CSS
CSSグリッドレイアウトで可変カラムを作る!初心者向けレスポンシブWebデザイン解説
New3
Bootstrap
Bootstrap5ナビゲーションバーに検索フォームを設置する方法を完全解説!初心者向けに幅・プレースホルダー・送信ボタンの整え方までやさしく説明
New4
HTML
HTML p・span・strong・emとは?テキスト系タグの基本を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
HTML
HTML inputタグとは?フォーム入力を担う基本要素を初心者向けに完全解説
No.2
Java&Spring記事人気No2
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.3
Java&Spring記事人気No3
CSS
CSSのnth-child()を完全攻略!特定の順番にスタイルを当てる方法
No.4
Java&Spring記事人気No4
HTML
HTML formのaction URL設計を完全解説|送信先の考え方を初心者でも理解
No.5
Java&Spring記事人気No5
Bootstrap
Bootstrap5のツールチップ・ポップオーバーが閉じない・重なる問題を解決!boundary・offset・z-index調整を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
HTML
HTMLのformタグの書き方を完全ガイド!actionとmethod属性の意味を初心者向けにやさしく解説
No.7
Java&Spring記事人気No7
HTML
HTML input type="email"の入力チェック仕様と注意点を徹底解説 初心者向け完全ガイド
No.8
Java&Spring記事人気No8
HTML
HTML iframeタグの使い方|外部ページ埋め込みの基本を初心者向けに解説