Contenu connexe
Similaire à CSS Grid Layout の基礎 (20)
CSS Grid Layout の基礎
- 6. 3. CSS Grid Layout の概要
6
● 正式名称:CSS Grid Layout Module
● 2次元グリッドベースのレイアウトシステムを定義する新しい仕様
○ display: grid; が指定された親要素にグリッドレイアウト情報を定義し、子要素では、
そのグリッドのどこに配置されるかを定義する
● 2017/12/14以降、W3Cでは勧告候補になっている
● IE10から使える!
- 8. 4. 対応ブラウザ
8
postcss.config.js
const autoprefixer =
require('autoprefixer')
module.exports = {
plugins: [
autoprefixer({ grid: true })
]
};
● IE10、11に対応するには、ただベンダープレ
フィックスを加えるだけは不十分。
(対応しているプロパティや仕様に違いが多
い)
● Autoprefixer(version 8以上)を使えば、IEで
本来は利用できないプロパティーでも互換性
のあるコードに変換してくれる
(optionで grid: true にする必要有)
- 12. 12
5. 基本的な使い方
HTML
<div class="container">
<header class="header">Header</header>
<div class="mv">Main visual</div>
<section class="news">News</section>
<section class="section01">Section01</section>
<section class="section02">Section02</section>
<aside class="sideMenu">Sidemenu</aside>
<footer class="footer">Footer</footer>
</div>
● 親要素の直下に配置したい要素を
並べる
- 13. 13
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
- 14. 14
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
display: grid;
● グリッド全体を覆う要素に指定
● グリッドコンテナを形成(詳細は後述)
● 直下の子要素はグリッドアイテムになる
- 15. 15
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
grid-template-columns
● グリッドの列に関する設定
● 列ごとに幅を設定する
○ リピートするには repeat(count, width)
● 初期値:none
● 設定可能値: auto, px, %, fr, repeat(), etc...
- 16. 16
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
grid-template-rows
● グリッドの行に関する設定
● 他は基本的にgrid-template-columnsと同じ
grid-template-rows: repeat(5, auto);
下記のように書くことも可能
- 17. 17
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
gap
● グリッドの行、列のすき間を一括設定
○ 行だけ: row-gap
○ 列だけ: column-gap
● 初期値: row-gap: normal;
column-gap: normal;
● 設定可能値: px, em, cm, %, calc(), etc...
● grid-gap から gapへ変更された
- 18. 18
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
grid-column
● グリッドコンテナの子要素(グリッドアイ
テム)に、グリッド上のどの列に配置する
か範囲を設定
● 開始位置だけ: grid-column-start
終了位置だけ: grid-column-end
● 初期値: grid-column-start: normal;
grid-column-end: normal;
● 設定可能値: auto, <integer>, span, etc...
- 19. 19
5. 基本的な使い方
CSS
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: auto auto auto auto auto;
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
grid-row
● グリッドコンテナの子要素(グリッドアイ
テム)に、グリッド上のどの行に配置する
か範囲を設定
● 開始位置だけ: grid-row-start
終了位置だけ: grid-row-end
● 初期値: grid-row-start: normal;
grid-row-end: normal;
● 設定可能値: auto, <integer>, span, etc...
- 20. 20
5. 基本的な使い方
CSS Grid Layoutに
登場する大事な用語
● グリッドコンテナ
● グリッドアイテム
● グリッドライン
● グリッドトラック
● グリッドセル
● グリッドエリア
1 2 3 4
1
2
3
4
5
6
- 21. 5. 基本的な使い方
グリッドコンテナ
display: grid; または
display: inline-grid; が指定された要素。
グリッドの分割数や、分割されたグリッド
の列や行の幅や高さなどレイアウト情報を
指定することが可能。
利用可能プロパティ
grid-template-columns(rows), grid-template-
areas, gap, justify-items, align-items, etc...
Header
Main Visual
Section01
News
Sidemenu
Footer
Section02
1 2 3 4
1
2
3
4
5
6
- 27. 5. 基本的な使い方
不使用(元のCSS)
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: repeat(5, auto);
gap: 30px 10px;
}
.header { grid-column: 1 / 3; grid-row: 1; }
.mv { grid-column: 1 / -1; grid-row: 2; }
.news { grid-column: 3; grid-row: 1; }
.sideMenu { grid-column: 1; grid-row: 3 / 5; }
.section01 { grid-column: 2 / -1; grid-row: 3; }
.section02 { grid-column: 2 / -1; grid-row: 4; }
.footer { grid-column: 1 / -1; grid-row: -2; }
使用
.container {
display: grid;
grid-template-columns: 300px 1fr 200px;
grid-template-rows: repeat(5, auto);
grid-template-areas:
"header header news"
"mv mv mv"
"sidemenu section01 section01"
"sidemenu section02 section02"
"footer footer footer";
gap: 30px 10px;
}
.header { grid-area: header; }
.mv { grid-area: mv; }
.news { grid-area: news; }
.sideMenu { grid-area: sidemenu; }
.section01 { grid-area: section01; }
.section02 { grid-area: section02; }
.footer { grid-area: footer; }
grid-areaを不使用/使用時のCSS
grid-area を使用すると、グリッドアイテムのプロパティ
ごとに配置の指定をしなくて済む。
複雑な構造の時におすすめ。
- 30. 30
● CSS Grid Layout入門。対応ブラウザが出揃った新しいレイアウト仕様 (ICS media)
● これからのレイアウトはGrid Layoutで決まり?特徴で使い分けたいCSSレイアウト手法
(ICS media)
● CSS Grid Layoutをガッツリ使った所感 (ICS media)
● CSS Grid Layout を極める!(基礎編)(Qiita)
● CSS グリッドレイアウト (MDN)
● Learn CSS Grid
● Grid Examples
8. おすすめリンク集
Notes de l'éditeur
- 基本的にモダンブラウザであれば利用可能。
IEは10以降、ベンダープレフィックスつけることで利用可能。
iOS10.3以降、Android5以降のためwowmaでは厳しい…
- http://127.0.0.1:5500/test05/
- グリッドで割ることから考えます。
上下左右端に一本ずつ必ず線が引かれます。
- 個別のパーツごとに考えます
- 各プロパティについて説明します
- ちょうどflexboxのflexコンテナとflexアイテムの関係と似ています
- この例の場合だと、1列目と3列目だけ固定値で、2列目はなりゆきの可変。