今回はCSSのGrid Layoutを使って、カフェサイトのレイアウトをさらに強化する方法について学びます。
CSSのレイアウト技術にはFlexboxとGrid Layoutがありますが、それぞれの特性を理解し、適切に使い分けることで、魅力的で使いやすいサイトをデザインできます。
本記事ではGrid Layoutの基本からその応用までを解説し、Flexboxとの違いを明確にし、どのような場面でどちらを使うべきかについても触れます。
Grid Layoutの基本
Grid Layoutとは?
Grid LayoutはCSSの強力なレイアウトシステムで、二次元のレイアウトを簡単に作成できるように設計されています。
これによりカフェサイトのように複雑なウェブページのレイアウトもシンプルなコードで実現可能になります。
Flexboxとの違い
- Flexbox
-
主に一方向(一列または一行)のレイアウトを得意としています。
アイテムを並べる際の柔軟性が高く、要素の順序や揃え方を簡単に変更できます。 - Grid Layout
-
二次元のレイアウトを扱うために設計されています。
これにより行と列の両方で要素を配置・管理することができ、カフェサイトのような複雑なデザインを効率的に実現できます。
Grid Layoutの基本構成要素
まず以下の2つの言葉が出てきます。
ここもFlexboxと同じです。
- アイテム
- コンテナ
アイテムとは並べ替えたい要素のこと、コンテナとはアイテムを囲む要素のことです。
下記の例ではliタグがアイテムで、ulタグがコンテナになります。
<ul>
<li>アイテム1</li>
<li>アイテム2</li>
<li>アイテム3</li>
</ul>
主に以下のCSSプロパティを使ってGrid Layoutレイアウトを設定します。
プロパティはすべてコンテナに設定します。
- display: grid
-
コンテナ要素に指定します。
- grid-template-columns
-
列の定義を設定します。
例えばrepeat(3, 1fr)は3列を均等な幅で設定します。 - grid-template-rows
-
行の定義を設定します。
例えばrepeat(2, auto)は2行を自動サイズで設定します。 - gap
-
アイテム間のスペースを設定します。
カフェサイトへの適用例
カフェサイトのメインコンテンツをGrid Layoutでレイアウトしましょう。
以下のCSSをstyle.cssに追加します。
Flexboxの記述がある人はそこを消してから追加してください。
/* Grid Layout */
main {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
.section-container {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.section-item {
padding: 20px;
background-color: #fff;
border: 1px solid #ddd;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
ここでは以下の3つのことを設定しています。
- mainタグにGrid Layoutを適用して2列レイアウトに設定します
- .section-containerクラスを使ってアイテムを2列レイアウトに設定します
- .section-itemクラスを使って個々のセクションアイテムにスタイルを適用します
HTMLの修正
カフェサイトのHTMLファイルを更新してGrid Layoutを適用します。
<!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>
<header>
<h1>カフェへようこそ</h1>
<nav>
<a href="index.html">ホーム</a>
<a href="menu.html">メニュー</a>
<a href="contact.html">お問い合わせ</a>
</nav>
</header>
<main>
<div class="section-container">
<div class="section-item">
<h2>カフェの紹介</h2>
<p>私たちのカフェは最高のコーヒーと心地よい空間を提供します。</p>
</div>
<div class="section-item">
<h2>おすすめメニュー</h2>
<p>人気のコーヒーやデザートをお楽しみください。</p>
</div>
<div class="section-item">
<h2>特別イベント</h2>
<p>毎週末には特別イベントを開催しています。</p>
</div>
<div class="section-item">
<h2>アクセス</h2>
<p>カフェへのアクセス方法をご紹介します。</p>
</div>
</div>
</main>
<footer>
<p>© 2024 カフェサイト. All rights reserved.</p>
</footer>
</body>
</html>
ここでは以下の2つのことを設定しています。
- mainタグ内にdiv.section-containerを追加してアイテムとして2つのdiv.section-itemを配置します
- Flexboxを使ってこれらのセクションアイテムを2列×2行に配置します
カフェへようこそ
私たちのカフェは最高のコーヒーと心地よい空間を提供します。
人気のコーヒーやデザートをお楽しみください。
毎週末には特別イベントを開催しています。
カフェへのアクセス方法をご紹介します。
プロジェクトの確認
index.htmlとstyle.cssを保存して、ブラウザ(google chromeやmicrosoft EDGEなど)でindex.htmlを開いてみましょう。
index.htmlをダブルクリックするとスムーズかと思います。
まずここまででカフェのWEBサイトが上記のように表示されることを確認してください。
まとめ
今回の内容ではGrid Layoutを使ったレイアウト技術を学びました。
Grid Layoutは複雑な2次元レイアウトを効率的に実現するための強力なツールです。
Flexboxと組み合わせて使用することで、魅力的で使いやすいサイトを実現できます。
各レイアウト技術の特性を理解し、適切に使い分けることがより洗練されたデザインを生み出す鍵となります。