[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の幅で並ぶみたいな指定になっている。・・・はず。