Flexboxは優れていますが、その主な目的は、要素を水平または垂直の1次元に配置するのに役立つことです。 ページ全体、2次元レイアウトの場合、グリッドレイアウトの作成に使用できるクラスを提供するために、主にBootstrapやFoundationなどのフレームワークに依存してきました。 新しいモジュールCSSグリッドレイアウトは、すぐにブラウザで利用できるように設定されており、すべてを変更する必要があります。

非常に簡単な概要でCSSグリッドを調べてみましょう。 まず、覚えておくべきいくつかの重要なポイント:

  • Flexboxの場合と同様に、CSSグリッドではソースの順序は重要ではなく、ビューポートのサイズに応じてアイテムを簡単に再配置できます。
  • 今すぐグリッドレイアウトの使用を開始し、 @supports で機能検出を使用して、サポートしているブラウザーにのみ適用できるようにすることができます。
  • 最新のCSSフレームワークのグリッドシステムでも実現できないいくつかのレイアウトは、CSSグリッドで可能になります。

単語

CSSグリッドではいくつかの概念が導入されており、語彙に精通することをお勧めします。

  • グリッド線:アイテムは、アイテムの開始線と終了線とともにグリッド上に配置されるため、グリッド線はCSSグリッドの動作の中心になります。 列のグリッド線は左から右に1から始まり、行のグリッド線は上から下に1から番号が付けられます。

グリッド行ライン2

Grid Line

  • グリッドトラック:2つのグリッド線の間のスペース。

グリッドトラック

Grid track

  • グリッド領域:任意の4つのグリッド線によって定義される領域。

グリッドエリア

Grid area

  • グリッドセル:2つの連続する列と行のグリッド線の間のスペース。 グリッド上で可能な最小単位。

グリッドセル

Grid cell

表示:親のグリッド

フレックスボックスの場合と少し似ていますが、グリッドは、グリッドアイテムになるコンテナ要素と子要素で構成されています。 コンテナ要素にdisplay:gridを設定するだけです。 グリッドの行と列は、grid-template-columnsgrid-template-rowsで定義されます。

次のマークアップから始めましょう。

<div class="container">
  <div class="box box-1">Box 1</div>
  <div class="box box-2">Box 2</div>
  <div class="box box-3">Box 3</div>
  <div class="box box-4">Box 4</div>
  <div class="box box-5">Box 5</div>
  <div class="box box-6">Box 6</div>
  <div class="box box-7">Box 7</div>
</div>

コンテナのCSSを定義する方法は次のとおりです。

.container {
  display: grid;

  grid-template-columns: 150px 150px 80px;
  grid-template-rows: 100px auto;

  grid-gap: 10px 15px;
}

これにより、グリッドアイテムにプロパティを設定しなくても、すでに興味深いものが得られます。

CSS grid example 1

grid-gap を使用して、セル間に10pxの水平方向のギャップと15pxの垂直方向のギャップを追加したことに注目してください。

これで、特定のアイテムの開始行と終了行を定義することで、さらに先に進むことができます。 グリッドに明示的に配置されていないアイテムは、アルゴリズムに従って配置されます。 grid-column-start grid-column-end grid-row-start grid-row-endを使用してグリッド上のアイテムの開始位置と終了位置を定義します。

.box-1 {
  grid-column-start: 1;
  grid-column-end: 3;
}

.box-3 {
  grid-column-start: 1;
  grid-column-end: 3;
  grid-row-start: 2;
  grid-row-end: 4;
}

または、grid-columngrid-rowの省略形を使用して同じ結果を得ることができます。

.box-1 {
  grid-column: 1 / 3;
}

.box-3 {
  grid-column: 1 / 3;
  grid-row: 2 / 4;
}

結果のグリッドは次のとおりです。

CSS grid example 2

👉ギャップは新しいグリッド線を追加しないため、ギャップがそれらを分離している場合でも、互いに隣接するアイテムは実際には同じ線に接触しています。

今日のCSSグリッドレイアウト

残念ながら、グリッドレイアウトはまだ広く利用できません。 現在の可用性は次のとおりです。

  • バージョン52以降、Firefoxでデフォルトでサポートされています。
  • 旗の後ろにある最新のChromeとOperaで完全にサポートされています。
  • IEとEdgeでサポートされていますが、構文は古いです。
  • 最新のSafariテクノロジープレビューで利用できます。

Chrome は、2017年3月にデフォルトでグリッドが有効になっているバージョンを出荷する必要があります。 ですから、もうすぐです。2017年はCSSグリッドの年になるでしょう。

Chromeで有効にする

ChromeでCSSグリッドを有効にするには、 chrome:// flags / に移動し、実験的なウェブプラットフォーム機能を探して有効にします。

Firefoxで有効にする

Firefox 52以降では、グリッドレイアウトがすぐにサポートされるようになりました。

詳細はこちら

この投稿は短くてわかりやすいものにしましたが、CSSグリッドで学ぶべき新しい概念がたくさんあるので、それらの多くを独自の投稿に分割しました。

参考文献

CSSグリッドの詳細を学ぶためのいくつかの優れたリソースを次に示します。