個別のポジショニング
この 6 つの列に対してのみこのレイアウトを作成する必要がある場合は、それらを個別に配置するだけでid済み<div>ます#。
拡張不可能なソリューション [デモ]
このソリューションは 6 列のレイアウトで機能しますが、それを拡張してさらに列を追加する場合は、CSS に.box:nth-child(8) {left: 150px;}.
.container {
position: relative;
}
.box {
width: 50px;
height: 50px;
float: left;
}
.box:nth-child(2n) {
position: absolute;
top: 50px;
}
.box:nth-child(2) {left: 0px;}
.box:nth-child(4) {left: 50px;}
.box:nth-child(6) {left: 100px;}
柔軟性の向上 [デモ]
Itayが述べたように、プロパティを使用するとこのソリューションを改善できるtransformため、次のように CSS を変更できます。
.box:nth-child(4) {transform: translate(100%);}
.box:nth-child(6) {transform: translate(200%);}
topプロパティを手動で変更する必要があります。また、必要に応じて、-webkit-またはのようなベンダー プレフィックスを使用することを忘れないでください。-ms-
拡張可能なソリューション [デモ]
このソリューションも CSS3nth-child(n)セレクターを使用しますが、ここでは相対的な配置とmargin-leftプロパティのトリックを使用します。このソリューションのソース コードは非常にコンパクトで読みやすく、拡張可能であるため、.es にさらにboxes を追加する場合、CSS セレクターを追加する必要はありませんcontainer。HTML に新しい行を追加するだけで、チャームとして機能します。 .
.box {
width: 50px;
height: 50px;
float: left;
position: relative;
}
.box:nth-child(2n) {
top: 50px;
margin-left: -50px;
}
柔軟性の向上 [デモ]
transformプロパティを使用して、このソリューションも改善できることを忘れないでください。
.box:nth-child(2n) {
transform: translate(0, 100%);
margin-left: -50px;
}
margin-leftただし、手動でプロパティを設定する必要があります。CSS で動的に変更する方法が見つからない場合は、JavaScript/jQuery を使用できます。
CSS3 列
CSS3 にはこれが新機能として含まれているため、カスタム列を簡単に作成できます。詳細については、この記事を参照してください。また、Itay's answerも参照してください。