ハンバーガーメニューをチェックボックスで作成する方法
ハンバーガーメニューは、モバイルデバイスやレスポンシブデザインでよく使用される
ナビゲーションメニューです。
今回は、チェックボックスを使ってシンプルなハンバーガーメニューを作成する方法を紹介します。
HTML
まず、HTMLファイルにメニューの構造を追加します。
チェックボックス、ラベル、およびメニュー項目を含む基本的な構造を以下に示します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ハンバーガーメニュー</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<input type="checkbox" id="menu-toggle">
<label for="menu-toggle" class="hamburger">
<span></span>
<span></span>
<span></span>
</label>
<nav class="menu">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</body>
</html>
CSS
次に、CSSを使ってスタイルを定義します。
ここでは、ハンバーガーメニューの見た目と動作を設定します。
/* 全体のスタイルリセット */
body, ul, li {
margin: 0;
padding: 0;
list-style: none;
}
/* チェックボックスを非表示にする */
#menu-toggle {
display: none;
}
/* ハンバーガーメニューのスタイル */
.hamburger {
display: flex;
flex-direction: column;
justify-content: space-around;
width: 30px;
height: 30px;
cursor: pointer;
}
.hamburger span {
display: block;
width: 100%;
height: 4px;
background-color: #333;
transition: all 0.3s;
}
/* メニューのスタイル */
.menu {
display: none;
}
.menu ul {
display: flex;
flex-direction: column;
background-color: #eee;
position: absolute;
top: 40px;
right: 10px;
width: 150px;
}
.menu ul li {
border-bottom: 1px solid #ddd;
}
.menu ul li a {
display: block;
padding: 10px;
text-decoration: none;
color: #333;
}
/* チェックボックスがチェックされている場合のスタイル */
#menu-toggle:checked + .hamburger + .menu {
display: block;
}
動作確認
上記のHTMLとCSSをファイルに保存し、ブラウザで開いてみてください。
ハンバーガーアイコンをクリックするとメニューが表示され、
もう一度クリックするとメニューが非表示になります。
説明
HTML構造
input type="checkbox"
: メニューの表示/非表示を制御するためのチェックボックス。
label for="menu-toggle"
: チェックボックスをターゲットとするラベル。
ハンバーガーアイコンとして機能します。
nav class="menu"
: メニュー項目を含むナビゲーション要素。
CSSスタイル
.hamburger
: ハンバーガーアイコンのスタイルを定義します。
.menu
: 初期状態で非表示にするためのスタイル。
#menu-toggle:checked + .hamburger + .menu
: チェックボックスがチェックされたときに
メニューを表示します。
これで、チェックボックスを使ったシンプルなハンバーガーメニューの作成方法が完成です。
この方法は簡単でありながら、レスポンシブデザインにおいて非常に役立ちます。
PCサイズのコーディングにおけるmax-widthの重要性
1月 8, 2025CSSのz-indexプロパティ:要素の重なり順を自在に制御
12月 8, 2024CSSのcursorプロパティ:カーソルの形状をカスタマイズする方法
12月 8, 2024