回答:
このタイプのレイアウトは、組積造レイアウトと呼ばれます。組積造は別のグリッドレイアウトですが、要素の高さの違いによって生じる空白を埋めます。
jQuery Masonryは、石積みのレイアウトを作成するためのjQueryプラグインの1つです。
または、CSS3を使用できますcolumn
。ただし、CSS3列との互換性の問題があるため、現時点ではjQueryベースのプラグインが最適です。
フレックスボックスを使用できます。
要素を複数行の列フレックスコンテナーに配置する
#flex-container {
display: flex;
flex-flow: column wrap;
}
要素を並べ替えて、DOMの順序が垂直方向ではなく水平方向になるようにします。たとえば、3つの列が必要な場合、
#flex-container > :nth-child(3n + 1) { order: 1; } /* 1st column */
#flex-container > :nth-child(3n + 2) { order: 2; } /* 2nd column */
#flex-container > :nth-child(3n + 3) { order: 3; } /* 3rd column */
各列の最初の項目の前で列を強制的に分割します。
#flex-container > :nth-child(-n + 3) {
page-break-before: always; /* CSS 2.1 syntax */
break-before: always; /* New syntax */
}
残念ながら、まだすべてのブラウザがflexboxの改行をサポートしているわけではありません。Firefoxでも動作します。
CSS3が広く利用可能になり、主要なブラウザーを通じて互換性を持つようになった今、SOのスニペットツールを備えた純粋なソリューションの時が来ました。
CSS3を使用して石積みのレイアウトを作成column-count
するにcolumn-gap
は、で十分です。しかし、私はmedia-queries
それをレスポンシブにするためにも使用しました。
実装に入る前に、jQuery Masonryライブラリフォールバックを追加して、コードをレガシーブラウザー、特にIE8と互換性のあるものにする方がはるかに安全であることを考慮してください。
<!--[if lte IE 9]>
<script src="/path/to/js/masonry.pkgd.min.js"></script>
<![endif]-->
さあ行こう:
.masonry-brick {
color: #FFF;
background-color: #FF00D8;
display: inline-block;
padding: 5px;
width: 100%;
margin: 1em 0; /* for separating masonry-bricks vertically*/
}
@media only screen and (min-width: 480px) {
.masonry-container {
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
}
}
@media only screen and (min-width: 768px) {
.masonry-container {
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
}
}
@media only screen and (min-width: 960px) {
.masonry-container {
-moz-column-count: 5;
-webkit-column-count: 5;
column-count: 5;
}
}
<div class="masonry-container">
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 </div>
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 </div>
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 </div>
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 </div>
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 </div>
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 </div>
<div class="masonry-brick">Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 Masonry pure CSS3 </div>
</div>
masonry bricks
ます。列は上から下に順番に並べます。質問は、垂直に切り替えるのではなく、水平に同じままにするための順序を求めていました。たとえば、上記で見つかった最も短いブロックは、3番目の列であるが一番上の行にある必要があります(SHOULD)。
cssだけでそれを解決する最良のオプションは、css column-countプロパティを使用することです。
.content-box {
border: 10px solid #000000;
column-count: 3;
}
詳細については、こちらを確認してください:https : //developer.mozilla.org/en/docs/Web/CSS/column-count
表示を使用できます:グリッド
例えば:
これは7列のグリッドで、行には自動サイズがあります。
.myGrid{
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
grid-auto-rows: auto;
grid-gap: 10px;
justify-items: center;
}
詳細については、次のリンクにアクセスしてください:https ://css-tricks.com/snippets/css/complete-guide-grid/
CSSグリッドモジュールあなたが作成することができ、かなり類似しましたレイアウトを。
1)3つの固定幅グリッド列を設定する
ul {
display: grid;
grid-template-columns: 150px 150px 150px;
...
}
2)高さが大きいアイテムが2行にわたることを確認します
li:nth-child(1),
li:nth-child(3),
li:nth-child(5),
li:nth-child(8),
li:nth-child(9),
li:nth-child(10),
li:nth-child(12)
{
grid-row: span 2;
}
石積みよりもさらに進みたい場合は、アイソトープhttp://isotope.metafizzy.co/を使用してくださいは、これは石積みの高度なバージョン(同じ作者が開発)であり、純粋なCSSではなく、Javascriptのヘルプを使用します。しかし、それは非常に人気があるので、あなたはたくさんのドキュメントを見つけるでしょう
それが非常に複雑であるとわかった場合は、すでに同位体に基づいた開発に基づいた多くのプレミアムプラグインがあります。たとえば、メディアボックスhttp://codecanyon.net/item/media-boxes-sensitive-jquery-grid/5683020
グリッドベースの例が1つあります。
.grid-layout {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
grid-gap: 10px;
grid-auto-rows: minmax(100px, auto);
grid-auto-flow: dense;
padding: 10px;
}
.grid-layout .item {
padding: 15px;
color: #fff;
background-color: #444;
}
.span-2 {
grid-column-end: span 2;
grid-row-end: span 2;
}
.span-3 {
grid-column-end: span 3;
grid-row-end: span 4;
}
<div class="grid-layout">
<div class="item">content</div>
<div class="item">content</div>
<div class="item span-3">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item span-2">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item span-3">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item span-2">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
<div class="item">content</div>
</div>
Rachel Andrew FTWによるこのコードペンに基づく