CSS Grid Masonry Layout

レスポンシブな CSS Grid Masonry(石積み) Layout

CSS Grid ってすごい♡(Pinterest風のMasonryレイアウト)

前回は幅と高さが同じボックスを並べただけのレイアウトでしたが、今回はPinterest風に高さの違うボックスをタイル状に配置するMasonryレイアウトです。本サイトではDTP制作実績で使用しています。

但し、Masonryレイアウトの場合はレスポンシブ対応としてのメディアクエリが必要です。

smp1

Masonryレイアウト

残念ながら2022年の夏現在 Masonry を実装しているのは Firefox のみだそうです。一応本サイトのコンテンツはSafari、Chromeでのレイアウトの崩れはなかったことを確認しています。そして、もちろんレスポンシブデザインです。

sample 0001

アイウエオあいうえおアイウエオあいうえおアイウエオあいうえおアイウエオあいうえお

sample 0002

012345678

sample 0003

あいうえおアイウエオあいうえおアイウエオあいうえおアイウエオあいうえおアイウエオあいうえお

sample 0004

アイウエオ

sample 0005

あかさたな

HTML

<div class="mascontainer">
<div class="artifactgrid">
<div class="infotext">
<p><img src="/images/method/sample_0001.jpg" alt="sample 0001" class="top-bottom" /></p>
<p style="font-size: 13px; line-height: 1.4em;">アイウエオあいうえおアイウエオあいうえおアイウエオあいうえおアイウエオあいうえお</p>
</div>
</div>
<div class="artifactgrid">
<div class="infotext">
<p><img src="/images/method/sample_0006.jpg" alt="sample 0002" /></p>
<p style="font-size: 13px; line-height: 1.4em;">012345678</p>
</div>
</div>
<div class="artifactgrid">
<div class="infotext">
<p><img src="/images/method/sample_0009.jpg" alt="sample 0003" /></p>
<p style="font-size: 13px; line-height: 1.4em;">あいうえおアイウエオあいうえおアイウエオあいうえおアイウエオあいうえおアイウエオあいうえお</p>
</div>
</div>
<div class="artifactgrid">
<div class="infotext">
<p><img src="/images/method/sample_0007.jpg" alt="sample 0004" /></p>
<p style="font-size: 13px; line-height: 1.4em;">アイウエオ</p>
</div>
</div>
<div class="artifactgrid">
<div class="infotext">
<p><img src="/images/method/sample_0008.jpg" alt="sample 0005" /></p>
<p style="font-size: 13px; line-height: 1.4em;">あかさたな</p>
</div>
</div>
</div>

 

CSS


.mascontainer {
  margin: 0 auto;
  padding: 5px;
  width: 90%;
  background-color: #fff;
  column-count: 3;
  column-gap: 0;
}
@media (max-width: 800px) {
  .mascontainer {
    column-count: 2;
  }
}
@media (max-width: 480px) {
  .mascontainer {
    column-count: 1;
  }
}

.artifactgrid {
  padding: 5px;
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  break-inside: avoid;
}
.infotext {
  padding: 20px;
  background-color: #e0f2f1;
}

.artifactgrid > * {
  border-radius: 8px;
}
.infotext {
   grid-row-end: span 2;
}
.infotext p {
  font-size:13px;
  line-height: 18px;
  font-family: "M PLUS 1p";
}


Masonry Layout について参考にさせていただいた、とても分かり易い解説をされているサイトをご紹介します。

SiTest  最低限の CSS のみで Masonry のようなグリッドレイアウトを組む方法
https://sitest.jp/blog/?p=11921

coliss  Masonryレイアウトをたった3行のシンプルなCSS Gridで簡単に実装できるようになります
https://coliss.com/articles/build-websites/operation/css/css-masonry-layouts-in-firefox.html