CSS Grid: 動作を理解するための入門ガイド

こんにちは、未来のウェブデザインの魔法使いさんたち!今日は、CSS Gridの不思議な世界に飛び込みます。心配しないでください。これまでにコードを書いたことがない人でも、あなたの親切なガイドとしてこの旅を案内します。このチュートリアルの終わりまでに、プロ並みのレイアウトを作成できるようになるでしょう!

CSS - Grid

CSS Gridとは?

CSS Gridはウェブレイアウトのスーパーヒーローです。これは2次元システムで、コンテンツを行と列に整理することができます。部屋の中に家具を並べることを想像すると、Gridがあなたのウェブページで同じことをしていることを理解できるでしょう!

なぜこれに注目すべきか?

Gridが登場する前は、複雑なレイアウトを作成するためにfloatやポジショニングを苦労して使っていました。家をダクトテープで建てるようなものです!Gridを使うと簡単で直感的になります。信じてください。15年間の指導経験で、生徒たちがGridを発見したときの安堵を何度も見てきました。

CSS Gridを始める

簡単な例から始めましょう。基本的なウェブページレイアウトを作成しているとします。ヘッダー、メインコンテンツ、サイドバー、フッターがあります。

<div class="container">
<header>ヘッダー</header>
<main>メインコンテンツ</main>
<aside>サイドバー</aside>
<footer>フッター</footer>
</div>

次に、CSSの魔法を加えます:

.container {
display: grid;
grid-template-areas:
"header header header"
"main main sidebar"
"footer footer footer";
gap: 10px;
}

header { grid-area: header; background-color: #ff9999; }
main   { grid-area: main; background-color: #99ff99; }
aside  { grid-area: sidebar; background-color: #9999ff; }
footer { grid-area: footer; background-color: #ffff99; }

ここで何が起こっているのか?コンテナをグリッドとして表示し、grid-template-areasを使ってレイアウトを定義しています。ウェブページの地図を描いているようなものです!

CSS gridプロパティ

gridプロパティは、すべての明示的なグリッドプロパティを一度に設定するショートカットです。これはGridのスイスアーミーナイフです!

可能な値

以下はgridプロパティの可能な値の表です:

説明
none グリッド動作は指定されていません
<grid-template> グリッドの行と列のサイズを指定します
<grid-template-rows> / <grid-auto-columns> grid-template-rowsgrid-auto-columnsプロパティを設定します
<grid-auto-flow> [<grid-auto-rows> [ / <grid-auto-columns> ] ] grid-auto-flowプロパティを設定し、任意でgrid-auto-rowsgrid-auto-columnsプロパティを設定します

対象

gridプロパティはグリッドコンテナ要素に適用されます。これは「この要素はグリッドレイアウトのリーダーだ」と言っているようなものです!

DOM構文

object.style.grid = "none|<grid-template-rows> / <grid-template-columns>|<grid-auto-flow> [<grid-auto-rows> [ / <grid-auto-columns>] ]|initial|inherit";

これが宇宙語のように見えるかもしれませんが、後で詳しく説明します!

CSS Grid - <grid-template>

<grid-template>値は、グリッドの構造を定義するものです。これはあなたのレイアウトの青写真を作成しているようなものです。

.container {
grid: 100px 300px / 3fr 1fr;
}

これは2行(100pxと300pxの高さ)と2列(3frと1frの幅)を持つグリッドを作成します。fr単位は「利用可能なスペースの分数」として非常に便利です!

CSS Grid - minmax()repeat()

これらの関数はGridの dynamische ペアです:

  • minmax()はトラックの最小値と最大値を設定します。
  • repeat()はトラック定義を繰り返します。
.container {
grid: repeat(3, minmax(100px, auto)) / repeat(3, 1fr);
}

これは3x3のグリッドを作成し、各行は少なくとも100pxの高さですが成長できますし、列は利用可能なスペースを均等に共有します。

CSS Grid - auto-flow

auto-flow値は、自動配置されたアイテムがグリッドに流れる方法を決定します。これは本棚を水平に还是垂直に並べるかを決めるようなものです。

.container {
grid: auto-flow / 200px 1fr;
}

これは200pxと1frの列を作成し、必要に応じて行を自動的に作成します。

CSS Grid - auto-flow dense

auto-flowdenseを追加すると、後で小さいアイテムが現れた場合にグリッドの初期部分に穴を埋めるように指示します。これはテトリスを効率的に遊ぶようなものです!

.container {
grid: auto-flow dense / 200px 1fr;
}

CSS Grid - 複雑なショートカット

これらの概念をすべて1つの強力な宣言にまとめることができます:

.container {
grid: [auto-flow] 100px / repeat(3, [col-start] 1fr [col-end]);
}

これは自動的に流れる行の高さが100pxで、3つの等幅列を持つグリッドを作成し、名前付きの線を定義します。

CSS Grid - 関連プロパティ

Gridには多くの関連プロパティがあります。以下はいくつかの主要な親族です:

プロパティ 説明
grid-template-rows グリッドの行を定義します
grid-template-columns グリッドの列を定義します
grid-template-areas グリッドテンプレートエリアを定義します
grid-auto-rows 自動生成された行のサイズを設定します
grid-auto-columns 自動生成された列のサイズを設定します
grid-auto-flow 自動配置アルゴリズムの動作を制御します

練習は完璧を生みます!これらのプロパティを試してみてください。ある生徒がGridを使ってデジタルアートを作成したことがあります。可能性は無限です!

結論として、CSS Gridはあなたのウェブレイアウトを平凡から驚異的なものに変える強力なツールです。初めは圧倒されるかもしれませんが、練習を積めば簡単に複雑なレイアウトを作成できるようになります。幸せなコーディングをし、あなたのグリッドが常に perfectly アラインするよう願っています!

Credits: Image by storyset