Grid Layout/グリッドレイアウトの特徴と書き方

スタイルシート/CSS

レイアウトをコーディングするときにFloat(フロート)、Flexbox(フレキシブルボックス)、Grid Layout(グリッドレイアウト)などいろいろな組み方があります。

Floatを使うwebサイトはだいぶ少なくなってきたと思いますが。

Float(フロート)、Flexbox(フレキシブルボックス)は横並びにレイアウトを組むことができます。

一方、Grid Layout(グリッドレイアウト)も横並びのレイアウトを組むことができます。

ですがFlexbox(フレキシブルボックス)とGrid Layout(グリッドレイアウト)には横並びのレイアウト以外に違いがあります。

今回は、この FlexboxとGrid Layoutの違いとGrid Layout(グリッドレイアウト)の組み方を紹介していきたいと思います。

FlexboxとGrid Layoutの違い

Flexbox(フレキシブルボックス)

横方向にレイアウトされるのみ

Grid Layout(グリッドレイアウト)

縦横自在にレイアウトできる。

そして自由度が高い。

Flexboxだと縦と横のいずれかの一方向へのレイアウトができるのに対してGrid Layoutは縦横自在にレイアウトできるという特徴があります。

Grid Layout/ グリッドレイアウトの使い方

それでは基本手なグリッドの組み方になります。

まず下記は、3列+2行のレイアウトになります。

html

<div class="cont">
  <div class="item item1">item1</div>
  <div class="item item2">item2</div>
  <div class="item item3">item3</div>
  <div class="item item4">item4</div>
  <div class="item item5">item5</div>
</div>

css

.cont{
        display: grid;
        width: 800px;
        grid-template-columns: 1fr 1fr 1fr;
        gap: 5px;
        display: none;
}

.container .item{
        padding: 5px;
        background: #eee;
}

こちらはflexboxでもレイアウトが可能ですがグリッドでやってみました。

参考

item1
item2
item3
item4
item5
item6

幅や高さを指定するプロパティ

cssで指定したようにグリッドを使用する場合は「display: grid;」を指定します。

ですがこの指定だけではグリッドレイアウトにはなりません。

グリッドを使用する場合は幅や高さを指定するプロパティを指定します。

オプション説明
grid-template-columns 列トラックの幅と表示させる数を指定
fr均等に分割して表示

レイアウトパターン(応用)

次はサイトでよく使うレイアウトパターンをグリッドレイアウトで組んでいきます。

ヘッダー、右メニュー、コンテンツ、フッターをグリッドレイアウトで組みます。

html

<div class="cont"> 
  <div class="item item1">ヘッダー</div>
  <div class="item item2">コンテンツ1</div>
  <div class="item item3">コンテンツ2</div>
  <div class="item item4">コンテンツ3</div>
  <div class="item item5">右メニュー</div>
  <div class="item item6">フッター</div>
</div>

css

.cont{
        display: grid;
        width: 600px;

        grid-template-columns: 1fr 200px;
}
        
.cont .item{
        padding: 5px;
        background: #eee;
}

.cont .item.item1{
    grid-column-start: 1;
    grid-column-end: 3;
    grid-row-start: 1;
    grid-row-end: 2;
    background: #eee;
}

.cont .item.item2{
    grid-column-start: 1;
    grid-column-end: 2;
    grid-row-start: 2;
    grid-row-end: 3;
    background: #aaa;
}

.cont .item.item3{
    grid-column-start: 1;
    grid-column-end: 2;
    grid-row-start: 3;
    grid-row-end: 4;
    background: #ddd;
}

.cont .item.item4{
    grid-column-start: 1;
    grid-column-end: 2;
    grid-row-start: 4;
    grid-row-end: 5;
    background: #bbb;
}

/* 右メニュー */
.cont .item.item5{
    grid-column-start: 2;
    grid-column-end: 3;
    grid-row-start: 2;
    grid-row-end: 5;
    background: #aaa;
}

/* フッター */
.cont .item.item6{
    grid-column-start: 1;
    grid-column-end: 3;
    grid-row-start: 5;
    grid-row-end: 6;
    background: #999;
}

参考

 
ヘッダー
コンテンツ1
コンテンツ2
コンテンツ3
右メニュー
フッター

配置位置を指定するプロパティ

プロパティ説明
grid-row行方向の配置位置を指定する
grid-column列方向の配置位置を指定する

grid-rowとgrid-columnを使用することで複雑なレイアウトを簡単に指定することができます。

コメント

タイトルとURLをコピーしました