div
があり、要素(div)のセットが含まれているとします。これらの要素の高さは異なる場合がありますが、すべての幅は同じです。
私は現在、アイソトープ+石積みでこれを達成していますが、一部のブラウザーはすでにCSS3マルチカラムをサポートしているため、これらのブラウザー用の唯一のCSSソリューションが必要であり、残りはJavascriptにフォールバックします。
これは私が試したCSSです:
.div-of-boxes {
-webkit-column-count: 3;
-webkit-column-gap: 10px;
-moz-column-count: 3;
-moz-column-gap: 10px;
column-count: 3;
column-gap: 10px;
}
ただし、これにより、要素のフローが上下左右になります。代わりに、左右のトップダウンフローが必要です。これは私が欲しいものの例です:
1 2 3
4 5 6
7 8 9
しかし、これは私が得るものです:
1 4 7
2 5 8
3 6 9
トップダウンの前に複数列の要素を左右にフロー 同様の質問がありますが、答えに満足できず、高さが異なる要素では機能しません。これはCSS列でまったく可能ですか、それとも制限ですか?
複数列の仕様には、列間の要素の分布を変更するプロパティはありません: http://www.w3.org/TR/css3-multicol/ 。このようなプロパティは、モジュールが設計された目的(新聞や雑誌の記事のレイアウトを再現する)に反しているようです。
他の純粋なCSSソリューションはどれも、あなたが探している効果を達成することを可能にしません。
レイアウトが常に3列幅になる場合は、内部divでnth
セレクターを使用してみてください。
4番目のアイテムをクリアすることでこれを行うことができます。
#container {
overflow: hidden;
width: 440px;
}
#container div {
background-color: gray;
width: 110px;
margin: 5px;
float: left;
}
#container div:nth-child(4) {
clear: both;
}
<div id="container">
<div id="widget1">1</div>
<div id="widget2">2</div>
<div id="widget3">3</div>
<div id="widget4">4</div>
<div id="widget5">5</div>
<div id="widget6">6</div>
<div id="widget7">7</div>
<div id="widget7">8</div>
</div>