[CSS]display:flexのリストをdisplay:gridに変更してみる


cssで記事や商品の一覧を作るときによくdisplay:flexを使用しているのですが、やっぱりdisplay:grid使わないといけないのかな?ということでちょっと試してみる。

個人的にdisplay: flexに慣れてしまっているので、display: gridにはめちゃくちゃ苦手意識があります。

単純なリストなら問題ないんですが、けっこう複雑なレイアウトにも対応できるようで、逆にそれで毎回「あれ?どうやって組むんだっけ?」と頭の中がショートしてしまうんですよね(・・;

まぁ早速いつものようにdisplay:flexで組んでみますね

  <div class="list01">
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
  </div>
  <style>
    .list01 {
      width: 900px;
      background: #ddd;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }
    .list01 .item {
      margin-bottom: 25px;
      width: 32%;
      height: 100px;
      color: #fff;
      background: #000;
      display: flex;
      justify-content: center;
      align-items: center;
      position: relative;
    }
  </style>

ブラウザで表示するとこんなこんな感じ。

では、このコードのcssの部分をdisplay: gridに変更してみます。

  <div class="list01">
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
    <div class="item">item</div>
  </div>
  <style>
    .list01 {
      width: 900px;
      background: #ddd;
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 2%;
    }
    .list01 .item {
      margin-bottom: 25px;
      height: 100px;
      color: #fff;
      background: #000;
      display: flex;
      justify-content: center;
      align-items: center;
      position: relative;
    }
  </style>

ブラウザで表示するとこんな感じ。

girdの何が嫌いかってgrid-template-columnsが嫌い(・。・;

repeat(3, 1fr)を指定しているので、3つ1frの幅で並ぶみたいな指定になっている。・・・はず。


関連性の高い記事