CSS辞典 gridプロパティ、grid-auto-rowsプロパティ、grid-auto-columnsプロパティ、grid-auto-flowプロパティの解説
CSS辞典
2022.07.03
この記事は約7分で読めます。
グリッドトラックとアイテムの配置方法を一括で指定する「gridプロパティ」、暗黙的グリッドトラックの行の高さを指定する「grid-auto-rows」プロパティ、暗黙的グリッドトラックの列の幅を指定する「grid-auto-columnsプロパティ」、グリッドアイテムの自動配置方法を指定する「grid-auto-flowプロパティ」の使用方法を記載
CSS3/2.1
対応ブラウザ
gridプロパティ
概要・使用方法
{ grid: -template-rows -template-columns -template-areas -auto-rows -auto-columns -auto-flow;}
gridプロパティは、 明示的または暗黙的なグリッドトラックの行の高さ、列の幅、グリッドエリアの名前、及びグリッドアイテムの自動配置方法をまとめて指定できます。指定方法は以下の3つのパターンがあります。
指定方法
指定できる値
指定できる値は「grid-template-rowsプロパティ」、「grid-template-columnsプロパティ」、「grid-template-areasプロパティ」、「grid-auto-rowsプロパティ」、「grid-auto-columnsプロパティ」、「grid-auto-flowプロパティ」と同様です。
サンプルコード
<!DOCTYPE html>
<html lang="ja">
<head>
<title>gridプロパティ CSSフォントサンプルページ</title>
<meta charset="uft-8">
<style>
.grid-grid-container1{
display: grid;
grid: auto-flow / 1fr 1fr 1fr;
}
.grid-grid-container2{
display: grid;
grid: auto-flow dense / 40px 40px 1fr;
}
.grid-grid-container3{
display: grid;
grid: repeat(3, 80px) / auto-flow;
}
.h1-font{font-size:1.5em;}
.item-cell1{background-color:teal;}
.item-cell2{background-color:lightsteelblue;}
.item-cell3{background-color:lightpink;}
.item-cell4{background-color:lightseagreen;}
.item-cell5{background-color:coral;}
.item-cell6{background-color:crimson;}
</style>
</head>
<body>
<h1 class="h1-font">grid: auto-flow / 1fr 1fr 1fr;</h1>
<div class="grid-grid-container1">
<div class="item-cell1">item1</div>
<div class="item-cell2">item2</div>
<div class="item-cell3">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
</div>
<h1 class="h1-font">grid: auto-flow dense / 40px 40px 1fr;</h1>
<div class="grid-grid-container2">
<div class="item-cell1">item1</div>
<div class="item-cell2">item2</div>
<div class="item-cell3">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
</div>
<h1 class="h1-font">grid: repeat(3, 80px) / auto-flow;</h1>
<div class="grid-grid-container3">
<div class="item-cell1">item1</div>
<div class="item-cell2">item2</div>
<div class="item-cell3">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
</div>
</body>
</html>
実行結果
grid: auto-flow / 1fr 1fr 1fr;
item1
item2
item3
item4
item5
item6
grid: auto-flow dense / 40px 40px 1fr;
item1
item2
item3
item4
item5
item6
grid: repeat(3, 80px) / auto-flow;
item1
item2
item3
item4
item5
item6
chromeブラウザ実行結果
Firefox ブラウザ実行結果
edgeブラウザ実行結果
operaブラウザ実行結果
grid-auto-rowsプロパティ
概要・使用方法
「grid-template-rowsプロパティ」は、グリッドの行におけるグリッドトラックのライン名と高さを指定します。このプロパティを指定しなくても、グリッドアイテム数によって「暗黙的」なグリッドトラックは自動的に生成されます。グリッドトラックを明示的に生成したい場合は、このプロパティ及びgrid-template-columnsプロパティを使用します。
以下のケースに暗黙的にトラックは生成されてしまいます。
- グリッドアイテムのgrid-row、grid-columnの指定が、グリットレイアウトコンテナの外側に指定されているもの
- 定義したグリットよりもグリットアイテムが多くはみ出てしまう
- グリットレイアウトコンテナにgrid-template-rows、grid-template-columnsプロパティを指定していない
上記は、7つのグリットアイテムを記述して4つしかセルを定義しなかった場合、赤枠部分がグリットアイテムからはみ出てしまいます。その時、「grid-auto-rows」を指定しておくと暗黙的に高さを調整してくれます。
指定できる値(高さ)
詳しい数値+単位付きについて以下を参照
サンプルコード
<!DOCTYPE html>
<html lang="ja">
<head>
<title>grid-auto-rowsプロパティ CSSフォントサンプルページ</title>
<meta charset="uft-8">
<style>
.grid-container{
display: grid;
grid-template: 200px 200px / 200px 200px;
grid-auto-rows: 100px 200px;
}
.h1-font{font-size:1.5em;}
.item-cell1{background-color:teal;}
.item-cell2{background-color:lightsteelblue;}
.item-cell3{background-color:lightpink;}
.item-cell4{background-color:lightseagreen;}
.item-cell5{background-color:coral;}
.item-cell6{background-color:crimson;}
.item-cell7{background-color:darkorchid;}
</style>
</head>
<body>
<div class="grid-container">
<div class="item-cell1">item1</div>
<div class="item-cell2">item2</div>
<div class="item-cell3">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
<div class="item-cell7">item6</div>
</div>
</body>
</html>
以下のグリッドレイアウトを作成することができます。
item1
item2
item3
item4
item5
item6
item6
chromeブラウザ実行結果
Firefox ブラウザ実行結果
edgeブラウザ実行結果
operaブラウザ実行結果
grid-auto-columnsプロパティ
概要・使用方法
「grid-auto-columnsプロパティ」は、暗黙的に作成されたグリッドトラックの列の幅を指定します。grid-template-columnsプロパティによってグリッドトラックの幅が明示的に指定されていない場合など、サイズが不明瞭な場合に幅が指定されます。
指定できる値(スタイル)
grid-auto-rowsプロパティと同様
サンプルコード
<!DOCTYPE html>
<html lang="ja">
<head>
<title>grid-auto-columnsプロパティ CSSフォントサンプルページ</title>
<meta charset="uft-8">
<style>
.columns-grid-container{
display: grid;
/* grid-templateを無効にする */
/*grid-template: 200px 200px / 200px 200px;*/
grid-auto-columns: 300px;
grid-auto-rows: 100px;
}
.h1-font{font-size:1.5em;}
.item-cell1{background-color:teal;}
.item-cell2{background-color:lightsteelblue;}
.item-cell3{background-color:lightpink;}
.item-cell4{background-color:lightseagreen;}
.item-cell5{background-color:coral;}
.item-cell6{background-color:crimson;}
.item-cell7{background-color:darkorchid;}
</style>
</head>
<body>
<div class="columns-grid-container">
<div class="item-cell1">item1</div>
<div class="item-cell2">item2</div>
<div class="item-cell3">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
<div class="item-cell7">item6</div>
</div>
</body>
</html>
以下のグリッドレイアウトを作成することができます。
item1
item2
item3
item4
item5
item6
item6
chromeブラウザ実行結果
Firefox ブラウザ実行結果
edgeブラウザ実行結果
operaブラウザ実行結果
grid-auto-flowプロパティ
概要・使用方法
「grid-auto-flowプロパティ」は、グリッドアイテムの自動配置方向を指定します。通常はグリッドアイテムは左から横方向に対して順番に配置されますが、縦方向に変更することもできます。
指定できる値
サンプルコード
<!DOCTYPE html>
<html lang="ja">
<head>
<title>grid-auto-flowプロパティ CSSフォントサンプルページ</title>
<meta charset="uft-8">
<style>
.grid-container1{
display: grid;
grid-template: 100px 100px 100px / 100px 100px 100px;
grid-auto-flow:column;
}
.grid-container2{
display: grid;
grid-template: 100px 100px 100px / 100px 100px 100px;
grid-auto-flow:dense;
}
.grid-span{
grid-row: span 2;
grid-column: span 2;
}
.h1-font{font-size:1.5em;}
.item-cell1{background-color:teal;}
.item-cell2{background-color:lightsteelblue;}
.item-cell3{background-color:lightpink;}
.item-cell4{background-color:lightseagreen;}
.item-cell5{background-color:coral;}
.item-cell6{background-color:crimson;}
</style>
</head>
<body>
<h1 class="h1-font">grid-auto-flow:row;</h1>
<div class="grid-container1">
<div class="item-cell1">item1</div>
<div class="item-cell2 grid-span">item2</div>
<div class="item-cell3 grid-span">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
</div>
<h1 class="h1-font">grid-auto-flow:dense;</h1>
<div class="grid-container2">
<div class="item-cell1">item1</div>
<div class="item-cell2 grid-span">item2</div>
<div class="item-cell3 grid-span">item3</div>
<div class="item-cell4">item4</div>
<div class="item-cell5">item5</div>
<div class="item-cell6">item6</div>
</div>
</body>
</html>
grid-auto-flow:dense;とすると、隙間が空いている「item1」の隣接する空白が埋まるようになります。
grid-auto-flow:row;
item1
item2
item3
item4
item5
item6
grid-auto-flow:dense;
item1
item2
item3
item4
item5
item6
chromeブラウザ実行結果
Firefox ブラウザ実行結果
edgeブラウザ実行結果
operaブラウザ実行結果
コメント