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-rows とgrid-auto-columns プロパティを設定します |
<grid-auto-flow> [<grid-auto-rows> [ / <grid-auto-columns> ] ] |
grid-auto-flow プロパティを設定し、任意でgrid-auto-rows とgrid-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-flow
にdense
を追加すると、後で小さいアイテムが現れた場合にグリッドの初期部分に穴を埋めるように指示します。これはテトリスを効率的に遊ぶようなものです!
.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