JINMUSOFTWARE

CSS-Gridだけで実装するMasonry風レイアウト

CSS-Gridだけで実現するMasonry風レイアウト

タイルを敷き詰めるようなレイアウトです。Pinterestのようなレイアウトです。

日本語だと、「組積レイアウト」らしいです。

各Itemは、高さを指定しなければいけません。grid-row-end: span 2;

よくworkしているようにみえます。テキパキ動作します。gridはとても良き。

注意)DBから各Itemに記事を挿入する場合は、記事の容量や画像の高さに応じたクラスをhtmlに付加する必要がありますね。

Sample.

windowの横幅を伸縮させてみてください。itemが隙間なく並び変わります。

1
2
3
4
5
6
7
8
9
10
11

Code.

CSS

.grid {
    display: grid;
    grid-gap: 3px;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    grid-auto-rows: 50px;
}

borderとpaddingとcontents合わせて200px以下になったら切り替わる。

CSS item-size

.item.size2 {
    grid-row-end: span 2;
}
.item.size3 {
    grid-row-end: span 3;
}
.item.size4 {
    grid-row-end: span 4;
}

HTML

<div class="grid">
    <div class="item size2">1</div>
    <div class="item size3">2</div>
    <div class="item size3">3</div>
    ~~~
</div>

感想)span2から使用するのがいい感じにばらけて良きかな。

参考

ピンタレストっぽいレイアウトをCSS Gridで実装する – 「くらげになりたい」~くらげのアイコンがかわいいHatenaのブログ。フロントからバックエンドを幅広く扱うエンジニアのブログ。