モバイルファーストのナビゲーション
CoddyのHTMLジャーニー「Practical Frontend」セクションの一部 — レッスン 8/35。
モバイルファーストのナビゲーションとは、小さな画面向けにシンプルでタッチ操作しやすいメニューから始め、それを大きな画面向けに拡張していくことを意味します。
基本的なモバイルナビゲーション構造から始めましょう:<nav>要素の中に、ボタンとリストを含めます。
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<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>モバイル用のスタイリングを最初に適用します。小さな画面では → 「メニュー」ボタンを表示し、リストを非表示にします。
.menu-toggle {
display: block;
//さらにいくつかのスタイル
}
.nav-list {
display: none;
//さらにいくつかのスタイル
}次に、より大きな画面用にメディアクエリを使用します。大きな画面では、メニューを上部に水平リストとして表示し、「メニュー」ボタンを非表示にします。
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}このアプローチにより、ナビゲーションはまずモバイルデバイス向けに最適化され、その後、より大きな画面向けに拡張されます。
チャレンジ
簡単メニューボタンとリストを含むナビゲーションがあるHTMLファイルが与えられています。現在、リストは常に表示されています。
モバイルファーストのナビゲーションスタイルを修正するために、以下の作業を行ってください:
- モバイル画面では、ナビゲーションリストをデフォルトで非表示にします。
- より大きな画面では、ナビゲーションリストを表示(
display: flex)させます。
チートシート
モバイルファーストのナビゲーションは、小さな画面向けのシンプルでタッチしやすいメニューから始まり、大きな画面に合わせて拡張していきます。
基本的なモバイルナビゲーションの構造:
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<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>モバイル用のスタイリング(ボタンを表示し、リストを非表示にする):
.menu-toggle {
display: block;
}
.nav-list {
display: none;
}メディアクエリを使用したデスクトップ用のスタイリング(ボタンを非表示にし、水平リストを表示する):
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}自分で試してみよう
<!DOCTYPE html>
<html>
<head>
<title>Mobile-First Navigation</title>
<style>
:root {
--primary-color: #4a6de5;
--text-color: #333333;
}
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-weight: bold;
color: var(--primary-color);
text-decoration: none;
font-size: 1.5rem;
}
.menu-toggle {
display: block;
background-color: var(--primary-color);
color: white;
border: none;
padding: 0.5rem 1rem;
cursor: pointer;
}
.nav-list {
list-style: none;
padding: 0;
margin: 1rem 0 0 0;
width: 100%;
}
.nav-list li a {
color: var(--text-color);
text-decoration: none;
display: block;
padding: 0.5rem 0;
}
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
margin: 0;
width: auto;
}
.nav-list li {
margin: 0 0 0 1.5rem;
}
}
</style>
</head>
<body>
<header class="site-header">
<nav class="nav-container">
<a href="#" class="logo">MySite</a>
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<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>
</header>
</body>
</html>このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。