縦横方向にきれいに配置する

Updated at 2023.07.08 21:01.

先ほどのページでは flexbox を用いて1方向のレイアウトについて紹介した。

このページでは、下のようなレイアウトをどのように表現するのかについて考えてみる。

grid

タイルのように、縦と横方向の両方に並んでいるレイアウトは flexbox でも可能だが表現するのは少し難しい。

そこで、「grid layout」というものを用いることで視覚的にわかりやすく書く。

grid layout の書き方はいろいろあるのでここでは講師が案件で書いた書き方を示す。

他の書き方は最後に掲載している参考動画を見たり各自で調べたりしてほしい。

grid layout の書き方

あらかじめ、色は定義しておいた。各自 fork して記述していってほしい。

上の写真のように、3 列並びのデザインを作ってみる。

1. display: grid; を宣言する。

flexbox を使用するときにdisplay: flex;を書いたのと同様に、grid layout を使用する時の宣言を書く。

.list {
  display: grid;
}

2. grid-template-columns プロパティを使用する

何列並びにするのかを指定する。

3 列並びにしたいので、repeat(3, 1fr)とした。

1fr の意味は各自で調べてほしい。

3. grid-gap プロパティを使用する。

要素と要素の隙間をどれだけ空けるのか指定する。

今回は 32px 空けたいので、grid-gap: 32px;とした。

下の code sandbox の中央部分をつかんで、左にずらしても、32px の隙間ができていることがわかる。

この 3 つのプロパティを使用することで、記述することができた。

ちなみに、今回作成したものを flexbox だけで作ろうとすると、下のように周りくどい書き方をする必要があることから、grid layout の便利さがわかるだろう。

なお、1列だけの場合は grid layout より flexbox を使用することが多い。

参考動画

この動画では、別の理由から grid layout を用いているので、参考にしてほしい。

しまぶーの IT 大学 「Grid を使うと Flexbox より簡単に複雑なレイアウトを組めます」