基本構造
<div class="grid">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 20px;
}
コンテナのプロパティ
grid-template-columns / rows
.grid {
grid-template-columns: 100px 200px 100px;
grid-template-columns: 1fr 2fr 1fr;
grid-template-columns: 250px 1fr 1fr;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(4, 100px);
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-template-rows: 100px auto 100px;
}
gap(余白)
.grid {
gap: 20px;
row-gap: 20px;
column-gap: 10px;
gap: 20px 10px;
}
grid-template-areas(名前付きエリア)
.grid {
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
grid-template-columns: 250px 1fr 1fr;
grid-template-rows: auto 1fr auto;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
justify-items / align-items
.grid {
justify-items: start;
justify-items: end;
justify-items: center;
justify-items: stretch;
align-items: start;
align-items: end;
align-items: center;
align-items: stretch;
place-items: center;
place-items: center start;
}
justify-content / align-content
.grid {
justify-content: start;
justify-content: end;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
justify-content: space-evenly;
align-content: start;
align-content: end;
align-content: center;
place-content: center;
}
grid-auto-flow
.grid {
grid-auto-flow: row;
grid-auto-flow: column;
grid-auto-flow: row dense;
}
grid-auto-rows / columns
.grid {
grid-auto-rows: 200px;
grid-auto-rows: minmax(100px, auto);
grid-auto-columns: 1fr;
}
アイテムのプロパティ
grid-column / grid-row
.item {
grid-column: 1 / 3;
grid-row: 1 / 2;
grid-column: 1 / span 2;
grid-column: span 2;
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 2;
}
grid-area
.item {
grid-area: header;
grid-area: 1 / 1 / 2 / 3;
}
justify-self / align-self
.item {
justify-self: start;
justify-self: end;
justify-self: center;
justify-self: stretch;
align-self: start;
align-self: end;
align-self: center;
align-self: stretch;
place-self: center;
}
よく使うパターン
基本グリッド
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
レスポンシブグリッド
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
}
聖杯レイアウト
.layout {
display: grid;
grid-template-areas:
"header header header"
"nav main aside"
"footer footer footer";
grid-template-columns: 200px 1fr 200px;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}
ダッシュボード
.dashboard {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: repeat(3, 200px);
gap: 20px;
}
.widget-large {
grid-column: span 2;
grid-row: span 2;
}
.widget-wide {
grid-column: span 2;
}
ギャラリー
.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-auto-rows: 200px;
gap: 10px;
}
.gallery-item.featured {
grid-column: span 2;
grid-row: span 2;
}
12カラムシステム
.grid-12 {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 20px;
}
.col-4 { grid-column: span 4; }
.col-6 { grid-column: span 6; }
.col-8 { grid-column: span 8; }
カードリスト
.cards {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 24px;
}
中央揃え
.container {
display: grid;
place-items: center;
min-height: 100vh;
}
auto-fill vs auto-fit
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
関連記事
← 一覧に戻る