LoginSignup
2
1

More than 5 years have passed since last update.

CSS Grid Layout

Last updated at Posted at 2017-12-04

CSS Grid Layout

この間HTML5 感。のイベントに参加したので、そこで知ったCSS Grid Layouの内容をメモ。

HTML5 感。

登壇者は株式会社コムセント最高技術責任者(CTO)の関口和真さんでした。
内容は端折りますがCSS Grid Layoutの使い方の簡単サンプルを載せます。

CSS Grid とは

  • CSSで2次元のグリッドを(仮想的に)描きレイアウトを作成するための仕組み
    ** グリッド=Excelみたいな構造

  • 任意のマス目に対して要素を配置することが可能
    ** HTMLに依存しない

CSS Grid 用語

  • 列、行、セル(エリア)、トラック
  • インデックスは0からでなく1から
  • 隣接する2本のラインの間をトラックと言う

CSS 列と行

  • 重要なのは線(ライン)
  • 下から、右から数える場合は-1、-2から数える

cssgridlayout.png

サイズ指定

  • コンテナを作成しなかに治める要素を指定
  • display: grid
  • grid-template-rowsで行の高さ指定できる
  • grid-template-columnsで列の幅を指定できる
  • frという単位が使える(1fr:残り全て)

位置指定

  • grid-row: 1 / 3
    ** 1行から3行

  • grid-column: 1 / 3
    ** 1列から3列

エリア

  • セルに対してエリアを作ることが可能
  • セルの別名として機能する

エリア指定方法

grid-template-areas:
"area1 area2"
"area1 area3"
  • container直下の子要素がセル扱いになる
  • grid-template-areasは改行で意味が変わったりするので整形すると気をつける
.container {
  display: grid;
  grid-template-columns: 200px 400px 1fr; //幅200px,400px,残り幅全部の3カラム
  grid-template-rows: 200px 200px; //高さ200pxの行を2行
  grid-gap: 20px; //カラム同士のマージンを20pxにセット
  grid-template-areas: //カラムに名前をつけて配置を指定している
    "area01 area02 area03"
    "area04 area05 area06";
}
@media screen and (max-width: 768px) {
/* セルの配置を変える場合grid-template-areasで配置を変えることが出来る */
.container {
  display: grid;
  grid-template-columns: 200px 400px 1fr;
  grid-template-rows: 200px 200px;
  grid-gap: 20px;
  grid-template-areas:
    "area01"
    "area03"
    "area04"
    "area02"
    "area05"
    "area06";
  }
}
.box01 {
  grid-column: 1 / 2;
  grid-row: 1 / 2;
  grid-area: area01;
}
.box02 {
  grid-column: 2 / 3;
  grid-row: 2 / 3
  grid-area: area02;
}
.box03 {
  grid-column: 3 / 4;
  grid-row: 2 / 3;
  grid-area: area03;
}
.box04 {
  grid-column: 2 / 4;
  grid-row: 1; /* 1 / 2 */
}

code sample

ではflexboxは?

  • 順番を逆にすることはできるが変えることをはできない
  • flexboxとCSS Gridを作った人は同じ
  • 両方うまい具合に使い分けすれば良いのでは

まだ最新のブラウザからでしか使いこなせない

  • IE11以上、IE Edge12以上(ベンダープレフィックスがいる、grid-gap使えないなど微妙に仕様が異なる点がある)
  • IE Edge16から完全対応
  • Safariが10.3以上から(古いmacとかだと使えない)
  • Chrome 57以上から
  • FireFox 52以上から
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1